精品文档---下载后可任意编辑学号 姓名一. 作业题目Nachos 的线程管理模块升级二. 本作业要求本实习项目希望通过修改 Nachos 系统平台的底层源代码来实现以下目标:1
扩充线程数据结构
增加“用户 ID、线程 ID”两个数据成员,同时在Nachos 现有的线程管理机制中增加对这两个数据成员的维护机制
扩展现有的线程状态
Nachos 平台中的线程状态只有“初启态”、“就绪态”、“堵塞态”、“运行态”四种情况
请增加“挂起(suspending)”这个状态,所谓“挂起”是指当前的线程映象保存在磁盘文件而不是内存中
“挂起”状态是未来实现“虚拟内存管理”的重要基础
修改线程调度算法
将 Nachos 平台的线程管理机制调整为“抢占式”
具体可选择“时间片轮转”、“优先级调度”、“多级队列”等不同的调度算法
增加全局性的线程管理机制
扩充 Nachos 平台的现有操作命令,例如可以增加一个名为“ThreadView”的命令,执行该命令,可以在屏幕上显示目前所有存在的线程信息,包括“用户 ID“、“线程 ID”、“当前状态”等
实现一个同步与互斥的例子
在完成以上修改后,可编写一个实例程序,来实现某个“同步-互斥”经典问题的正确解法
例如可选择“哲学家就餐”问题,实例程序会创建 5 个哲学家线程,这些线程拥有同样的用户 ID,可以遵循“信号量”机制来正确的运行
也可以选择“生产者-消费者”问题、“睡眠理发师问题”等其他经典 IPC 问题
(可选)三. 实践过程详细说明:在 Thread 类中增加线程 ID,增加整形变量 tid,增加全局变量 id_port对 tid 进行管理,tid 的分配是从 0 开始扫描直到最大的线程数,看是否已经被分配,寻找到一个最小的未被分配的 tid 分配给新建的线程,可以增精品文档---下载后可任意