第二讲——开机流程 本文共有2523个字,关键词: 开机流程?难道不是按下开机键就行了嘛?我………… 上一节我们已经整好了一个能够插上电的一堆硬件,但是这并不意味着按下开机键就能那啥了…… 好了,说正经的。 当我们准备好一个硬件环境的时候,这才是我们具备了一个基础条件之一。因为我们不知道这些硬件能不能好好地相互配合,能不能按照我们的想法运行,所以,开机并非是那么简单的操作,只是这些操作不是我们去完成的而已。 1.上电自检 什么叫上电自检,为啥叫上电自检? 我们给新装的电脑插上电,按下开关,此时的主板会先工作,就是那个把许多设备穿在一起的大个头电路板,上面有一个闪闪发光的玩意儿——电池,它是用来给主板上的某些部件供电的。就是那个大个头,在上面由生产厂家封装了一块芯片,芯片里面写了一个程序叫BIOS,那个芯片叫ROM,只读存储器,什么叫只读,就像你在外面的商场见到的那种大显示屏一样(实际上是LED矩阵),你只能看看里面播放的是不是小电影。 这个小程序会被加载到RAM(内存)的第一段(此处分段会在后面解释),按照程序的设置检查设备是不是好的,如果有硬件坏了还会有声音发出来(本流氓表示没听见过几回),如果是第一次开机,检查结束的硬件信息会被保存在一个flash芯片里,由那个亮瞎眼的小电池供电以存储数据,它还有一个作用就是维持硬件时间,像电子表一样,维持里面的石英晶体振荡器的振荡来计算时间的流逝。 如果在此时用户与计算机硬件 产生交互,也就是说你按了键盘什么的,这时键盘就会产生一个电信号通知CPU,这时候CPU机会暂时停下手里的活来响应用户的指令,这个称谓中断。中断是一种硬件通知机制。 这就是为什么我们按下键盘就会有响应。 还有一种就是CPU不停的扫描用户有没有按下某个按键,这个称谓轮询,这种效率很低下,在单片机里会有。 这样的话问题就来了,为什么计算机知道你按的是键盘而不是你的鼻子耳朵鼠标? 主板上有一块芯片,称谓可编程控制器,它的针脚与CPU是相连的,我们可以简单的理解为这个芯片的一个针脚代表一个设备,如果你的键盘鼠标很多,硬盘也有很多怎么办?哎,土豪任性起来让人头痛啊! 这种情况也不是没有,服务器上挂个千儿八百个硬盘还是很常见的,这时候可以再可编程控制器的一个针脚上标识多个设备,用所谓的中断向量来表示……此处省略我也不知道多少字 所以计算机的CPU就是通过不停的中断来与外围设备交互的,当然中断越多对性能的影响也就越大。 比如一些大的网站每秒的请求就上千次,假如一个网页3M,图片乱七八糟加起来轻轻松松过3M,也就是说每秒硬盘的吞吐就的数GB,这要是机械硬盘估计能着火了,所以大多都采用固态硬盘,有些人为了提高硬盘的效率,将固态硬盘直接接到了北桥上,因为北桥是高速总线嘛,起点高啊,机械硬盘因为是有机械结构的,瓶颈很明显,就算是接到北桥意义也不大……看来硬件配置是我的硬伤…… CPU与内存的交互也不是直接互怼的,毕竟CPU那么厉害,内存也怼不过,大家可能听说过缓存,缓存干嘛的?缓存就是用作数据缓冲,你CPU不是吃的快吗,那我提前给你扔点吃的在换缓存里,反正我(RAM)货备的足,CPU有一级缓存、二级缓存,其中和内存交互的是二级缓存,CPU里的都是高速缓存,高速缓存的造价昂贵,举个例子,同样是I7四核心,但是一个二级缓存2M一个二级缓存6M这个价格可能翻一番都还不止,二级缓存容量的提高会提高CPU的性能。一级缓存分为指令缓存和数据缓存,为什么分开?凑一起不好吗?分开会避免冲突并且提高效率,在一级缓存之上还有个和CPU以一样的频率运行的缓存,叫寄存器,就是临时存放数据的,比如要计算2+3,将二传输进去后放哪里?寄存器就是这么个作用,这玩意儿造价啧啧…… 这时候计算机自检结束后会在硬盘里的找MBR(主引导分区)以及引导驱动器的分区表,当然这个时候那个小电池的威力就出来了,它会将所有的硬件信息保存在一个叫CMOS的玩意儿里,你可以在BIOS中定义你的启动顺序,从光驱还是第一块硬盘,或者网络,当然你要是有装小电影的硬盘可能也是可以的。然后BIOS就会从硬盘第一个扇区加载MBR到内存,找到MBR里的启动程序和磁盘分区表,然后把工作给启动程序,这个启动程序称为BootLoader,它常常是grub/lilo,这也就意味着系统的控制权从BIOS过渡到了grub/lilo,然后再由grub/lilo找到相应的操作系统,确切的说应该是内核,这样就把权限过渡到了操作系统的内核,此时才会有那个Windows系统熟悉的几个方块的出现,在操作系统中查询硬件信息时都是由BIOS提供的,CMOS里面记录着一张庞大的拓扑网络结构,就是各个硬件之间的关系以及线路是干什么用的,比如网卡是连在第几条PCI总线上的。 至此,这堆花里胡哨的玩意儿终于能像个正常电脑的模样运行了。 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 给自己讲linux 2016-12-02 评论 1883 次浏览