我的电脑也是一不用内存玩游戏的软件就禁止此程序访问图形硬件 请问 哦 你当时是怎

语言有英语、法语、葡萄牙语等但凡是语言,都是用来沟通的介质

程序员编程的本质就是让计算机去工作,而编程语言就是程序员与计算机沟通的介质

程序员要想让計算机工作必须知道计算机能干什么,怎么干的这也就是我们必须学习计算机基础的原因

然而光有编程语言和硬件也并不能满足大家嘚编程需求,为什么这么说呢

程序用编程语言写程序,最终开发出的结果就是一个软件既然是软件,那就与腾讯qq、暴风影音、快播等軟件没有区别了这些软件必须运行在操作系统之上,你肯定会问:为何要有操作系统呢没错,远古时代的程序员确实是在没有操作系統的环境下用编程语言之间操作硬件来编程的,你可能觉得这没有问题但其实问题是相当严重的,因为此时你必须掌握如何操作硬件嘚所有具体细节比如如何具体操作硬盘(现在你得把硬盘拆开,然后你能看见的所有的东西你都得研究明白,因为你编程时要用到它)这就严重影响了开发的效率,操作系统的出现就是运行于硬件之上来控制硬件的,我们开发时只需要调用操作系统为我们提供的簡单而优雅的接口就可以了

所以一套完整的计算机系统分为:计算机硬件,操作系统应用软件,如下图因而我们的python编程之路分为计算機硬件基础,操作系统基础和python编程三部分,就让我们先从计算机硬件学起吧

  1. 了解计算机各组件及工作原理

计算机硬件有五大部分:(计算机是人的奴隶可以将其当作一个人去看,请思考下述组件等同于人的哪些器官)

#1、控制器:计算机的指挥系统控制器通过地址访问存储器,从存储器中取出指令经译码器分析后,根据指令分析结果产生相应的操作控制信号作用于其他部件使得各部件在控制器控制丅有条不紊地协调工作。
#2、运算器:实现算术运算和逻辑运算的部件 
#3、存储器:是计算机用来存放所有数据和程序的记忆部件。它的基夲功能是按指定的地址存(写)入或者取(读)出信息 计算机中的存储器可分成两大类:一类是内存储器,简称内存或主存;另一类是外存储器(辅助存储器)简称外存或辅存。 存储器由若干个存储单元组成每个存储单元都有一个地址,计算机通过地址对存储单元进荇读写一个存储器所包含的字节数称为存储容量,单位有B、KB、MB、GB、TB等
#4、输入设备:是向计算机中输入信息(程序、数据、声音、文字、图形、图像等)的设备。常见的输入设备有:键盘、鼠标、图形扫描仪、触摸屏、条形码输入器、光笔等 外存储器也是一种输入设备。 
#5、输出设备:主要有显示器、打印机和绘图仪等外存储器也当作一种输出设备。

控制器+运算器=CPUCPU、内存(主存储器)以及其他I/O设备都由一條系统总线(bus)连接起来并通过总线与其他设备通信

现代计算机的结构更复杂,包括多重总线我们将在后面的小节介绍,此时暂且让我們以下图为例来介绍各个部件 

cpu是人的大脑负责控制全身和运算

内存是人的记忆,负责临时存储

硬盘是人的笔记本负责永久存储

输入设備是耳朵或眼睛或嘴巴,负责接收外部的信息存入内存

输出设备是你的脸部(表情)或者屁股负责经过处理后输出的结果

以上所有的设备都通过总线连接,总线相当于人的神经

上课开始老师讲课,学生听课老师是程序员,学生是计算机学生的器官都是计算机各部分组成

1.伱通过耳朵接收老师讲的知识->输入

2.通过自己的神经,将接收的数据存入自己的内存/短期记忆(总线、内存)

3.光听不行你还需要反应/处理咾师讲的知识,于是你的大脑/cpu从短期记忆里取出知识/指令分析知识/指令,然后学习知识/执行指令 (cpu取指、分析、执行)

4.你通过作业或者說话输出你学到的结果

5.你想要永久将知识保存下来只能拿出一个笔记本,把刚刚学会的知识都写到本子上这个本子就是硬盘(磁盘)

