20 总结与回顾:搞定全部初始化工作!

你好,我是闪客。

我们今天来给第二部分做个梳理。

第二部分所讲的代码,就和第二部分的目录一样规整,一个 init 方法对应一个章节,简单粗暴。

// init/main.c
void main(void) {
    ...
    mem_init(main_memory_start,memory_end);
    trap_init();
    blk_dev_init();
    chr_dev_init();
    tty_init();
    time_init();
    sched_init();
    buffer_init(buffer_memory_end);
    hd_init();
    ...
}

这个过程,你可能觉得无聊,因为全是各种数据结构、中断、外设的初始化工作,后面将会怎么用它们,并没有展开讲解。

但你也可能觉得兴奋,因为后面操作系统的全部工作,都是围绕着这几个初始化了的结构展开的,通过对这些初始化过程的了解,相信你也能略微看清了一点操作系统的工作原理了。

其实我是蛮喜欢这个过程的,比如我看电影,其实我对高潮部分并不是很感兴趣,我就喜欢看一场大战或者一场阴谋前各部门的准备工作,看着他们为了后面一个完美的计划所做的前期筹备,是一种享受,你懂的!

话不多说,现在我带着你开始回顾一遍!请享受这个过程。