操作系统实验报告-中南大学.docx

上传人:时光煮雨 文档编号:11739978 上传时间:2021-09-02 格式:DOCX 页数:35 大小:107.78KB
返回 下载 相关 举报
操作系统实验报告-中南大学.docx_第1页
第1页 / 共35页
操作系统实验报告-中南大学.docx_第2页
第2页 / 共35页
操作系统实验报告-中南大学.docx_第3页
第3页 / 共35页
操作系统实验报告-中南大学.docx_第4页
第4页 / 共35页
操作系统实验报告-中南大学.docx_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《操作系统实验报告-中南大学.docx》由会员分享,可在线阅读,更多相关《操作系统实验报告-中南大学.docx(35页珍藏版)》请在三一文库上搜索。

1、精选文档操作系统原理试验报告班级:学号:姓名:可编辑实验一: CPU 调度一、实验内容选择一个调度算法,实现处理机调度。二、实验目的多道系统中, 当就绪进程数大于处理机数时, 须按照某种策略决定哪些进程优先占用处理机。本实验模拟实现处理机调度,以加深了解处理机调度的工作。三、实验题目1 、设计一个按优先权调度算法实现处理机调度的程序;2、设计按时间片轮转实现处理机调度的程序。四、实验要求PCB 内容:进程名 /PID ;要求运行时间(单位时间) ;优先权;状态:PCB 指针;1 、可随机输入若干进程,并按优先权排序;2、从就绪队首选进程运行:优先权 -1/ 要求运行时间 -1要求运行时间 =0

2、 时,撤销该进程3、重新排序,进行下轮调度4、最好采用图形界面;5、可随时增加进程;6、规定道数,设置后备队列和挂起状态。若内存中进程少于规定道数,可自动从后备队列调度一作业进入。被挂起进程入挂起队列,设置解挂功能用于将指定挂起进程解挂入就绪队列。7、每次调度后,显示各进程状态。实验二:内存管理一、实验内容主存储器空间的分配和回收二、实验目的帮助了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收。三、实验题目在可变分区管理方式下,采用最先适应算法实现主存空间的分配和回收。四、实验要求1 、自行假设主存空间大小,预设操作系统所占大小并构造未分分区表;表目内容:起址、长度、状态(未分/ 空

3、表目)2 、结合实验一, PCB 增加为:PID ,要求运行时间,优先权,状态,所需主存大小,主存起始位置, PCB 指针 3、采用最先适应算法分配主存空间;4、进程完成后,回收主存,并与相邻空闲分区合并.1 、 Vo 类说明(数据存储结构)进程控制块PCB 的结构:Public class PCB / 进程控制块 PCB ,代表一个进程/ 进程名,作为进程的标识;private String name;/ 要求运行时间,假设进程运行的单位时间数;private int time;/ 赋予进程的优先权,调度时总是选取优先数小的进程先执行;private int priority;/ 状态,假设

4、有“就绪”状态( ready ) 、 “运行”状态( running ) 、/ “后备”状态( waiting ) 、 “挂起”状态(handup)private String state;/ 进程存放在table 中的位置private int start;/ 进程的大小private int length;/ 进程是否进入内存, 1 为进入, 0 为未进入private int isIn;/ 进程在内存中的起始位置private int base;/ 进程的大小;private int limit;/ 一些 get 和 set 方法以及构造器省略2 流程图就缔队列首过程开帕运打时间片翱.玷

5、打SE程己占相.LH;时间加I运行进用的情郛戴畿一,斯需 举行时可被,出道打进和哺 入到就第劭列Jfi程充撤精当明3.源程序核心代码public void display()if(runningList.size()0)jt1.setValueAt(runningList.get(0).getName().trim(),0,0);jt1.setValueAt(runningList.get(0).getIsIn(),0,1);jt1.setValueAt(runningList.get(0).getTime(),0,2);jt1.setValueAt(runningList.get(0).ge

6、tPriority(),0,3);jt1.setValueAt(runningList.get(0).getStart(),0,4);jt1.setValueAt(runningList.get(0).getLength(),0,5);elsejt1.setValueAt( 无进程 ,0,0);jt1.setValueAt( 进行 ,0,1);jt1.setValueAt(null,0,2);jt1.setValueAt(null,0,3);jt1.setValueAt(null,0,4);jt1.setValueAt(null,0,5);/for(int i =0; i readyList.

7、size(); i+)jt2.setValueAt(readyList.get(i).getName().trim(),i,0);jt2.setValueAt(readyList.get(i).getIsIn(),i,1);jt2.setValueAt(readyList.get(i).getTime(),i,2);jt2.setValueAt(readyList.get(i).getPriority(),i,3);jt2.setValueAt(readyList.get(i).getStart(),i,4);jt2.setValueAt(readyList.get(i).getLength(

8、),i,5);for(int j = readyList.size(); j 6; j+)jt2.setValueAt(null,j,0);jt2.setValueAt(null,j,1);jt2.setValueAt(null,j,2);jt2.setValueAt(null,j,3);jt2.setValueAt(null,j,4);jt2.setValueAt(null,j,5);/for(int i =0; i waitingList.size(); i+)jt3.setValueAt(waitingList.get(i).getName().trim(),i,0);jt3.setVa

