2.内核态-用户态

其实ICS里面已经介绍过这个部分,但是我相信很多同学对这个部分的了解还是停留在理论层面,本次实验会让大家亲自体验切换的过程。

我们首先按 OS 的启动顺序来确认一下:

  1. 步骤一)先是加载OS部分(lab1,当然,这次要解析ELF格式)。

    1. 从实模式进入保护模式(lab1)。

    2. 加载内核到内存某地址并跳转运行(lab1)。

  2. 步骤二)然后是进行系统的各种初始化工作,这里我们采用模块化的方法。

    1. 初始化串口输出(initSerial

    2. 初始化中断向量表(initIdt

    3. 初始化8259a中断控制器(initIntr

    4. 初始化 GDT 表、配置 TSS 段(initSeg

    5. 初始化VGA设备(initVga

    6. 配置好键盘映射表(initKeyTable

    7. 从磁盘加载用户程序到内存相应地址(loadUMain

  3. 步骤三)最后进入用户空间进行输出。

    1. 进入用户空间(enterUserSpace

    2. 调用库函数,输出各种内容!

exercise4:上面的三个步骤都可以在框架代码里面找得到,请阅读框架代码,说说每步分别在哪个文件的什么部分(即这些函数在哪里)?

【进入用户空间】这个过程,就是从内核态进入用户态的过程。

Last updated