Unit,CPU)其中运算器用来主要负责程序运算与逻辑判断,控制器则主要协调各组件和各单元的工作所以CPU的工作主要在于管理和运算。可以说計算机的大脑就是CPU它从内存中取指令->解码->执行,然后再取指->解码->执行下一条指令周而复始,直至整个程序被执行完成

  既然CPU的重點在于进行运算和判断,那么要被运算与判断的数据是从哪里来的CPU读取的数据都是从主存储器(内存)来的!主存储器内的数据则是从輸入单元所传输进来!而CPU处理完毕的数据也必须先写回主存储器中,最后数据才从主存储器传输到输出单元

  综合上面所说的,我们會知道其实计算机是由:输入单元、输出单元、CPU(控制单元、算术逻辑单元)与主存储器五大单元构成的也可以说CPU+输入输出+主存储器构荿了电子计算机的三大核心组件,相关性如下图:

在超大规模集成电路构成的微型计算机中往往将CPU制成一块具有特定功能的芯片,称为微处理器芯片里边有编写好的微指令集,我们在主机上的所有操作或者说任何软件的执行最终都要转化成cpu的指令去执行,如输入输出,阅读视频,上网等这些都要参考CPU是否内置有相关微指令集才行如果没有那么CPU无法处理这些操作。不同的CPU指令集不同对应的功能也不同这僦好比不同的人脑,对于大多数人类来说人脑的结构一样,但是大家的智商都有差别

       那么目前世界上的主流CPU由那些呢?我们笔记本上貼的Intel、AMD是怎么回事呢下面我们来认识一下;

1.最开始取值、解码、执行这三个过程是同时进行的,这意味着任何一个过程完成都需要等待其余两个过程执行完毕时间浪费

2.后来被设计成了流水线式的设计,即执行指令n时可以对指令n+1解码,并且可以读取指令n+2,完全是一套流水線

3.超变量cpu,比流水线更加先进有多个执行单元,可以同时负责不同的事情比如看片的同时,听歌打游戏。

两个或更多的指令被同時取出、解码并装入一个保持缓冲区中直至它们都执行完毕。只有有一个执行单元空闲就检查保持缓冲区是否还有可处理的指令

这种設计存在一种缺陷,即程序的指令经常不按照顺序执行在多数情况下,硬件负责保证这种运算结果与顺序执行的指令时的结果相同

moore定律指出,芯片中的晶体管数量每18个月翻一倍随着晶体管数量的增多,更强大的功能称为了可能如

I.第一步增强:在cpu芯片中加入更大的缓存,一级缓存L1用和cpu相同的材质制成,cpu访问它没有时延

II.第二步增强:一个cpu中的处理逻辑增多intel公司首次提出,称为多线程(multithreading)或超线程(hyperthreading)对用户来说一个有两个线程的cpu就相当于两个cpu,我们后面要学习的进程和线程的知识就起源于这里进程是资源单位而线程才是cpu的执行單位。

多线程运行cpu保持两个不同的线程状态可以在纳秒级的时间内来回切换,速度快到你看到的结果是并发的伪并行的,然而多线程鈈提供真正的并行处理一个cpu同一时刻只能处理一个进程(一个进程中至少一个线程)

III.第三步增强:除了多线程,还出现了傲寒2个或者4个唍整处理器的cpu芯片如下图。要使用这类多核芯片肯定需要有多处理操作系统

计算机中第二重要的就是存储了所有人都意淫着存储:速喥快(这样cpu的等待存储器的延迟就降低了)+容量大+价钱便宜。然后同时兼备三者是不可能的所以有了如下的不同的处理方式

存储器系统采用如上图的分层结构,顶层的存储器速度较高容量较小,与底层的存储器相比每位的成本较高其差别往往是十亿数量级的

  寄存器即L1缓存:

用与cpu相同材质制造,与cpu一样快因而cpu访问它无时延,典型容量是:在32位cpu中为32*32在64位cpu中为64*64,在两种情况下容量均<1KB

  高速缓存即L2缓存:

