电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

Nachos的线程管理模块升级

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

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

Nachos的线程管理模块升级

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部