本节书摘来自异步社区《操作系统真象还原》一书中的第2章,第2.1节,作者:郑钢著,更多章节内容可以访问云栖社区“异步社区”公众号查看
第2章 编写MBR主引导记录,让我们开始 *
2.1 计算机的启动过程
不知道大家对“载入内存”这4个字的理解是怎样的。以下这两点是我曾经的疑问:第一,为什么程序要载入内存。第二,什么是载入内存。
先回答第一个。
CPU的硬件电路被设计成只能运行处于内存中的程序,这是硬件基因的问题,这样做的原因,首先肯定是内存比较快,且容量大。
其次,操作系统可以存储在软盘上,也可以存储在硬盘上,甚至U盘,当然还有很多存储介质都可以。但由于各个硬件特性不同,操作系统要分别考虑每种硬件的特性才行。所以,都在内存中运行程序,操作系统和硬件设计都省事了,这可能也是为了方式的统一吧,否则总不能出现某种存储介质后,操作系统和硬件就要付出额外努力去支持。当然,具体原因只有硬件工程师才知道,咱们在此先打住,继续咱们的内容。
马上回答第二个。
老听说“程序载入内存”,我不知道有多少同学对这个词仅仅是感性认识。
我隐约觉得很多同学都会将“载入内存”和“程序执行”画等号。所谓的载入内存,大概上分两部分。
(1)程序被加载器(软件或硬件)加载到内存某个区域。
(2)CPU的cs:ip寄存器被指向这个程序的起始地址。
操作系统在加载程序时,是需要某个加载器来将用户程序存储到内存中的。其实“加载器”这只是人为起的名字,突显了其功能,并不是多么神秘的东西,本质上它就是一堆函数组成的模块,不要因为未知的东西而感到畏惧。
从按下主机上的power键后,第一个运行的软件是BIOS。于是产生了三个问题。
(1)它是由谁加载的。
(2)它被加载到哪里。
(3)它的cs:ip是谁来更改的。