你了解计算机是如何启动的吗?

292 阅读4分钟

计算机启动

本文导图 计算机的启动过程好比一场接力赛,各选手如上图所示,BIOS, MBR, OSLoader, OS, 一个程序接一个程序的运行,而传递的接力棒便相当于对计算机的控制权。 本文也就围绕着这四个程序进行介绍,隐去了部分细节后续讲解,着重于理清启动的顺序、过程。

  • 公众号:Rand_cs

一、BIOS

(1)BIOS运行

启动的第一步便是运行BIOS程序,平常要运行某个程序时一般分为两步: 1、将程序载入内存 2、使cs:ip指向程序入口地址

而BIOS作为开机运行的第一个程序,运行方式与普通程序有所不同,但方法过程是相通的: 1、BIOS程序不需要由谁加载,本身便固化在ROM只读存储器中,位置如下图所示: 在这里插入图片描述 据图可知,BIOS位于内存底部1M的顶端64KB处。 2、开机的一瞬间cs:ip便被初始化为0xf000 : 0xfff0。开机的时候处于实模式,其等效地址为0xffff0,如上图所示此地址为BIOS的入口地址。 内存说明:计算机中的内存靠地址总线进行访问,而地址总线能访问到不仅仅是内存条,还有ROM,显存等等。一般是将地址总线能访问到的地址空间低端的一部分划给除内存条之外的其他储存空间。这也是电脑中显示的已安装的内存与实际不符的原因,总是会小上一点,不信右击此电脑点属性查看内存。

(2)BIOS功能 BIOS程序有如下功能: 1、检验外设,初始化硬件 2、在0x000~0x3ff处建立终端向量表并填写终端例程 3、基本的I/O功能 4、权力交接给MBR

BIOS最后一项工作便是检验启动盘0盘0道1扇区(CHS表示方法,LBA表示方法为0盘0道0扇区),如果此扇区末尾两个字节是0x55和0xaa,则认为此扇区存在可执行的程序(MBR),随后将其加载到0x7c00处,再跳转到此处运行,此时便将接力棒交给了MBR.

二、MBR

MBR全称Main Boot Record,主引导记录,位于硬盘最开始的扇区。 一般扇区大小为512字节,MBR引导扇区的内容为: 1、446字节的引导程序和参数 2、64字节的分区表 3、最后两字节0x55和0xaa
简析分区表:分区表每个表项16字节,则共有4个表项。重要的表项内容如下: 1、 第0字节,活动分区标记,两种取值0x80和0。0x80表示活动分区,也就是此分区的引导扇区包含引导程序,通常为操作系统内核加载器。0表示非活动分区,不可引导。 2、第8-11字节:分区起始偏移扇区 3、第12-15字节:分区扇区数

MBR主要的功能是检验分区表,从分区表查找可引导的活动分区,找到后“传递接力棒”,将分区中的引导程序加载到某地(不同操作系统有着不同实现,从实模式下的内存分布中可看出,有一些未利用的区域,可加载到其中某处),最后跳转去执行,完成交接。

三、OS Loader

OS Loader,有些操作系统是bootloader程序(如Linux),即操作系统加载器,顾名思义此程序的功能便是要将操作系统加载进来,然后将接力棒交给操作系统。 Loader所做工作比较复杂,在此简述需要了解的部分: 1、从实模式到保护模式的转化 2、启用分页机制 3、加载内核

四、OS

操作系统接权后,首先运行init程,如Linux下的init/main.c,main.c中的start_kernel函数会调用各种初始化函数,执行这些函数初始化所有模块,如中断,内存管理系统,文件系统等等。之后便由操作系统全权管理计算机,管理资源,提供服务。


至此,启动完成,进入丰富多彩的计算机世界。计算机启动过程较为复杂,想要完全弄清楚肯定不是这三言两语可以解释清楚的,本文只是做一个简介,梳理一下过程,让大家对启动有一个概念。其中涉及的一些其他知识如磁盘、分区、实模式、分页等将会在后续文章中详细讲述。



喜欢本文的朋友还请点赞支持一下,也欢迎关注公众号Rand_cs一起学习一起进步。