总体概述
本次lab的主要内容是拓展nachos的线程机制,在nachos的线程模型中添加tid和uid,并添加相应的管理机制。
本次lab的重要知识点在于对nachos中线程具体实现方式的理解,
任务完成情况
- Exercise 1 –> Y
- Exercise 2 –> Y
- Exercise 3 –> Y
- Exercise 4 –> Y
具体完成情况如下所示:
Exercise 1 调研
调研Linux或Windows中进程控制块(PCB)的基本实现方式,理解与Nachos的异同。
Linux中的PCB包含以下的内容
- PID
- 特征信息
- 进程状态
- 优先级
- 通信状态
- 现场保护区
- 资源需求、分配控制信息
- 进程实体信息
- 其他(工作单位、工作区、文件信息)
Nachos中的PCB实现
PCB的实现thread.h
中,其中仅包含以下信息:
- stackTop and stack, 表示当前进程所占的栈顶和栈底
- machineState, 保留未在CPU上运行的进程的寄存器状态
- status, 表示当前进程的状态
Exercise 2 源代码阅读
仔细阅读下列源代码,理解Nachos现有的线程机制
1. code/threads/main.cc和code/threads/threadtest.cc
2. code/threads/thread.h和code/threads/thread.cc
thread.cc
中实现了Thread
类的一系列成员函数,包含如下几种:
Thread();//Thread的构造函数
~Thread();//Thread的析构函数
Fork(VoidFunctionPtr func, int arg);//在线程中运行func方法&