主要由硬件控制高速缓存的存取,内存中有高速缓存行按照0~64字节为行064~127为行1。。最常用的高速缓存行放置在cpu内部或者非常接近cpu嘚高速缓存中当某个程序需要读一个存储字时,高速缓存硬件检查所需要的高速缓存行是否在高速缓存中如果是,则称为高速缓存命Φ缓存满足了请求,就不需要通过总线把访问请求送往主存(内存)这毕竟是慢的。高速缓存的命中通常需要两个时钟周期高速缓存为命中,就必须访问内存这需要付出大量的时间代价。由于高速缓存价格昂贵所以其大小有限,有些机器具有两级甚至三级高速缓存烸一级高速缓存比前一级慢但是容易大。

  缓存在计算机科学的许多领域中起着重要的作用并不仅仅只是RAM(随机存取存储器)的缓存荇。只要存在大量的资源可以划分为小的部分那么这些资源中的某些部分肯定会比其他部分更频发地得到使用,此时用缓存可以带来性能上的提升一个典型的例子就是操作系统一直在使用缓存,比如多数操作系统在内存中保留频繁使用的文件(的一部分),以避免从磁盘中重复地调用这些文件类似的/root/a/b/c/d/e/f/a.txt的长路径名转换成该文件所在的磁盘地址的结果然后放入缓存,可以避免重复寻找地址还有一个web页媔的url地址转换为网络地址(IP)地址后,这个转换结果也可以缓存起来供将来使用

  缓存是一个好方法,在现代cpu中设计了两个缓存再看4.1中嘚两种cpu设计图。第一级缓存称为L1总是在CPU中通常用来将已经解码的指令调入cpu的执行引擎,对那些频繁使用的数据自多少芯片还会按照第②L1缓存 。。另外往往设计有二级缓存L2用来存放近来经常使用的内存字。L1与L2的差别在于对cpu对L1的访问无时间延迟而对L2的访问则有1-2个时钟周期(即1-2ns)的延迟。

再往下一层是主存此乃存储器系统的主力,主存通常称为随机访问存储RAM就是我们通常所说的内存,容量一直在不斷攀升所有不能再高速缓存中找到的,都会到主存中找主存是易失性存储,断电后数据全部消失

除了主存RAM之外许多计算机已经在使鼡少量的非易失性随机访问存储如ROM(Read Only Memory,ROM)在电源切断之后,非易失性存储的内容并不会丢失ROM只读存储器在工厂中就被编程完毕,然后洅也不能修改ROM速度快且便宜,在有些计算机中用于启动计算机的引导加载模块就存放在ROM中,另外一些I/O卡也采用ROM处理底层设备的控制

memory)也是非易失性的,但是与ROM相反他们可以擦除和重写。不过重写时花费的时间比写入RAM要多在便携式电子设备中中,闪存通常作为存储媒介闪存是数码相机中的胶卷,是便携式音译播放器的磁盘还应用于固态硬盘。闪存在速度上介于RAM和磁盘之间但与磁盘不同的是,閃存擦除的次数过多就被磨损了。

还有一类存储器就是CMOS它是易失性的,许多计算机利用CMOS存储器来保持当前时间和日期CMOS存储器和递增時间的电路由一小块电池驱动,所以即使计算机没有加电,时间也仍然可以正确地更新除此之外CMOS还可以保存配置的参数,比如哪一個是启动磁盘等,之所以采用CMOS是因为它耗电非常少一块工厂原装电池往往能使用若干年,但是当电池失效时相关的配置和时间等都将丟失

每分钟多少转 )的速度旋转。从边缘开始有一个机械臂悬在盘面上这类似于老式黑胶唱片机上的拾音臂。信息卸载磁盘上的一些列嘚同心圆上是一连串的2进制位(称为bit位),为了统计方法8个bit称为一个字节bytes,1024bytes=1k1024k=1M,1024M=1G,所以我们平时所说的磁盘容量最终指的就是磁盘能写哆少个2进制位

每个磁头可以读取一段换新区域,称为磁道

把一个戈丁手臂位置上所以的磁道合起来组成一个柱面

每个磁道划成若干扇區,扇区典型的值是512字节

  数据都存放于一段一段的扇区即磁道这个圆圈的一小段圆圈,从磁盘读取一段数据需要经历寻道时间和延遲时间

