lab1和2概述:
本次操作系统实验,我们对计算机的操作系统进行了初步的探究,通过完成作业和问题,我们对操作系统的启动、内核载入、一些系统函数、堆栈的使用、内存管理有了更加深刻的了解,并且在完成作业的同时,深刻了解了计算机内存的结构以及每一块儿对应的作用。从实践的角度出发,很好的理解了一个操作系统的底层功能的实现。具体来说:
在启动计算机的部分中,通过gdb 的单补调试和断点控制,我们看到计算机执行一条条机器指令的过程,并且初步的理解了一些指令的作用以及总体了解了计算机启动和内核载入的过程。之后,我们对于Kernal 中的格式化输出函数进行了探究,其中着重观察了其对于进制的控制以及输出时页面的控制。此外,我们还自主探究了一些较为底层的与I/O 有密切关系的函数,从而更加深刻的对I/O 功能有了一定的了解。之后,我们还探究了计算机堆栈的使用,理解了指针在堆栈中的作用,并且在作业中通过对于指针的操作改造了原有的堆栈显示函数。在内存管理的部分,我们的一些对于计算机内存的了解的不足使我们曾一度停滞不前。之后,我们通过学习《深入了解Linux 内核》以及menlayout.h 文件中的一些提示信息逐渐了解了计算机对于内存管理的方法。在物理页管理的部分,实现了boot 的分配、page 的初始化、分配以及释放等。在虚拟内存部分,我们深入了解了计算机物理地址、线性地址、逻辑地址的相互转化,实现了虚拟内存中页表的管理,实现了页目录的初始化、boot 页的映射、也得查询删除及插入等。之后,我们将men_init()中的代码补充完全,实现了对于内核部分线性空间的初始化,并最终通过了所有的check。
此外,在完成这两大块内容的同时,对于问题的完成也使我们对于一些基础概念的理解,以及代码部分知识的掌握有了进一步的提升。
介绍工具和环境的配置
进入我们的具体问题
问题1: