知识卡片

引导过程:解决"先有鸡还是先有蛋"

专业/工作 · 1287.c

内容

CPU 一启动就会从固定地址开始执行指令,但操作系统平时存放在海量存储器(关机后不丢数据),而 CPU 只能直接执行主存储器(易失、关机即清空)里的内容——这形成一个死结:要把操作系统从海量存储器搬进主存储器,需要先有程序在跑,但此刻主存储器还是空的。解法是在主存储器里划出一小块非易失性的只读存储器(ROM),永久固化一段极小的引导装入程序,CPU 开机后先执行它,由它负责把真正的操作系统从海量存储器复制进主存储器,再跳转过去交出控制权。发散:这是一种”用一个足够小、可以被硬编码的初始动作,去启动一个原本依赖自身才能启动的大系统”的通用解法,同样的结构也出现在编译器自举(用一个极简的初代编译器编译出功能完整的下一代编译器)里。

参考来源

《计算机科学概论》第3章《操作系统》