姓名:朱佳男
学号:17021210978
专业:信号与信息处理
转载自://www.greatytc.com/p/b14a35b9b7ad
【嵌牛导读】现代人们对于计算机的硬件基础知识有所来了解是很有必要的,这篇文章主要介绍了计算机硬件的基础知识,包括CPU、寄存器、存储器与磁盘等等。通过对本文的阅读,能让我们对计算机的工作方式有一个基本的认识。
【嵌牛鼻子】计算机硬件、CPU、寄存器
【嵌牛提问 】CPU的作用是什么?寄存器包括哪些类?操作系统的启动流程是怎么样的?
【嵌牛正文】
一.编程语言的作用及与操作系统和硬件的关系
编程语言是程序员用来控制计算机的工具,是一种标准化的交流技巧,使得人与计算机之间可以在某种程度上交流,使得计算机能够完成人所下达的工作。
在计算机刚出现的时候,程序员直接控制硬件来使计算机工作,但是用机器语言(二进制代码)编写的程序无明显特征,难以书写和阅读,具有很大的局限性。因此随着计算机的发展,操作系统出现并成为了人与计算机硬件之间的桥梁,人直接控制操作系统,操作系统调用计算机硬件。
应用程序即是软件,是程序员用编程语言写的程序,应用程序在操作系统环境下运行,并通过操作系统调动计算机硬件完成工作。
二.计算机硬件
计算机由运算器、控制器、存储器、输入设备和输出设备等五个逻辑部件组成,其中运算器和控制器合称为中央处理器(Central Processing Unit,简称CPU),存储器(Memory)分为内存和外存,输入设备(Input Device)和输出设备(Output Device)即是通过各种控制器能被计算机调用并实现输入或输出的设备。
CPU是计算机系统的核心,是运算中心和指挥中心。内存是存储速度较快而容量较小的存储器,外存(通常指磁盘)是存储速度较慢而容量较大的存储器。内存是通过电工作的存储器,断电则存储的数据丢失;磁盘是通过磁工作的存储器,可长时间保存数据。
计算机工作时,CPU从内存中取出指令解码并执行,当需要用到磁盘中的数据时,则将磁盘中的数据送入内存后再使用。
三.CPU与寄存器
CPU是计算机的大脑,通过从内存中取出指令并解码执行来控制计算机各个部件。每个CPU都有一套可执行的专门指令集,任何软件的执行都必须转换为CPU的指令去执行。
因访问内存得到指令或数据花费的时间比CPU解码执行指令的时间多得多,因此CPU内部有一些保存关键变量和临时数据的寄存器,CPU可直接从寄存器中调用常用数据或者通过寄存器中的内存地址直接调用内存中的数据,使运行速度更快。
寄存器分类:
1.通用寄存器:保存变量和临时结果。
2.程序计数器:保存了将要取出的下一条指令的内存地址,指令取出后,程序计数器就更新以执行后续指令。
3.堆栈指针:它指向内存中当前栈的顶端,该栈包含已经进入但还没有退出的每个过程中的一个框架。在一个堆栈框架中保存了有关的输入参数、局部变量以及那些没有保存在寄存器中的临时变量。
4.程序状态字寄存器(Program Status Word,PSW):该寄存器包含条码位(由比较指令设置)、CPU优先级、模式(用户态和内核态)、以及各种其他控制位。用户通常读入整个PSW,但只对其中少量的字段写入。在系统调用I/O设备中,PSW非常重要。
寄存器的维护:
在时间多路复用的CPU中,操作系统每次停止一个正在运行的程序时,都必须保存所有的寄存器,这样在稍后该程序再次运行时,可以把这些寄存器重新装入。
四.内核态与用户态及如何切换
多数CPU有两种模式,即内核态和用户态,PSW中有一个二进制位控制这两种模式。
内核态:当CPU在内核态运行时,可以执行指令集中的所有指令,即可以使用硬件的所有功能。
用户态:当CPU在用户态运行时,仅仅只能执行指令集中的一个子集,该子集不包含操作硬件功能的部分,一般情况下,在用户态下不允许访问外围设备,不允许占用其他程序的用户空间,将PSW的模式设置成内核态也是禁止的。
将用户态切换到内核态的过程称为系统调用(system call),CPU中对应的指令为陷阱指令(Trap Instruction),这个过程的实现需要通过调用操作系统。
五.存储器系列
存储器在计算机硬件中仅次于处理器(CPU),一般而言,随着存储器容量的增加,其读写速度会逐渐变慢。
L1缓存指寄存器:用与CPU相同材质制造,CPU访问它无时延,典型容量是:在32位CPU中为32*32,在64位CPU中为64*64,两种情况下容量均小于1KB。
L2缓存指高速缓存:主要由硬件控制高速缓存的存取,不同CPU,高速缓存行大小不同,如X86是32BYTES,ALPHA是64BYTES,并且始终在第32或64个字节出对齐(从0开始)。最常用的高速缓存行放置下CPU内部或者非常接近CPU的高速缓存中。高速缓存命中指当某个程序需要读一个存储数据时,高速缓存硬件检查所需要的高速缓存行在高速缓存中。高速缓存的命中通常需要两个时钟周期(2ns),若高速缓存命中,就必须访问内存,这需要付出大量时间代价。高速缓存价格昂贵,因此大小有限,有些机器具有两级甚至三级高速缓存,每一级高速缓存比前一级慢但是容量大。
主存(即内存)通常称为随机访问存储(RAM),主存是易失性存储,断电后数据消失。
ROM(Read Only Memory)是非易失性随机访问存储,但它是只读存储器。ROM速度快且便宜,在有些计算机中,用于启动计算机的引导加载模块就存放在ROM中,另外一些I/O卡也采用ROM处理底层设备的控制。
EEPROM(Electrically Erasable PROM,电可擦除可编程ROM)和闪存(flash memory)也是非易失性的,但它们可以被擦除和重写,不过花费的时间比RAM多。闪存速度介于RAM和磁盘之间,但闪存擦除次数过多就会磨损。
CMOS是易失性的,许多计算机利用它来保持当前时间和日期。CMOS存储器和递增时间的电路由一小块电池驱动。CMOS还可以保存配置的参数,比如哪一个是启动磁盘等。CMOS耗电非常少,一块原装电池能用若干年。
BIOS基本输入输出程序储存在ROM芯片中,CMOS用来存储BIOS设置和系统时间。
六.磁盘
1.磁盘结构:在磁盘中有一个或多个金属盘片,它们以5400,7200或10800RPM(RPM,revolutions per minute,转速)的速度旋转,从边缘开始有一个机械臂悬在盘面上,信息写在磁盘上的一些列的同心圆上,是一连串的二进制位(称为bit位)
机械臂称为磁头。
每个磁头在磁盘表面划出的圆形轨迹,称为磁道(Track)。
在有多个盘片构成的盘组中,由不同盘片的面,但处于同一半径圆的多个磁道组成的一个圆柱面(Cylinder)。
磁盘上的每个磁道被等分为若干个弧段,这些弧段便是硬盘的扇区(Sector)。硬盘的第一个扇区,叫做引导扇区。
每个磁道划分成多个扇区,扇区的典型值是512字节。
扇区是磁盘级别的最小读写单位,操作系统的最小读写单位是1block = 8 * 512Bytes。
2.平均寻道时间:机械手臂从一个柱面随机移动到相邻的柱面的时间称为寻道时间,找到了磁道就找到了数据所在的那个圆圈,但是还是不知道这个数据在这个圆圈的具体位置。
3.平均延迟时间:机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间成为延迟时间
数据存放于一段一段的扇区,即磁道这个圆圈的一小段圆弧,从磁盘读取一段数据需要经历寻道时间和延迟时间。
4.虚拟内存和MMU:将正在使用的程序放入内存,而将暂时不需要执行的程序放到磁盘的某个地方,这块地方称为虚拟内存(Virtual Memory),在linux中称为swap。这种机制的核心在于快速映射内存地址,由cpu中的一个部件负责,称为存储器管理单元(Memory Management Unit,MMU)
从一个程序切换到另外一个程序,称为上下午切换(context switch),缓存和MMU的出现提升了系统的性能,尤其是上下文切换。
5.磁带:在价钱相同的情况下比硬盘拥有更高的存储容量,虽然速度低于磁盘,但因其容量大,在地震水灾火灾时机动性强等特性,常被用来做备份。(常见于大型数据库系统中)
6.I/O设备:I/O设备一般包括两个部分:设备控制器和设备本身。
控制器:是主板上的一块芯片或一组芯片,控制器负责控制连接的设备,它从操作系统接收命令,比如读取硬盘数据,然后就对硬盘设备发起读取请求来读出内容。
控制器的功能:通常情况下对设备的控制是复杂而具体的,控制器的任务就是为操作系统屏蔽这些复杂而具体的工作,提供给操作系统一个简单而清晰的接口。
设备本身:要想调用设备,必须根据该接口编写复杂而具体的程序,于是有了控制器提供设备驱动接口给操作系统。必须把设备驱动程序安装到操作系统中。
七.总线与南桥和北桥
南桥即ISA桥:连接慢速设备
北桥即PCI桥:连接高速设备
八.操作系统的启动流程
1.计算机加电
2.BIOS开始运行,检测硬件:CPU、内存、硬盘等
3.BIOS读取CMOS存储器中的参数,选择启动设备
4.从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64位为分区信息,最后两个为标志位)
5.根据分区信息读入bootloader启动装载模块,启动操作系统
6.然后操作系统询问BIOS,获得配置信息。对于每种设备,系统会检查起设备驱动程序是否存在,如果没有,系统则会要求用户安装设备驱动程序。一旦有了全部设备驱动程序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),创建需要的进程,并在每个终端上启动登录程序或GUI。
九.应用程序的启动流程
1.通过操作系统发出启动程序的指令,并将之存入内存。
2.CPU从内存中调出指令,并解码执行。
3.程序数据从硬盘读入内存
4.CPU从内存中读取程序数据并运行