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

上传人:痛*** 文档编号:127000612 上传时间:2022-07-29 格式:DOCX 页数:10 大小:50.22KB
返回 下载 相关 举报
操作系统实验报告-中南大学_第1页
第1页 / 共10页
操作系统实验报告-中南大学_第2页
第2页 / 共10页
操作系统实验报告-中南大学_第3页
第3页 / 共10页
点击查看更多>>
资源描述
操作系统原理试验报告班级:学号:姓名:实验一:CPU调度一、实验内容选择一个调度算法,实现处理机调度。二、实验目的多道系统中,当就绪进程数大于处理机数时,须按照某种策略决定哪些进程优先占用处理机。本实验模拟实现处理机调度,以加深了解处理机调度的工作。三、实验题目1、设计一个按优先权调度算法实现处理机调度的程序;2、设计按时间片轮转实现处理机调度的程序。四、实验要求PCB内容:进程名/PID;要求运行时间(单位时间);优先权;状态:PCB指针;1、可随机输入若干进程,并按优先权排序;2、从就绪队首选进程运行:优先权-1/要求运行时间-1要求运行时间=0时,撤销该进程3、重新排序,进行下轮调度4、最好采用图形界面;5、可随时增加进程;6、规定道数,设置后备队列和挂起状态。若内存中进程少于规定道数,可自动从后备队列调度一作业进入。被挂起进程入挂起队列,设置解挂功能用于将指定挂起进程解挂入就绪队列。7、每次调度后,显示各进程状态。实验二:内存管理、实验内容主存储器空间的分配和回收、实验目的帮助了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收。、实验题B在可变分区管理方式下,采用最先适应算法实现主存空间的分配和回收。四、实验要求1、自行假设主存空间大小,预设操作系统所占大小并构造未分分区表;表目内容:起址、长度、状态(未分/空表目)2、结合实验一,PCB增加为:(PID,要求运行时间,优先权,状态,所需主存大小,主存起始位置,PCB指针3、采用最先适应算法分配主存空间;4、进程完成后,回收主存,并与相邻空闲分区合并.1、Vo类说明(数据存储结构)进程控制块PCB的结构:PublicclassPCB(/进程控制块PCB,代表一个进程/进程名,作为进程的标识;privateStringname;/要求运行时间,假设进程运行的单位时间数;privateinttime;/赋予进程的优先权,调度时总是选取优先数小的进程先执行;privateintpriority;/状态,假设有就绪”状态(ready)、运行状态(running)、/后备”状态(waiting)、挂起状态(handup)privateStringstate;/进程存放在table中的位置privateintstart;/进程的大小privateintlength;/进程是否进入内存,1为进入,0为未进入privateintisIn;/进程在内存中的起始位置privateintbase;/进程的大小privateintlimit;/一些get和set方法以及构造器省略;2流程图3.源程序核心代码publicvoiddisplay()(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).getPriority(),0,3);jt1.setValueAt(runningList.get(0).getStart(),0,4);jt1.setValueAt(runningList.get(0).getLength(),0,5);else(jt1.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);lllllllllllllllllllllllllllllllllllllllllllllllllllfor(inti=0;ireadyList.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(),i,5);for(intj=readyList.size();j6;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(inti=0;iwaitingList.size();i+)(jt3.setValueAt(waitingList.get(i).getName().trim(),i,0);jt3.setValueAt(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(intj=waitingList.size();j15;j+)(jt3.setValueAt(null,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(inti=0;ihandupList.size();i+)(jt4.setValueAt(handupList.get(i).getName().trim(),i,0);jt4.setValueAt(handupList.get(i).getIsIn(),i,1);jt4.setValueAt(handupList.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(intj=handupList.size();j15;j+)(jt4.setValueAt(null,j,0);jt4.setValueAt(null,j,1);jt4.setValueAt(null,j,2);jt4.setValueAt(null,j,3);jt4.setValueAt(null,j,4);jt4.setValueAt(null,j,5);jl1.setCellRenderer(newMyRenderer();for(inti=0;i0&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).getPriority()-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()-1);/publicclassMyRunnableimplementsRunnable(publicvoidrun()(while(true)timeManager();try(Thread.sleep(1000);catch(InterruptedExceptionex)(lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll/自动调度llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllpublicclassMyRunnablelimplementsRunnable(publicvoidrun()(while(true)(PManager();try(Thread.sleep(1000);catch(InterruptedExceptionex)(llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll得到list中优先权最高的llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllpublicintgetFirstW(ArrayListlist)(if(list.size()0)(intmin=0;for(inti=1;ilist.get(i).getPriority()(min=i;min+;returnmin;else(return0;/删除列表中第几个数据/publicvoidupdate(ArrayListlist,intnum)(sList.clear();for(inti=0;ilist.size();i+)(if(i!=num)(sList.add(list.get(i);list.clear();for(inti=0;isList.size();i+)(list.add(sList.get(i);publicvoidupdate1(ArrayListlist,intnum)(sList1.clear();for(inti=0;ilist.size();i+)(if(i!=num)(sList1.add(list.get(i);list.clear();for(inti=0;i0)(if(runningList.get(0).getIsIn()=0)(for(inti=0;i=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);else(unAssignList.get(i).setBase(unAssignList.get(i).getBase()+runningList.get(0).getLength();unAssignList.get(i).setLimit(unAssignList.get(i).getLimit()-runningList.get(0).getLength();break;if(readyList.size()0)(for(intj=0;jreadyList.size();j+)(if(readyList.get(j).getIsIn()=0)(for(inti=0;i=readyList.get(j).getLength()(readyList.get(j).setStart(unAssignList.get(i).getBase();readyList.get(j).setIsIn(1);if(unAssignList.get(i).getLimit()readyList.get(j).getLength()update1(unAssignList,i);elseunAssignList.get(i).setBase(unAssignList.get(i).getBase()+readyList.get(j).getLength();unAssignList.get(i).setLimit(unAssignList.get(i).getLimit()-readyList.get(j).getLength();break;llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll/移除内存lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllpublicvoidputOutMemory(ArrayListlist,intnum)list.get(num).setIsIn(0);booleanflagl=false;booleanflag2=false;for(inti=0;iunAssignList.size();i+)if(unAssignList.get(i).getBase()(list.get(num).getLength()+list.get(num).getStart()unAssignList.get(i).setBase(list.get(num).getStart();unAssignList.get(i).setLimit(list.get(num).getLength()+unAssignList.get(i).getLimit();flagl=true;break;for(inti=0;iunAssignList.size();i+)if(unAssignList.get(i).getBase()+unAssignList.get(i).getLimit()list.get(num).getStart()(if(!flag1)(unAssignList.get(i).setLimit(list.get(num).getLength()+unAssignList.get(i).getLimit();flag2=true;break;else(unAssignList.get(i).setLimit(unAssignList.get(i).getLimit()+unAssignList.get(i+1).getLimit();update1(unAssignList,i+1);if(flag1|flag2)(else(inti=0;while(unAssignList.get(i).getBase()list.get(num).getStart()(i+;Data_Memorydata=newData_Memory();data.setBase(list.get(num).getStart();data.setLimit(list.get(num).getLength();sList1.clear();for(intj=0;ji;j+)(sList1.add(unAssignList.get(j);sList1.add(data);for(intj=i;junAssignList.size();j+)(sList1.add(unAssignList.get(j);unAssignList.clear();for(intj=0;jsList1.size();j+)(unAssignList.add(sList1.get(j);/JLISTprivateclassMyRendererextendsDefaultListCellRenderer(publicComponentgetListCellRendererComponent(JListlist,Objectvalue,intindex,booleanisSelected,booleancellHasFocus)(super.getListCellRendererComponent(list,value,index,isSelected,cellHasFocus);setBackground(Color.gray);for(inti=0;iunAssignList.size();i+)(for(intj=unAssignList.get(i).getBase();j0)if(runningList.get(0).getTime()=0)runningList.clear();sList.clear();for(inti=0;i0)(sList.add(readyList.get(i);readyList.clear();for(inti=0;isList.size();i+)(readyList.add(sList.get(i);readyList.get(i).setState(ready);/从waiting队列加入新的进程intj=0;intm=readyList.size();for(;m6&jwaitingList.size();m+,j+)(readyList.add(waitingList.get(j);readyList.get(m).setState(ready);/sort(readyList);/调整waitingListsList.clear();for(inti=j;iwaitingList.size();i+)(sList.add(waitingList.get(i);waitingList.clear();for(inti=0;i0)(runningList.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();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();publicvoidPManager()(if(runningList.size()0)if(runningList.get(0).getTime()=0)runningList.clear();sList.clear();for(inti=0;i0)(sList.add(readyList.get(i);readyList.clear();for(inti=0;isList.size();i+)(readyList.add(sList.get(i);readyList.get(i).setState(ready);/从waiting队列加入新的进程intj=0;intm=readyList.size();for(;m6&j0)(runningList.add(readyList.get(getFirstW(readyList)-1);runningList.get(0).setState(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);else(if(readyList.size()0)(booleanflag=false;inta=runningList.get(0).getPriority();intb=readyList.get(getFirstW(readyList)-1).getPriority();if(ab)(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(readyList)-1);putInMemory();sub1();display();jtf1.grabFocus();
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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