其实ICS里面已经介绍过这个部分,但是我相信很多同学对这个部分的了解还是停留在理论层面,本次实验会让大家亲自体验切换的过程。
我们首先按 OS 的启动顺序来确认一下:
(步骤一)先是加载OS部分(lab1,当然,这次要解析ELF格式)。
从实模式进入保护模式(lab1)。
加载内核到内存某地址并跳转运行(lab1)。
(步骤二)然后是进行系统的各种初始化工作,这里我们采用模块化的方法。
初始化串口输出(initSerial)
initSerial
初始化中断向量表(initIdt)
initIdt
初始化8259a中断控制器(initIntr)
initIntr
初始化 GDT 表、配置 TSS 段(initSeg)
initSeg
初始化VGA设备(initVga)
initVga
配置好键盘映射表(initKeyTable)
initKeyTable
从磁盘加载用户程序到内存相应地址(loadUMain)
loadUMain
(步骤三)最后进入用户空间进行输出。
进入用户空间(enterUserSpace)
enterUserSpace
调用库函数,输出各种内容!
exercise4:上面的三个步骤都可以在框架代码里面找得到,请阅读框架代码,说说每步分别在哪个文件的什么部分(即这些函数在哪里)?
【进入用户空间】这个过程,就是从内核态进入用户态的过程。
Last updated 3 years ago