中南大学操作系统实验报告31004.pdf

上传人:得** 文档编号:79389975 上传时间:2023-03-21 格式:PDF 页数:8 大小:374.49KB
返回 下载 相关 举报
中南大学操作系统实验报告31004.pdf_第1页
第1页 / 共8页
中南大学操作系统实验报告31004.pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《中南大学操作系统实验报告31004.pdf》由会员分享,可在线阅读,更多相关《中南大学操作系统实验报告31004.pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、中南大学 操作系统实验报告 姓名:学号:班级:进程模拟与主存分配回收 一、实验内容 1.设计进程管理中数据结构的内容;2.设计一个优先权调度算法,实现进程调度;3.设计至少两个临界资源的同步管理模拟。4.主存存储器空间的分配和回收 二、实验目的 a)加深对进程概念及进程管理各部分内容的理解;b)熟悉进程管理中主要数据结构的设计及进程调度算法、进程控制机构和同步机构的实现过程。c)帮助了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收 三、实验要求 1.最好采用图形界面;2.可随时增加进程;3.规定道数,设置后备队列和阻塞状态。若内存中进程少于规定道数,可自动从后备队4.列中调度作业进入

2、。被阻塞进程入阻塞队列,设置唤醒功能用于将指定阻塞进程唤醒进入就绪队列;5.每次调度完成,显示各进程状态;6.设置至少两个临界资源阻塞队列和公共变量,模拟同步过程;7.设置时间片中断操作;8.自行假设主存空间大小,预设操作系统所占大小并构造未分分区表。9.采用最先适应算法分配主存空间 10.进程完成后,分配主存,并与相邻空闲分区合并。四、具体实现 将实验一与实验二结合在一起。所以整合成了一分实验报告。在这里统一给出自己实现的思想。1.流程图 开始就绪队列内存是否够用是否有临界资源可以使用阻塞队列外存队列是否完成释放资源部分进程进入就绪队列结束队列2.关键代码:1.利用冒泡法实现优先级的排序 e

3、tPriority()(j).getPriority()etAll();(0);2.内存不够时,移入外存队列 public void move(PCB PCB,ArrayList externStore,ArrayList PCBready)if()=false)(PCB);(PCB);五、实验总结 1.通过此次实验,对于操作系统的模拟有了更深的理解。进程的调度,在开始做第一个实验时,由于设计上的漏洞,导致临界资源一直被占用,结果造成了死锁。在实践中,更加理解了死锁的涵义。同时,也提醒着自己要不断的总结,注意数据结构方面的设计问题。2.对于实验内容的理解,我在这方面产生了点困难。刚开始,不知道

4、如何来模拟临界资源。在请教了老师之后,慢慢开始摸索。3.,接触到第二个实验,对于主存空间的模拟又产生了困难。不知道该用什么来模拟。最终采用了投机取巧的方式。用了 ArrayList.这样,就不用担心主存的回收问题了。但是这样,不太符合实际情况。六、源代码 package os_check_1;import class CPU static boolean source=false;static ArrayList PCBready=new ArrayList();etTime();return time;etState(1);sGetStore()=true)if(0).getSource()

5、=true)etUseSource()=true)etPID()+执行);else (0);etPID()+执行);else 会占用临界资源 public void run1(ArrayList ready)for(int x=0;x=2;x+)un();etTime()=0)break;else source=true;etUseSource(true);if(0).getUseSource()=true)临界资源被+(0).getPID()+占用);un();etTime()=0)break;etTime()=0)(i);etUseSource()=true)etPID()+释放临界资源)

6、;source=false;etAll();阻塞队列中有:+();for(int i=0;i();i+)(i).getAll();完成队列中有:+();for(int i=0;i();i+)(i).getAll();if()!=0)是否需要从阻塞队列中唤醒进程);int choose=();if(choose=1)wakeUp();是否需要增加进程);etPID()=id)for(int j=0;j();j+)if(j).getUseSource()=true)(j).setUseSource(false);用 mainStore 的大小表示主存。(0);sGetStore()=true)etPID()+从外存进入内存);public void show()主存使用情况为:);for(int i=0;i();i+)package os_check_1;public class PCB private int PID;etAll();(0);etPriority()(j).getPriority()etAll();package os_check_1;import class Test public static void main(String args)CPU cpu=new CPU();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