我们要研究到什么程度?
输入输出---------------------CPU---------------------------存储器(内存)
CPU的硬件电路只能运行处于内存中的程序,这样做的原因是因为内存比较快。
为什么要这样设计?只有硬件工程师知道。朋友们,不细究了。接着往下说。
以X86为例,说一下操作系统是如何启动的
Intel X86有20根地址总线,可以访问1MB的内存空间,空间范围表示为0x00000~0xFFFFF
,
其中,0xFFFF0~0xFFFFF
,存放这BIOS
这段程序。
按下power
键,开机中。。。。。。。。。发生了什么
在开机的一瞬间,CPU的PC寄存器,被强制初始化为0xFFFF0
,开始执行BIOS
这段程序
首先,有一段程序,叫做BIOS
,它被加载器(硬件或是软件,不管它)加载到内存的某个区域;
这个过程,我们称之为“载入内存
”
CPU的PC寄存器被指向BIOS
的起始地址
BIOS这段程序,是从一块只读存储器ROM中加载内存中,
第一个运行的程序是BIOS
,BIOS
就是一段程序,
以ChCore
为例,介绍OS
是如何启动的
OS启动时进行硬件初始化工作,并开启页表
进入内核
Bootloader
和 kernel
放在同一个ELF 文件中