计算机是如何启动的

本文详细介绍了计算机启动的过程,包括BIOS程序如何初始化硬件并加载MBR(主引导记录)。MBR包含启动管理器(bootloader),用于让用户选择操作系统。之后加载选定操作系统的内核到内存中,最终运行/sbin/init程序。

计算机是如何启动的呢?

要启动一台计算机,必须要让启动程序先运行,机器才能随之启动。然而通常又是,只有在机器启动后,程序才能运行,这本身就是自相矛盾的。pull oneself up by one`s bootstrap,也就是某人通过自己的鞋带将自己拉起来,也显然是不可能的。

所以必须实现一个机制,让操作系统还未运行的时候,就注入一段启动程序在内存中运行,这就是BIOS程序。当你点击电源按钮后,CPU会自动寻址到0xFFFF0,然后读取BIOS程序到内存中执行,BIOS会进行硬件自检,即检查计算机硬件是否正常,如果一切正常,BIOS会进入下一个启动程序,然而它并不知道该启动程序在哪里,可能在磁盘上,也可能在U盘中,也有可能通过网卡获取,所以需要用户自己选择,计算机默认会选择第一个(通常是磁盘),当然这个顺序是可以调整的,这就是Boot Sequence。

 

如果是从磁盘启动,那么计算机会读取磁盘的第一个扇区MBR,也就是引导程序(最前面的512B,主引导记录 Master Boot Record)。

 MBR由三个部分组成:

  (1) 第1-446字节:调用操作系统的机器码(boot loader)

  (2) 第447-510字节:分区表(Partition table)。

  (3) 第511-512字节:主引导记录签名(0x55和0xAA)。

其中,第二部分"分区表"的作用,是将硬盘分成若干个区,因为每个区可以安装不同的操作系统。如果最后两个字节-主引导记录签名是0x55和0xAA,那么说明该设备可以启动(如果不是的话,就在Boot Sequence中依次选择下一项进行启动,例如U盘)。

如果设备可以启动,那么计算机会首先读取"主引导记录"前面446字节的机器码,运行“启动管理器”(boot loader,现在最流行的启动管理器是Grub),由用户选择启动哪一个操作系统。之后,boot loader会定位到某个特定的磁盘分区,并将操作系统内核(/boot)加载到内存,内核加载成功后,第一个运行的程序是/sbin/init,所有其他进程都是由init进程fork出来的。

 

 

转载于:https://www.cnblogs.com/james111/p/7441061.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值