python编程基础--计算机原理之硬件基础
一、寄存器:寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。
1、寄存器的特性:
1)寄存器位于CPU内部,数量很少,仅十四个;
2)寄存器所能存储的数据不一定是8bit,有一些寄存器可以存储16bit数据,对于386/486处理器中的一些寄存器则能存储32bit数据;
3)每个内部寄存器都有一个名字,而没有类似存储器的地址编号。
2、寄存器的分类:
1)数据寄存器:数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。
2)变址寄存器:主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。
3)指针寄存器:主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。指针寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。也称为堆栈指针寄存器。
4)段寄存器:段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。
5)程序状态字寄存器:用来存放两类信息:一类是体现当前指令执行结果的各种状态信息,如有无进位(CY位),有无溢出(OV位),结果正负(SF位),结果是否为零(ZF位),奇偶标志位(P位)等;另一类是存放控制信息,如允许中断(IF位),跟踪标志(TF位)等。有些机器中将PSW称为标志寄存器FR(Flag Register)。
二、处理器设计的演变:
1、最初:取值、解码、执行,三步同时执行,这样意味着每步执行完都要等待其他步执行的结果,比较浪费时间和资源。
2、后来:取值单元------>解码单元------->执行单元,三步成流水线式的设计,即:取值N时,可以解码N+1,也可以执行N+2
3、超变量CPU,比流水线CPU更加先进,可以同时执行多个单元,类似有多条流水线同时执行;
三、内核态和用户态:
1、内核态:当程序运行在内核态时,CPU可以执行指令集中的所有指令,包括可以使用硬件的虽有功能。
2、用户态: 当程序运行在用户态时,仅仅只能执行CPU的一个指令集,不能直接操作硬件,因此,一般情况下,用户态进程对I/O和内存保护不能被其他的程序占用;当然也不能修改程序状态字寄存器里的程序状态。
四、内核态和用户态的切换:
1、发生系统调用时
这是处于用户态的进程主动请求切换到内核态的一种方式。用户态的进程通过系统调用申请使用操作系统提供的系统调用服务例程来处理任务。而系统调用的机制,其核心仍是使用了操作系统为用户特别开发的一个中断机制来实现的,即软中断。
2、产生异常时
当CPU执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行的进程切换到处理此异常的内核相关的程序中,也就是转到了内核态,如缺页异常。
3、外设产生中断时
当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作的完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等
五、存储器
1、寄存器:集成在CPU内部,使用和CPU相同的材质,速度最快,但是相应的造价也最贵。所有空间都很小,<1kB
2、高级缓存:即通常所说的L1(一级缓存)、L2(二级缓存)、L3(三级缓存),位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。最初缓存只有一级,二级缓存(L2 CACHE)出现是为了协调一级缓存与内存之间的速度。二级缓存比一级缓存速度更慢,容量更大,主要就是做一级缓存和内存之间数据临时交换的地方用。实际上,现在Intel和AMD处理器在一级缓存的逻辑结构设计上有所不同,所以二级缓存对CPU性能的影响也不尽相同。
3、内存:与CPU沟通的桥梁,所有程序都是在内存中运行的,包括操作系统本身;作用是暂时存放CPU中的运算数据,以及与外部存储的交换数据,内存的大小和频率也影响到计算的整体性能;内存是随机存储,断电数据丢失。
4、ROM:只读存储,在制造时即写入需要的程序,只读,不能修改,断电不丢失,例如计算机的BIOS
5、CMOS:用于存储计算的时间信息,和BIOS的配置参数等信息,断电数据丢失。
6、外存:外部存储,包括硬盘、高速闪存等,主要用于存储数据,断电不丢失数据,计算机的操作系统就是安装在外部存储内。
六:磁盘
磁盘也是存储器的一种,主要保存的是用户数据,操作系统,以及安装的应用软件。
1.盘面
硬盘的盘片一般用铝合金材料做基片,高速硬盘也可能用玻璃做基片。硬盘的每一个盘片都有两个盘面(Side),即上、下盘面,一般每个盘面都会利用,都可以存储数据,成为有效盘片,也有极个别的硬盘盘面数为单数
2.磁道
磁盘在格式化时被划分成许多同心圆,这些同心圆轨迹叫做磁道(Track)。磁道从外向内从0开始顺序编号。硬盘的每一个盘面有300~1 024个磁道,新式大容量硬盘每面的磁道数更多。信息以脉冲串的形式记录在这些轨迹中,这些同心圆不是连续记录数据,而是被划分成一段段的圆弧,这些圆弧的角速度一样。由于径向长度不一样。
3.柱面 (柱面数=磁道数)
所有盘面上的同一磁道构成一个圆柱,通常称做柱面(Cylinder),每个圆柱上的磁头由上而下从“0”开始编号。数据的读/写按柱面进行,即磁头读/写数据时首先在同一柱面内从“0”磁头开始进行操作,依次向下在同一柱面的不同盘面即磁头上进行操作,只在同一柱面所有的磁头全部读/写完毕后磁头才转移到下一柱面,因为选取磁头只需通过电子切换即可,而选取柱面则必须通过机械切换。
4.扇区
操作系统 以扇区(Sector)形式将信息存储在硬盘上,每个扇区为512个字节。一个扇区有两个主要部分:存储数据地点的标识符和存储数据的数据段。数据都是存储在一个个扇区上的。
系统将文件存储到磁盘上时,按柱面、磁头、扇区的方式进行,即最先是第1磁道的第一磁头下(也就是第1盘面的第一磁道)的所有扇区,然后,是同一柱面的下一磁头,……,一个柱面存储满后就推进到下一个柱面,直到把文件内容全部写入磁盘。
系统也以相同的顺序读出数据。读出数据时通过告诉磁盘控制器要读出扇区所在的柱面号、磁头号和扇区号(物理地址的三个组成部分)进行。磁盘控制器则 直接使磁头部件步进到相应的柱面,选通相应的磁头,等待要求的扇区移动到磁头下。 所以,读取和读取数据时都是有寻道时间和延迟时间的。
5、平均寻道时间:磁头从一个柱面移动到另外一个柱面,称为寻道时间;
6、延迟时间:磁头移动到磁道后必须等待旋转到数据所在的区域,这个时间称为延迟时间。
7、虚拟内存:虚拟内存是计算机在硬盘中开辟的一段用于内存性质的存储空间。
七、计算机启动过程
1、计算机加电。
2、加载BIOS,硬件检测。
3、加载CMOS,根据CMOS内的设置寻找启动设备。
4、根据启动顺序,从启动设备上读取第一个扇区的内容(一个扇区512字节,第一个扇区包含:前446个字节为MBR,即主引导记录,64字节的磁盘分区表,2个字节的保留位)
5、根据主引导记录和磁盘分区表,读入bootloader,启动装载模块,启动操作系统。
6、操作系统会根据BIOS信息加载驱动程序,所有的驱动程序都加载到内核中去,最后启动一些开机自启的应用程序和一些系统的内部表格。