Nachos系统调用实验Nachos线程模块升级实验Nachos内存管理扩展实验_第1页
Nachos系统调用实验Nachos线程模块升级实验Nachos内存管理扩展实验_第2页
Nachos系统调用实验Nachos线程模块升级实验Nachos内存管理扩展实验_第3页
Nachos系统调用实验Nachos线程模块升级实验Nachos内存管理扩展实验_第4页
Nachos系统调用实验Nachos线程模块升级实验Nachos内存管理扩展实验_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、四 川 大 学操作系统课程设计报告学 院: 软 件 学 院 专 业: 软 件 工 程 年 级: 2009 级 组 编 号: 组 成 员: 指导教师评阅意见: 指导教师评阅成绩: 提交时间 二一一 年 五 月 三十 日目录实验项目一 3实验项目二 9实验项目三 15实验项目一项目名称:Nachos系统调用实验实验目的:实现Nachos的基本系统调用: Write, Read, Exec, Join实验时间:2011年4月人员分工:单独完成实验环境:软件环境:Vmware版本: 虚拟机操作系统: Red hat Linux 选用的操作系统:win7实验内容:1.实现对SC_Write,SC_Rea

2、d,SC_Exec和SC_Join进行系统调用。SC_Write:SC_Read:SC_Exec:SC_Join:中,根据,写出SysWrite(),SysRead(),SysExc(),SysJoin()。 SysWrite():从内存Addr中每次读取一个字符放入ch中,调用系统的write将ch写出来。SysRead():系统的read每次读入一个字符放入才会中,再将它写入在内存的Addr中。SysExec():先将Addr中的命令语句读出放入exec_name字符数组中,再参考achos_syscall.c中Exec方法产生新的子进程调用系统的execl执行该命令。SysJoin():

3、参考achos_syscall.c中Join方法返回子进程的结束状态。实验结果:实验总结:基本达到实验目的,实现了Nachos的基本系统调用:Write, Read, Exec, Join参考文献:实验课件ppt利用nachos机理实现一个shell(课程资料)实验项目二项目名称:Nachos线程模块升级实验实验目的:扩展Nachos线程管理模式,限制线程的数量(最多128个用户线程)修改扩充Nachos的线程调度机制,改为“优先级调度”的抢占式调度实验时间:2011年5月人员分工:单独完成实验环境:软件环境:Vmware版本: 虚拟机操作系统:Red hat Linux 选用的操作系统:Wi

4、n XP SSH Client;Nachos操作系统实验结果:1 扩展Nachos线程管理模式,限制线程的数量(最多128个用户线程)1.对Thread的构造函数进行修改。设置静态变量n作为计数器,同时对线程树木进行判断,超过128则进行删除。2.对Threadtestself进行修改。重点在于要创建大于128个线程以检验多余的线程是否删除。运行结果:2 修改扩充Nachos的线程调度机制,改为“优先级调度”的抢占式调度1. 在thread类中加入priority属性,描述每个线程的优先级,并加入int getPriority(),void setPriority(int p)进行priori

5、ty的设置和获取thread.h的中: 添加Thread(char* debugName,int p)构造函数,设置优先级 添加priority属性 添加函数getPriority(),setPriority()thread.cc的中:对于新的线程将它的priority设为02. 实现线程的按序入队,则在Schedular的构造函数中需要将readyList实例化SortedList 并按新线程的priority排序。:添加compare函数,比较两个线程的优先级大小,在构造函数中调用compare函数,使得队列按优先级大小排列3. 测试在Thread.cc中编写测试函数Thread:Self

6、Test()在这儿创建3个新的线程函数以分析结果,则理论上的输出为:* thread 4 looped 0 times* thread 4 looped 1 times* thread 4 looped 2 times* thread 4 looped 3 times* thread 4 looped 4 times* thread 1 looped 0 times* thread 1 looped 1 times* thread 1 looped 2 times* thread 1 looped 3 times* thread 1 looped 4 times* thread 2 loope

7、d 0 times* thread 2 looped 1 times* thread 2 looped 2 times* thread 2 looped 3 times* thread 2 looped 4 times* thread 3 looped 0times* thread 3 looped 1 times* thread 3looped 2 times运行结果:运行结果与理论分析结果相同实验结果和结论:在实验内容中对两个部分进行了实验结果实验总结:基本达到实验目的,完成了对128个用户线程的控制,代码编写完成,可以调试通过,能够正常运行,但是对于系统自动调用的线程的分析还不够完整。达

8、到实验要求,代码完成,可以调试通过,正常运行,正确的按照优先级顺序调用线程。提出的要求,通过反复调试,可基本都可以完成。虽然还有瑕疵,但通过同学帮助,基本完成实验,完成报告。参考文献:实验PPT网上查询资料实验项目三项目名称:Nachos内存管理扩展实验实验目的:支持多道程序支持虚拟存储处理缺页中断实验时间:2011年5月人员分工:单独完成实验环境:软件环境:Vmware版本: 虚拟机操作系统:Red hat Linux 选用的操作系统:Win XP SSH远程登录软件实验内容:一、 支持多道程序1.首先注释掉AddrSpace类构造函数中bzero语句,在machine类中添加数据成员Glo

9、balPageTable数组记录全局页表2.在machine类中添加一个函数s_FindPage对GlobalPageTable数组进行扫描取得当前可用页号。3.类AddrSpace构造函数中按照程序需要来进行内存分配和页表的初始化二优先级调度1. 在AddrSpace类里加一数据成员s_reg,用来保存在现成调度时寄存器的内容。2.在AddrSpace类里的SaveState函数中,保存当前寄存器内容到s_reg中;3.在AddrSpace类里的RestoreState函数中,将当前程序页表pageTable 指针赋值machine全局变量的pageTable成员。然后恢复程序被阻塞前的寄存器内容。三处理缺页中断1.在machine类里面添加成员变量int型数组s_queue,记录页号分配顺序。2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论