欢迎来到天天文库
浏览记录
ID:51662859
大小:222.00 KB
页数:14页
时间:2020-03-14
《中南大学操作系统实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、中南大学操作系统实验报告姓名:学号:班级:进程模拟与主存分配回收一、实验内容1.设计进程管理中数据结构的内容;2.设计一个优先权调度算法,实现进程调度;3.设计至少两个临界资源的同步管理模拟。4.主存存储器空间的分配和回收二、实验目的a)加深对进程概念及进程管理各部分内容的理解;b)熟悉进程管理中主要数据结构的设计及进程调度算法、进程控制机构和同步机构的实现过程。c)帮助了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收三、实验要求1.最好采用图形界面;2.可随时增加进程;3.规定道数,设置后备队列和阻塞状态。若内存中进程少于规定道数,可自动从后备队4.列中调
2、度作业进入。被阻塞进程入阻塞队列,设置唤醒功能用于将指定阻塞进程唤醒进入就绪队列;5.每次调度完成,显示各进程状态;6.设置至少两个临界资源阻塞队列和公共变量,模拟同步过程;7.设置时间片中断操作;8.自行假设主存空间大小,预设操作系统所占大小并构造未分分区表。9.采用最先适应算法分配主存空间10.进程完成后,分配主存,并与相邻空闲分区合并。四、具体实现将实验一与实验二结合在一起。所以整合成了一分实验报告。在这里统一给出自己实现的思想。1.流程图2.关键代码:1.利用冒泡法实现优先级的排序//优先级的排序publicvoidsort(ArrayListarr
3、aylist){for(inti=0;i4、度作业进入publicvoidcheckPCB(ArrayListready,ArrayListpool){while(ready.size()<4&&pool.size()>0){ready.add(pool.get(0));System.out.println("从后备队列往就绪队列中加入进程");pool.get(0).getAll();pool.remove(0);}}2.内存不够时,移入外存队列publicvoidmove(PCBPCB,ArrayListexternStore,ArrayListPCBready){if(PCB.isGe5、tStore()==false){externStore.add(PCB);PCBready.remove(PCB);}}二、实验总结1.通过此次实验,对于操作系统的模拟有了更深的理解。进程的调度,在开始做第一个实验时,由于设计上的漏洞,导致临界资源一直被占用,结果造成了死锁。在实践中,更加理解了死锁的涵义。同时,也提醒着自己要不断的总结,注意数据结构方面的设计问题。2.对于实验内容的理解,我在这方面产生了点困难。刚开始,不知道如何来模拟临界资源。在请教了老师之后,慢慢开始摸索。3.,接触到第二个实验,对于主存空间的模拟又产生了困难。不知道该用什么来模拟。最终采用了投6、机取巧的方式。用了ArrayList.这样,就不用担心主存的回收问题了。但是这样,不太符合实际情况。三、源代码packageos_check_1;importjava.util.ArrayList;importjava.util.Scanner;publicclassCPU{staticbooleansource=false;staticArrayListPCBready=newArrayList();//这里才是真正的就绪队列staticArrayListpoolQueue=newArrayList();//后备队列stati7、cArrayListblockQueue=newArrayList();//阻塞队列staticArrayListendQueue=newArrayList();//结束队列staticArrayListexternStore=newArrayList();//放入外存的队列PCBinitpi=newPCBinit();Scannersc=newScanner(System.in);MainStorems=newMainStore();CPU(){this.PCBready=pi.PCBre
4、度作业进入publicvoidcheckPCB(ArrayListready,ArrayListpool){while(ready.size()<4&&pool.size()>0){ready.add(pool.get(0));System.out.println("从后备队列往就绪队列中加入进程");pool.get(0).getAll();pool.remove(0);}}2.内存不够时,移入外存队列publicvoidmove(PCBPCB,ArrayListexternStore,ArrayListPCBready){if(PCB.isGe
5、tStore()==false){externStore.add(PCB);PCBready.remove(PCB);}}二、实验总结1.通过此次实验,对于操作系统的模拟有了更深的理解。进程的调度,在开始做第一个实验时,由于设计上的漏洞,导致临界资源一直被占用,结果造成了死锁。在实践中,更加理解了死锁的涵义。同时,也提醒着自己要不断的总结,注意数据结构方面的设计问题。2.对于实验内容的理解,我在这方面产生了点困难。刚开始,不知道如何来模拟临界资源。在请教了老师之后,慢慢开始摸索。3.,接触到第二个实验,对于主存空间的模拟又产生了困难。不知道该用什么来模拟。最终采用了投
6、机取巧的方式。用了ArrayList.这样,就不用担心主存的回收问题了。但是这样,不太符合实际情况。三、源代码packageos_check_1;importjava.util.ArrayList;importjava.util.Scanner;publicclassCPU{staticbooleansource=false;staticArrayListPCBready=newArrayList();//这里才是真正的就绪队列staticArrayListpoolQueue=newArrayList();//后备队列stati
7、cArrayListblockQueue=newArrayList();//阻塞队列staticArrayListendQueue=newArrayList();//结束队列staticArrayListexternStore=newArrayList();//放入外存的队列PCBinitpi=newPCBinit();Scannersc=newScanner(System.in);MainStorems=newMainStore();CPU(){this.PCBready=pi.PCBre
此文档下载收益归作者所有