theKingOfNight's Blog

浅谈操作系统是如何启动的

字数统计: 469阅读时长: 1 min
2019/01/19 Share

如何在屏幕上输出hello world?

1
2
1.CPU发送指令(将ASCII放在显示器上)(通过CPU-内存总线)给内存
2.内存->CPU-内存总线传输数据到总线控制器->再到图形控制器->输出到屏幕

什么是操作系统

1
2
3
我们的操作系统是从:
应用软件->操作系统接口->操作系统->计算机硬件
操作系统是在计算机硬件的“衣服”,方便人操作硬件,管理几乎所有的硬件

电脑是如何启动的(1.读入内存2.初始化)

1
2
3
4
5
6
7
8
9
X86打开时,CS=0xFFFF,IP=0x0000
寻址:CS:IP 0xFFFF0(开机时唯一有代码的地方ROM BIOS)
然后检查RAM,键盘,显示器,磁盘等硬件
将磁盘的0磁道0扇区(引导扇区,第一个扇区,第一段代码 )读入0x7c00处(一个扇区512字节)
设置CS=0x07C0,IP=0x0000
然后就开始我们或者不同牌子的电脑厂家设置的开机启动流程了(开机界面)。
setup读取硬件参数,第一段为head.s将汇编转为32位,最后跳到main函数,将system挪动到00地址处,然后使用mem_init函数将没有使用的位置初始化为0,同时初始化键盘,鼠标等硬件。
接下来开始执行system模块,使用makefile参数系统镜像(Image)(依赖bootsect.s,setup.s,system,build),
将镜像挪动到0磁道0扇区处,开始读入操作系统,初始化,产生桌面

什么是引导扇区呢?

1
引导扇区是一段汇编代码:bootsect.s

为什么不用其他语言做引导扇区呢?

1
2
汇编对地址和机器码可以进行强行控制,避免意外发生。
高级语言对地址以及机器码的把握会有很多意外

CATALOG