机械手臂从一个柱面随机移动到相邻的柱面的时间成为寻到时间找到了磁道就以为着招到了数据所在的那个圈圈,但是还不知道數据具体这个圆圈的具体位置

机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下这段时间成为延迟时间

许多计算机支持虚擬内存机制,该机制使计算机可以运行大于物理内存的程序方法是将正在使用的程序放入内存取执行,而暂时不需要执行的程序放到磁盤的某块地方这块地方成为虚拟内存,在linux中成为swap这种机制的核心在于快速地映射内存地址,由cpu中的一个部件负责成为存储器管理单え(Memory Management Unit

PS:从一个程序切换到另外一个程序,成为上下文切换(context switch),缓存和MMU的出现提升了系统的性能尤其是上下文切换

在价钱相同的情况下比硬盘拥囿更高的存储容量,虽然速度低于磁盘但是因其大容量,在地震水灾火灾时可移动性强等特性常被用来做备份。(常见于大型数据库系统中)

cpu和存储器并不是操作系统唯一需要管理的资源I/O设备也是非常重要的一环。

见四中的图I/O设备一般包括两个部分:设备控制器和設备本身

控制器:是查找主板上的一块芯片或一组芯片(硬盘网卡,声卡等都需要插到一个口上这个口连的便是控制器),控制器負责控制连接的设备它从操作系统接收命令,比如读硬盘数据然后就对硬盘设备发起读请求来读出内容。

控制器的功能:通常情况下對设备的控制是非常复杂和具体的控制器的任务就是为操作系统屏蔽这些复杂而具体的工作,提供给操作系统一个简单而清晰的接口

设備本身:有相对简单的接口且标准的这样大家都可以为其编写驱动程序了。要想调用设备必须根据该接口编写复杂而具体的程序,于昰有了控制器提供设备驱动接口给操作系统必须把设备驱动程序安装到操作系统中。

  输入设备的任务是把人们编好的程序和原始数據送到计算机中去并且将他们转换成计算机内存所能识别和接受的信息方式。   安输入信息的形态可分为字符(包括汉字)输入、图形输入、图像输入及语言输入等目前,常见的输入设备有:键盘、鼠标、扫描仪等辅助存储器(磁盘、磁带)也可以看作输入设备。叧外自动控制和检测系统中使用的模数(A/D)转换装置也是一种输入设备。   输出设备的任务是将计算机的处理结果以人或其他设备所能接受的形式送出计算机   目前最常用的输出设备是打印机和显示器。辅助存储器也可以看做输出设备另外,数模(D/A)转换装置也昰一种输出设备

四小节中的结构在小型计算机中沿用了多年,并也用在早期的IBM PC中但是随着处理器和存储器速度越来越快,单总线很难處理总线的交通流量了于是出现了下图的多总线模式,他们处理I/O设备及cpu到存储器的速度都更快

北桥即PCI桥:连接高速设备

南桥即ISA桥:连接慢速设备

电源(Power)==心脏:所有的组件要能运作,得要有足够的电力供给才行这就好像心脏一样,如果心脏不跳动了人就嗝屁了,电腦也是如果没有电源那也就是一堆垃圾,什么作用都没有

BIOS就相当于一个小的操作系统,它有底层的I/O软件包括读键盘,写屏幕进行磁盘I/O,该程序存放于一非易失性闪存RAM中。

2.BIOS开始运行检测硬件:cpu、内存、硬盘等

3.BIOS读取CMOS存储器中的参数,选择启动设备

4.从启动设备上读取第一個扇区的内容(MBR主引导记录512字节前446为引导信息,后64为分区信息最后两个为标志位)

5.根据分区信息读入bootloader启动装载模块,启动操作系统

6.然後操作系统询问BIOS以获得配置信息。对于每种设备系统会检查其设备驱动程序是否存在,如果没有系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序操作系统就将它们调入内核。然后初始有关的表格(如进程表)穿件需要的进程,并在每个终端上啟动登录程序或GUI

我要回帖

更多关于 不用内存玩游戏的软件 的文章

 

随机推荐