0%

操作系统启动过程简述

一、操作系统启动生成的进程树

下图是我在做实验时调试出来的操作系统生成的进程树,计算机在刚开始启动时执行的是汇编代码,然后执行的第一行C代码是

1
start_kernel

在执行这个函数之后,正在执行的程序成为0号进程,0号进程会先后调用

1
2
__do_fork
do_execve

两个函数去执行$\verb+fork+$和$\verb+exec+$两个系统调用,生成1号和2号进程,1号进程就是大名鼎鼎的$init$进程,所有用户程序的根进程(包括$shell$进程和用户登录进程等等)。2号进程负责创建和维护所有内核线程(在本图中是960号及之前的进程)。最后0号进程调用

1
cpu_dile

函数进入休眠状态,CPU在没有活跃任务可调度时就执行它。
操作系统启动时生成的进程树

二、计算机启动过程

本科做实验时画的图,描绘的时MBR启动的图,计算机先执行BIOS,然后跳转到$\verb+0x7c00+$地址执行MBR,然后执行Loader,完成实模式向保护模式切换、页表初始化等工作,然后进入内核。
MBR启动过程