MIT JOS LAB1&2学习笔记

本文详细记录了MIT JOS操作系统实验Lab1和Lab2的学习过程,涉及启动、内核加载、格式化输出、I/O、堆栈、内存管理等内容。通过实践,加深了对操作系统底层功能的理解,包括计算机启动、内核加载、格式化输出、I/O、堆栈操作和内存管理。此外,文章还介绍了问题解答和作业,如堆栈回溯函数的实现、内存管理机制的探讨等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

lab1和2概述:

本次操作系统实验,我们对计算机的操作系统进行了初步的探究,通过完成作业和问题,我们对操作系统的启动、内核载入、一些系统函数、堆栈的使用、内存管理有了更加深刻的了解,并且在完成作业的同时,深刻了解了计算机内存的结构以及每一块儿对应的作用。从实践的角度出发,很好的理解了一个操作系统的底层功能的实现。具体来说:


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


此外,在完成这两大块内容的同时,对于问题的完成也使我们对于一些基础概念的理解,以及代码部分知识的掌握有了进一步的提升。

 

介绍工具和环境的配置









进入我们的具体问题

 

问题1:







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值