国外知名设计网站大全,wordpress插件选项,展示型网站的特点,wordpress国外主题改版权引言“启动”英文是boot#xff0c;其本意是靴子的意思#xff0c;这里boot是bootstrap#xff08;鞋带#xff09;的缩写#xff0c;来自谚语pull oneself up by ones bootstraps#xff0c;译为“拽着鞋带把自己拉起来”。 最早的时候#xff0c;工程师们… 引言“启动”英文是boot其本意是靴子的意思这里boot是bootstrap鞋带的缩写来自谚语pull oneself up by ones bootstraps译为“拽着鞋带把自己拉起来”。 最早的时候工程师们用它来比喻计算机启动的矛盾过程必须先运行程序然后计算机才能启动但是计算机不启动就无法运行程序。早期想尽各种办法把一小段程序装进内存然后计算机才能正常运行。所以工程师们把这个过程叫做”拉鞋带”久而久之就简称为boot了。 可以把计算机的整个启动过程分为四个阶段如下图所示 对于计算机的启动大致流程可以描述为 首先计算机上电后读取内存中的开机启动程序BIOS可以将计算机的控制权理解为一个指针硬件自检时指针指向硬件判断计算机硬件是否存在和正常工作随后指针指向启动顺序读取存放外部设备访问的顺序的内存找到下一个程序的地址。指针指向主引导记录读取设备并判断是都设备可以用于启动。指针指向硬盘启动找到存放操作系统的分区位置。指针指向操作系统分区位置将操作系统的内核载入内存内核加载成功后运行初始化程序启动操作系统。第一阶段BIOS上个世纪70年代初”只读内存”read-only memory缩写为ROM发明开机程序被刷入ROM芯片计算机通电后第一件事就是读取它。 硬件自检Power-On Self-TestPOSTPOST的主要任务就是在检测系统中的一些关键设备是否存在和正常工作。POST结果 如果硬件出现问题主板会发出不同含义的蜂鸣启动中止。如果没有问题屏幕就会显示出CPU、内存、硬盘等信息。启动顺序Boot Sequence硬件自检完成后BIOS把控制权转交给下一阶段的启动程序。 这时BIOS需要知道”下一阶段的启动程序”具体存放在哪一个设备。也就是说BIOS需要有一个外部储存设备的排序排在前面的设备就是优先转交控制权的设备。这种排序叫做”启动顺序”。 打开BIOS的操作界面里面有一项就是”设定启动顺序”。 第二阶段主引导记录Master boot recordMBRBIOS按照”启动顺序”把控制权转交给排在第一位的储存设备。此时计算机读取该设备的第一个扇区也就是读取最前面的512个。 如果这512个字节的最后两个字节是0x55和0xAA表明这个设备可以用于启动如果不是表明设备不能用于启动控制权于是被转交给”启动顺序”中的下一个设备。这最前面的512个字节就叫做”主引导记录”。 主引导记录的结构“主引导记录”只有512个字节放不了太多东西。它的主要作用是告诉计算机到硬盘的哪一个位置去找操作系统。 主引导记录由三个部分组成 1231 第1-446字节调用操作系统的机器码。2 第447-510字节分区表Partition table。3 第511-512字节主引导记录签名0x55和0xAA。 第二部分”分区表”的作用是将硬盘分成若干个区。 分区表硬盘分区有很多好处。考虑到每个区可以安装不同的操作系统”主引导记录”因此必须知道将控制权转交给哪个区。 分区表的长度只有64个字节里面又分成四项每项16个字节。所以一个硬盘最多只能分四个一级分区又叫做”主分区”。 每个主分区的16个字节由6个部分组成 1234561 第1个字节如果为0x80就表示该主分区是激活分区控制权要转交给这个分区。四个主分区里面只能有一个是激活的。2 第2-4个字节主分区第一个扇区的物理位置柱面、磁头、扇区号等等。3 第5个字节主分区类型。4 第6-8个字节主分区最后一个扇区的物理位置。5 第9-12字节该主分区第一个扇区的逻辑地址。6 第13-16字节主分区的扇区总数。 最后的四个字节”主分区的扇区总数”决定了这个主分区的长度。也就是说一个主分区的扇区总数最多不超过2的32次方。 如果每个扇区为512个字节就意味着单个分区最大不超过2TB。再考虑到扇区的逻辑地址也是32位所以单个硬盘可利用的空间最大也不超过2TB。如果想使用更大的硬盘只有2个方法一是提高每个扇区的字节数二是增加扇区总数。 第三阶段硬盘启动计算机的控制权就要转交给硬盘的某个分区了这里又分成三种情况。 情况A卷引导记录四个主分区里面只有一个是激活的。计算机会读取激活分区的第一个扇区叫做”卷引导记录”Volume boot recordVBR。 “卷引导记录”的主要作用是告诉计算机操作系统在这个分区里的位置。然后计算机就会加载操作系统了。 情况B扩展分区和逻辑分区随着硬盘越来越大四个主分区已经不够了需要更多的分区。但是分区表只有四项因此规定有且仅有一个区可以被定义成”扩展分区”Extended partition。 “扩展分区”就是指这个区里面又分成多个区。这种分区里面的分区就叫做”逻辑分区”logical partition。 计算机先读取扩展分区的第一个扇区叫做”扩展引导记录”Extended boot recordEBR。它里面也包含一张64字节的分区表但是最多只有两项也就是两个逻辑分区。 计算机接着读取第二个逻辑分区的第一个扇区再从里面的分区表中找到第三个逻辑分区的位置以此类推直到某个逻辑分区的分区表只包含它自身为止即只有一个分区项。因此扩展分区可以包含无数个逻辑分区。但是似乎很少通过这种方式启动操作系统。如果操作系统确实安装在扩展分区一般采用下一种方式启动。 情况C启动管理器在这种情况下计算机读取”主引导记录”前面446字节的机器码之后不再把控制权转交给某一个分区而是运行事先安装的”启动管理器”boot loader由用户选择启动哪一个操作系统。 Linux环境中目前最流行的启动管理器是Grub。 第四阶段操作系统控制权转交给操作系统后操作系统的内核首先被载入内存。 以Linux系统为例先载入/boot目录下面的kernel。内核加载成功后第一个运行的程序是/sbin/init。它根据配置文件Debian系统是/etc/initab产生init进程。这是Linux启动后的第一个进程pid进程编号为1其他进程都是它的后代。 然后init线程加载系统的各个模块比如窗口程序和网络程序直至执行/bin/login程序跳出登录界面等待用户输入用户名和密码。 至此全部启动过程完成。 参考 深入理解计算机启动的过程计算机是如何启动的