what‘s the 计算机硬件?
一套完整的计算机系统分为计算机硬件、操作系统和软件。python是编程语言,通过语言得到的是软件,软件的最终目的是为了操控硬件的运行,而直接用软件操控硬件会造成很多不必要的麻烦,所以在软件和硬件之间还存在着操作系统。既然我们的最终目的是为了操控硬件运行以得到想要的结果,所以我们首先就得了解在一台计算机中,它的硬件主要是哪些。
计算机硬件主要为CPU、内存、磁盘、输入设备和输出设备。这些都通过一条总线连接。
CPU是计算机的大脑,任何软件的执行最终都要转化为CPU执行。因为CPU执行指令很快而访问内存以得到指令或数据的时间相对要久,所以,CPU内部有一个寄存器,用来保存关键变量和临时数据,最重要的寄存器是程序状态字寄存器(Program Status Word,PSW)。
一般情况下的CPU只有两种状态——内核态和用户态。操作系统运行时处于内核态,在内核态情况下,整个系统的硬件都可以被调用。用户程序在运行时处于用户态,在用户态情况下硬件无法被操作,而用户程序在运行中肯定是需要对硬件进行操作的例如对文件的读取,所以用户态和内核态之间必须做到能够切换,此时用户程序使用系统调用,系统调用是一个特别的过程调用指令,该指令具有从用户态切换到内核态的特别能力。
moore定律指出,芯片中的晶体管数量每18个月翻一倍,随着晶体管数量的增多,功能就会更强大。
I.第一步增强:在cpu芯片中加入更大的缓存,一级缓存L1,用和cpu相同的材质制成,cpu访问它没有时延
II.第二步增强:一个cpu中的处理逻辑增多,称为多线程或超线程,对用户来说一个有两个线程的cpu就相当于两个cpu,进程是资源单位而线程才是cpu的执行单位。
多线程运行cpu保持两个不同的线程状态,可以在纳秒级的时间内来回切换,速度快到你看到的结果是并发的,伪并行的,然而多线程不提供真正的并行处理,一个cpu同一时刻只能处理一个进程(一个进程中至少一个线程)
III.第三步增强:除了多线程,还出现了包含2个或者4个完整处理器的cpu芯片,如下图。要使用这类多核芯片肯定需要有多处理操作系统
计算机中第二重要的是储存器。储存器的选择主要看三个因素:速度、容量和价钱。但是要做到每个都最优目前是不可能的,存储器系统的分层结构如下图所示
顶层的存储器速度较高,容量较小,与底层的存储器相比每位的成本较高,其差别往往是十亿数量级的。
寄存器的材质与CPU相同,所以它的读写速度能做到与CPU一样快,是最高效的存储器。L1缓存指的就是寄存器。
高速缓存即L2缓存,最常用的高速缓存一般都放在CPU内或者非常接近CPU的位置。当某个程序需要读一个存储字时,高速缓存硬件检查所需要的高速缓存行是否在高速缓存中。如果是,则称为高速缓存命中,缓存满足了请求,就不需要通过总线把访问请求送往主存(内存)。
内存是存储器系统的主力。内存是易失性存储,断电后数据就全部消失。可以理解为电脑进程开的太多使得运行变慢时,重启就可以解决问题。因为重启意味着一次断电的行为,进程会因为RAM数据消失而被迫结束,所以电脑变得流畅起来。
EEPROM(Electrically Erasable PROM,电可擦除可编程ROM)和闪存(flash memory)也是非易失性的,不过重写时花费的时间比写入RAM要多。在便携式电子设备中中,闪存通常作为存储媒介。闪存是数码相机中的胶卷,是便携式音译播放器的磁盘,还应用于固态硬盘。闪存在速度上介于RAM和磁盘之间,但与磁盘不同的是,闪存擦除的次数过多,就被磨损了。
另外还有一种特别与众不同的存储器叫CMOS,它是易失性的许多计算机利用CMOS存储器来保持当前时间和日期。CMOS存储器和递增时间的电路由一小块电池驱动,所以,即使计算机没有加电,时间也仍然可以正确地更新,除此之外CMOS还可以保存配置的参数,因为它耗电非常少。
磁盘是一种机械装置,在磁盘中有一个或多个金属盘片,它们以5400,7200或10800rpm(RPM =revolutions per minute 每分钟多少转 )的速度旋转。因为磁盘旋转速度相对而言较慢,所以它的读写速度就较慢。每个磁头可以读取一段换新区域,称为磁道把一个戈丁手臂位置上所以的磁道合起来,组成一个柱面每个磁道划成若干扇区,扇区典型的值是512字节,数据都存放于一段一段的扇区,即磁道这个圆圈的一小段圆圈,从磁盘读取一段数据需要经历寻道时间和延迟时间,找到了磁道就意味着找到了数据所在的那个圈圈,但是还不知道数据具体这个圆圈的具体位置,机械手臂从一个柱面随机移动到相邻的柱面的时间成为寻到时间机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间成为延迟时间。
虚拟内存的作用是可以使计算机运行大于物理内存的程序,方法是将正在使用的程序放入内存取执行,而暂时不需要执行的程序放到磁盘的某块地方,这块地方成为虚拟内存。
磁带在价钱相同的情况下比硬盘拥有更高的存储容量,虽然速度低于磁盘,但是因其大容量,在地震水灾火灾时可移动性强等特性,常被用来做备份。
随着处理器和存储器速度越来越快,单总线很难处理总线的交通流量了,于是出现了下图的多总线模式,他们处理I/O设备及cpu到存储器的速度都更快。北桥即PCI桥:连接高速设备;南桥即ISA桥:连接慢速设备。
总结:
计算机的启动流程如下:1、计算机加电;2、BIOS开始运行,检测硬件:cpu、内存、硬盘等;3、BIOS读取CMOS存储器中的参数,选择启动设备;4、从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位);5、根据分区信息读入bootloader启动装载模块,启动操作系统;6、然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登录程序或GUI。
应用程序的启动流程如下:操作系统找到硬盘上的应用软件,然后CPU取指——解码——执行文件。软件本身要运行一个文件,通过操作系统控制硬盘提取文件,这个过程要将CPU从用户态转换为内核态,CPU执行要运行的这个文件的过程中又将内核态转换为用户态。