• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

计算机的启动过程

微机原理 彭东稳 9年前 (2015-08-03) 32001次浏览 已收录 0个评论

启动过程

从计算机发展到现在也就几十年的时间,在这几十年里,所有和计算机有关的东西都发生了天翻地覆的变化。变得更复杂,变得更强大。而唯一没有变的就是当计算机开始工作的时候,内存里必须已经放好了要执行的程序指令。那个时候人们曾经用过机械开关,依靠这种笨拙的手段来一个地址一个地址地填充内存里的空间。

 

但是人们很快意识到这并不是一个好办法,在编写了大量的、用于做各种不同工作的程序指令之后,要想重复使用它们,最好是永久地保存起来,下次要用的时候在快速地装载到存储器里。这样,在电子管和晶体管时代,纸带和穿孔卡片出现了。所谓纸带,就是一卷长长的纸条,用手工或者机器把二进制数据凿在上面,有孔代表1,没有孔代表0。而穿孔卡片不同之处在于它是一张一张的。


而今天当你按下电源的时候计算机就全自动化然后展现一个欢迎页面给你。那么这个过程到底是怎样的呢?

 

就我们目前的计算机体系而言中央处理器还是直接和内存打交道,而内存也还是不会永久保存数据,但CPU还和一个只读存储器ROM相连,这实际上是把中央处理器可以访问的地址空间分成了两部分,比如访问00000000-0111111之间的任何一个地址,那么访问的内容就落在内存之中;但是如果访问的地址落在10000000-1111111之间,那么实际上访问的就是ROM里的内容。注意只读存储器和内存是两样东西,内存就是我们平时说的内存条,而只读存储器则位于主板上,是主板在生产的时候就有的一个部分。

 

当你每次打开电源时,如果中央处理器是好的,它就开始工作了,从存储器里面取指令然后执行。在设计CPU的时候就让它第一次开始取指令执行的地址恰好位于只读存储器ROM之内,而ROM在制造的时候已经固化了一些指令,这使得它不会因为存储器还没有准备好指令而瘫在哪里。

 

ROM中固化的东西还挺多,但有一部分是用来对计算机的各个部件进行检测的指令(包括CPU自己的一些内部零件),看看它们是否完好无损;另外还要让他们调整一下工作状态,这叫做初始化。

 

除了加电自检指令,ROM中还包含一些访问外部设备的指令,就是设备驱动程序。不过,它只包含少量的常用外部设备,比如键盘,打印机,显示器,内存等,同时这些设备驱动程序仅仅提供最基本的功能,以保守的方式使用对应的外部设备。正因为如此,该ROM更多地被称为基本输入/输出系统BIOSbasic input/output system

 

BIOS(Basic Input/Output System—基本输入输出系统)。BIOS可以视为是一个永久地记录在ROM中的一个软件,是操作系统输入输出管理系统的一部分。它包括post自检程序,基本启动程序,基本的硬件驱动程序等。主要用来负责机器的启动和系统中重要硬件的控制和驱动,并为高层软件提供基层调用。因ROM中主要存储的就是BIOS,因此,也可混称为ROM BIOS,或系统ROM BIOS。此外,操作系统还在硬盘上存储了一个重要文件IO.SYS—输入输出接口模块,主要提供操作系统与硬件的接口,并扩充了ROM BIOS的某些功能。

早期的ROM BIOS芯片确实是只读的,里面的内容是用一种烧录器写入的,一旦写入,就不能更改,除非更换芯片,现在的主机板都使用一种叫Flash EPROM的芯片来存储系统BIOS,里面的内容可通过使用主板厂商提供的擦写程序擦除后重新写入,这样就给用户升级BIOS提供了极大的

 

整个检测和初始化的过程只有短短的几秒钟,但是过程很复杂。传统上,这个过程就叫做POST(power on self test)翻译过来就是“加电自检”。从CPU自身开始,首先检测主板上的各个电路模块,如果发现了问题,就通过喇叭发出不同的音调来加以提示。如果机器坏得连喇叭都不能出声,就只能通过仪器进行测试了。这是一个约定,CPU像某个约定的端口发送表示出错原因的二进制数字代码,维修人员可以在哪里把它捕捉到。

尽管看起来通过屏幕显示出了什么问题可能更直观,但是,这个时候显示器部分还没有初始化。初始化的工作就是检查显示器I/O接口是否存在也就是显卡是否在主板插槽上。要是存在就让它进入正常的工作状态。

 

当显示器开始显示内容的时候,感觉会好很多,这是一种安慰。不过,整个检测和初始化过程还没有结束,而且也不是所有的检查工作都在屏幕上报告,除非测出了毛病。这个时候你会看到CPU的类型和内存的大小。当它检测内存的时候,用的是一种笨办法,即向每个单元写入一个数,然后再读出来,看是不是一样(这是一个笨办法,但很有效)

 

POST整个过程完成之后;且硬件也没有问题的情况下那么是不是就该执行我们的程序了呢?但是程序在哪里呢?

肯定不在ROM里面,因为它的容量太小。即使它的容量很大,也不可能在制造的时候就能预知你要用哪些软件。同理,答案也不再内存里,更何况它还无法在停电的时候持久保留内容。这时就需要一些外部存储设备,比如我们熟悉的硬盘,光盘等等。

存储设备

早期计算机工程师们用纸带来记录程序指令,尽管在计算机内部,程序指令都是一些电信号,但是纸带却是他们非常直观的写照。

 

很快磁记录出现了,但磁记录不是为了庆祝电子计算机时代的到来而做出的发明创造。相反,它有着更奢侈的目的—-把声音保存下来,想什么时候听就什么时候听。

 

此时,这些计算机学者们发现用磁带来记录计算机的数据和指令,会给他们带来前所未有的方便。于是乎,磁带顺理成章地成了当时哪些大型计算机的重要外部存储设备。不过使用磁带有一个显然不是很方便的地方,那就是在磁带上寻找想要的数据很不直接。因为它是顺序检索的,只能通过前进或后退来翻阅数据。

最开始这还能将就,但是随着计算机在各个行业上的应用越来越广泛,自然对速度提出了更高的要求。于是另外一种存储设备出现了,那就是硬盘(了解硬盘请看《硬盘全面介绍》,《硬盘工作原理介绍》这两章博客)

启动操作系统

当加电自检过后,就会根据BIOS中的外部存储设备启动顺序来加载存储设备。以硬盘为例,接着,就会加载硬盘的00道第一个扇区,称为主引导扇区,这是一个约定。主引导扇区有512字节,包含了446字节的启动指令和数据,后面是64字节的分区表,最后2字节是用来表明主引导扇区是有效的、可用的。

    

ROM中,紧挨着读取和检测主引导扇区指令的,是一个跳转指令。所以,一旦主引导扇区被读入内容,中央处理器将从ROM哪里跳到这里接着执行。主引导扇区的启动指令将分析读入内存的分区表,看看那个是活动分区。接着,算出该分区的起始位置,从那个扇区读入“操作系统”写在哪里的引导代码,也将它读入内容,然后接着执行。通常,操作系统的引导代码位于各分区若干个连续的扇区内。这一切都安排得很好,一环扣一环,就这样一点点地,操作系统把内核全部读入内存中。接下来就是开始启动一个完整的操作系统。如果不出意外就会出现欢迎登陆界面。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (1)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!