本实验将是对该课程的扩展,将在内核中实现对多线程的支持。
这里只做步骤/结果描述,代码见Github。
本实验代码https://github.com/epis2048/MIT_6.828_2018/tree/lab7
系统内核
核心思想:CPU以线程为单位,其他资源以进程为单位。
1. 进程、线程管理及调度
修改如下文件,主要是仿照Env建立Thd结构,并创建一系列有关线程的函数(如创建、销毁等)。还要新增一些关于Thd的描述。
1 | inc/env.h |
修改如下文件,主要是修改原本涉及进程的地方,使之改用/兼容线程。
1 | kern/cpu.h |
2. 相关系统调用
修改如下文件,增加一系列关于线程的系统调用。
1 | kern/syscall.h |
用户代码
1. 用户库
修改如下文件,在用户层提供线程的系统调用、修改运行单位为线程以及做一些适配等。
1 | lib/fork.c |
2. 测试程序
修改如下文件,其中hellothread为新增文件,用于测试线程。剩余两个是既有文件,用于测试进程。
1 | user/primes.c |
Make
此外,修改Makefrag文件,将新增的文件添加到编译列表中。
1 | kern/Makefrag |