14.中断初始化trap_init 当你的计算机刚刚启动时,你按下键盘是不生效的,但是过了一段时间后,再按下键盘就有效果了。 那我们今天就来刨根
15.块设备初始化blk_dev_init
15.块设备初始化blk_dev_init 读取硬盘数据到内存中,是操作系统的一个基础功能。 读取硬盘需要有块设备驱动程序,而以文件的方式来读取
16.控制台初始化tty_init
16.控制台初始化tty_init 继内存管理结构 mem_map 和中断描述符表 idt 建立好之后,我们又在内存中倒腾出一个新的数据结构 request。 并且把它们
17.时间初始化time_init
17.时间初始化time_init 书接上回,上回书咱们说到,通过初始化控制台的 tty_init 操作,内核代码可以很方便地在控制台输出字符啦! 作为用户也可以
18.进程调度初始化sched_init
18.进程调度初始化sched_init 书接上回,上回书咱们说到,time_init 方法通过与 CMOS 端口进行读写交互,获取到了年月日时分秒等数据
19.缓冲区初始化buffer_init
19.缓冲区初始化buffer_init 书接上回,上回书我们说到了进程调度的初始化,定义了一个长度为 64 的 task 数组用于管理全部进程的结构。 之后在
20.1.第2部分小结
20.1.第2部分小结 第二部分所讲的代码,就和第二部分的目录一样规整,一个 init 方法对应一个章节,简单粗暴。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
20.硬盘初始化hd_init
20.硬盘初始化hd_init 上回书咱们说到,buffer_init 完成了缓冲区初始化工作,内存中的缓冲区部分变成了这个样子。 而所有的缓冲头
21.一个新进程的诞生
21.一个新进程的诞生 一个新进程的诞生,从操作系统的源码角度来说,其实就两行代码。而关于创建进程的重点,其实就一行代码,就是大名鼎鼎的 fork 函数
22.从内核态到用户态
22.从内核态到用户态 书接上回,上回书咱们从整体上鸟瞰了一下第三部分要讲的内容,代码上就是还差四句话就走到了 main 函数的尽头。 1 2 3 4 5 6 7 8 9