Nachos的线程管理模块升级
3.2 实践项目2:Nachos的线程管理模块升级3.2.1 上机实践具体要求
【背景描述】
在Nachos平台中,线程是作业调度的基本单位,除了线程和进程的概念差别之外,可直接运用操作系统教学课程中关于进程管理的知识。Nachos平台所使用的是非抢占式调度,线程一旦占用CPU,就会一直运行到结束或者被阻塞(等待I/O事件);Nachos平台中的线程数据结构定义非常简单,并无用户ID、线程ID等数据成员,也就是说,无法基于线程的ID来实现通信、同步互斥等机制。Nachos平台中并无全局性的线程管理机制,并未限制线程的数目,也无法了解有多少线程存在。
【实践要求】
本实习项目希望通过修改Nachos系统平台的底层源代码来实现以下目标:
1. 扩充Nachos中线程的管理模式,目前Nachos并不限制线程的个数,而是依靠宿主机(我们的实验环境中宿主机就是指使用VMWare创建的Linux虚拟机,预设内存为256M)的内存来保存线程的信息。请在Nachos中增加对线程数量的限制,使得Nachos中最多能够同时存在128个用户线程。
2. 修改扩充Nachos中线程调度的机制,将其改变为遵循“优先级调度”的抢占式调度。在时钟中断发生时,检查处于“就绪状态”的等待线程中是否存在优先级高于目前占用CPU线程的线程,如果存在这样的线程就使其抢占CPU,如果不存在则不发生线程切换。
3. (可选)为Nachos的线程管理模块增加通过“公共信箱”进行通信的机制,由Nachos系统核心维护一个预定大小的Mailbox(4K),规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。
用c/或c++也行,有谁会做啊,急急急求帮帮忙