9、lueAt(waitingList.get(i).getIsIn(),i,1);jt3.setValueAt(waitingList.get(i).getTime(),i,2);jt3.setValueAt(waitingList.get(i).getPriority(),i,3);jt3.setValueAt(waitingList.get(i).getStart(),i,4);jt3.setValueAt(waitingList.get(i).getLength(),i,5);for(int j = waitingList.size(); j 15; j+)jt3.setValueAt(n

10、ull,j,0);jt3.setValueAt(null,j,1);jt3.setValueAt(null,j,2);jt3.setValueAt(null,j,3);jt3.setValueAt(null,j,4);jt3.setValueAt(null,j,5);/for(int i =0; i handupList.size(); i+)jt4.setValueAt(handupList.get(i).getName().trim(),i,0);jt4.setValueAt(handupList.get(i).getIsIn(),i,1);jt4.setValueAt(handupLis

11、t.get(i).getTime(),i,2);jt4.setValueAt(handupList.get(i).getPriority(),i,3);jt4.setValueAt(handupList.get(i).getStart(),i,4);jt4.setValueAt(handupList.get(i).getLength(),i,5);for(int j = handupList.size(); j 15; j+)jt4.setValueAt(null,j,0);jt4.setValueAt(null,j,1);jt4.setValueAt(null,j,2);jt4.setVal

