深入理解pintos

文章目录


前言

 pintos是操作系统课程下的一项动手实践。由于要在linux下的qemu虚拟机内运行,并且内核程序使用的是c语言编写,所以对不熟悉linux,操作系统,c语言特性的人来说,可能光是搞明白pintos到底是干什么,就很不容易。虽然关于如何完成pintos的projects,网上已有很多资料,但是他们大部分只包含针对完成pintos的两个部分:怎么改代码+为什么这样改,其中还有很多做法不是普适性的。为了帮助大家完成pintos,下面我就从四个project中最简单的threads开始,给大家理一理pintos到底是干什么的,以及怎么优雅(不那么令人抓狂)地独立地完成pintos。(我默认大家已经安装好pintos的环境)


一、pintos是什么?

         想要很好的完成pintos,官方文档是必不可少的。下面我们结合官方文档和pintos文件(文档入口)进行讲解。

         pintos文件夹内共有下面几个文件,除了src是我们需要用的,别的都是一些说明文件。 

         进入src文件夹:

 解释一下每个文件夹的内容:(这里的每个文件夹都是我们完成project过程中需要用到的,下面是官方文档的介绍)

threads/
基本内核的源代码,您将从此处开始对项目1进行修改.

userprog/
用户程序加载器的源代码,从项目2开始您将对其进行修改.

vm/
几乎是空的目录。 您将在此处实现项目3虚拟内存。

filesys/
基本文件系统的源代码。您将从项目2开始使用此文件系统,但是直到项目4才将其修改。

devices/
I/O设备接口的源代码:键盘、计时器、磁盘等。您将在项目1中修改计时器实现。除此以外您无需更改此代码。

lib/
标准C库的子集的实现。该目录中的代码文件将被编译进Pintos内核和Pintos中运行的用户程序(从项目2开始)。在内核代码和用户程序中,都可以使用#include <…>包含在此目录中的头文件。您几乎不需要修改此代码。

lib/kernel/
C库中仅包含在Pintos内核中的部分(即用户程序不使用)。它还包括您在编写内核代码时可以使用的某些数据类型的实现:位图、双向链表和哈希表。在内核中,此目录中的头文件可以使用#include <...>

lib/user/
C库中仅包含在Pintos用户程序中的部分。 在用户程序中,可以使用#include <…>表示法包含此目录中的头文件。

tests/
对每个项目进行测试。如果可以帮助您测试提交的内容,则可以修改此代码,但是在运行测试之前,我们将其替换为原始代码。

examples/
从项目2开始使用的示例用户程序.

misc/
utils/
如果您决定尝试在自己的计算机上使用Pintos,这些文件可能会派上用场。否则,您可以忽略它们。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值