12、ueAt(null,j,3);jt4.setValueAt(null,j,4);jt4.setValueAt(null,j,5);jl1.setCellRenderer(new MyRenderer();for(int i = 0; i 0&runningList.get(0).getIsIn()=1)runningList.get(0).setTime(runningList.get(0).getTime()-1);if(runningList.get(0).getPriority()=1)runningList.get(0).setPriority(runningList.get(0).g

13、etPriority()-1);if(runningList.get(0).getTime()0&runningList.get(0).getIsIn()=1)runningList.get(0).setTime(runningList.get(0).getTime()-1);if(runningList.get(0).getTime()=0)putOutMemory(runningList,0);if(runningList.get(0).getPriority()=1)runningList.get(0).setPriority(runningList.get(0).getPriority

14、()-1);/public class MyRunnable implements Runnablepublic void run()while(true)timeManager();tryThread.sleep(1000);ex)catch(InterruptedException精选文档/public class MyRunnable1 implements Runnablepublic void run() while(true)PManager();tryThread.sleep(1000);catch(InterruptedExceptionex)/得 到 list 中 优 先 权

15、 最 高 的/public int getFirstW(ArrayList list)if(list.size()0)int min = 0;for(int i = 1;i list.get(i).getPriority()min = i;可编辑精选文档min+;return min;elsereturn 0;/删 除 列 表 中 第 几 个 数 据/public void update(ArrayList list, int num)sList.clear();for(int i = 0; i list.size(); i+)if(i != num)sList.add(list.get(i)

16、;list.clear();for(int i = 0; i sList.size();i+)list.add(sList.get(i);public void update1(ArrayList list, int num)sList1.clear();for(int i = 0; i list.size(); i+)if(i != num)sList1.add(list.get(i);list.clear();for(int i = 0; i 0)if(runningList.get(0).getIsIn()=0)for(int i = 0; i =if(unAssignList.get(

17、i).getLimit()runningList.get(0).getLength()runningList.get(0).setStart(unAssignList.get(i).getBase();runningList.get(0).setIsIn(1);if(unAssignList.get(i).getLimit()runningList.get(0).getLength()update1(unAssignList,i);elseunAssignList.get(i).setBase(unAssignList.get(i).getBase()+runningList.get(0).g

18、et Length();unAssignList.get(i).setLimit(unAssignList.get(i).getLimit()-runningList.get(0).get Length();break;if(readyList.size()0)for(int j = 0; j readyList.size(); j+)if(readyList.get(j).getIsIn()=0)for(int i = 0; i =j).getLeunAssignList.get(i).setLimit(unAssignList.get(i).getLimit()-readyList.get

19、(j).getLength();break;/public void putOutMemory(ArrayList list, int num)list.get(num).setIsIn(0);boolean flag1 = false;boolean flag2 = false;for(int i = 0; i unAssignList.size(); i+)if(unAssignList.get(i).getBase()(list.get(num).getLength()+list.get(num).getStart()unAssignList.get(i).setBase(list.ge

20、t(num).getStart();unAssignList.get(i).setLimit(list.get(num).getLength()+unAssignList.get(i).getLi mit();flag1 = true;break;for(int i = 0; i unAssignList.size(); i+)if(unAssignList.get(i).getBase()+unAssignList.get(i).getLimit()list.get(num).getStart()if(!flag1)unAssignList.get(i).setLimit(list.get(

21、num).getLength()+unAssignList.get(i).getLi mit();flag2 = true;break;elseunAssignList.get(i).setLimit(unAssignList.get(i).getLimit()+unAssignList.get(i+1) .getLimit();update1(unAssignList,i+1);if(flag1 | flag2)elseint i = 0;while(unAssignList.get(i).getBase()list.get(num).getStart()i+;Data_Memory dat

22、a = new Data_Memory();data.setBase(list.get(num).getStart();data.setLimit(list.get(num).getLength();sList1.clear();for(int j = 0; j i; j+)sList1.add(unAssignList.get( j);sList1.add(data);for(int j = i; j unAssignList.size(); j+)sList1.add(unAssignList.get( j);unAssignList.clear();for(int j = 0; j sL

23、ist1.size(); j+)unAssignList.add(sList1.get(j);/JLISTprivate class MyRenderer extends DefaultListCellRendererObjectindex,public Component getListCellRendererComponent(JListlist,value,int index, boolean isSelected, boolean cellHasFocus)super.getListCellRendererComponent(list,value,isSelected,cellHasF

24、ocus);setBackground(Color.gray);for(int i = 0; i 0)if(runningList.get(0).getTime()=0)runningList.clear();可编辑精选文档sList.clear();for(int i = 0; i 0)sList.add(readyList.get(i);readyList.clear();for(int i =0; i sList.size();i+)readyList.add(sList.get(i);readyList.get(i).setState(ready);/ 从 waiting 队列加入新的

25、进程int j = 0;int m = readyList.size();for(; m 6 & j waitingList.size(); m+,j+)readyList.add(waitingList.get(j);readyList.get(m).setState(ready);/ sort(readyList);/调整 waitingListsList.clear();for(int i = j; i waitingList.size(); i+)sList.add(waitingList.get(i);waitingList.clear();for(int i =0; i 0)run

26、ningList.add(readyList.get(0);runningList.get(0).setState(running);update(readyList,0);if(waitingList.size()0)readyList.add(waitingList.get(0);readyList.get(5).setState(ready);update(waitingList,0);else /if(runningList.size()0)if(readyList.size()0)readyList.add(runningList.get(0);runningList.clear()

27、;readyList.get(0).setState(running);readyList.get(readyList.size()-1).setState(ready);runningList.add(readyList.get(0);update(readyList,0);putInMemory();sub();display();jtf1.grabFocus();public void PManager()if(runningList.size()0)if(runningList.get(0).getTime()=0)runningList.clear();sList.clear();f

28、or(int i = 0; i 0)sList.add(readyList.get(i);readyList.clear();for(int i =0; i sList.size();i+)readyList.add(sList.get(i);readyList.get(i).setState(ready);/ 从 waiting 队列加入新的进程int j = 0;int m = readyList.size();for(; m 6 & j 0)runningList.add(readyList.get(getFirstW(readyList)-1);runningList.get(0).s

29、etState(running);update(readyList,getFirstW(readyList)-1);if(waitingList.size()0)readyList.add(waitingList.get(getFirstW(waitingList)-1);readyList.get(readyList.size()-1).setState(ready);update(waitingList,getFirstW(waitingList)-1);elseif(readyList.size()0)boolean flag = false;int a = runningList.ge

30、t(0).getPriority();int b = readyList.get(getFirstW(readyList)-1).getPriority();if(a b)sList.clear();sList.add(readyList.get(getFirstW(readyList)-1);flag = true;if(flag)runningList.get(0).setState(ready);readyList.add(runningList.get(0);runningList.clear();runningList.add(sList.get(0);runningList.get(0).setState(running);update(readyList,getFirstW(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1