欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载  

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

    • 资源ID:11739978       资源大小:107.78KB        全文页数:35页
    • 资源格式: DOCX        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    精选文档操作系统原理试验报告班级:学号:姓名:可编辑实验一: CPU 调度一、实验内容选择一个调度算法,实现处理机调度。二、实验目的多道系统中, 当就绪进程数大于处理机数时, 须按照某种策略决定哪些进程优先占用处理机。本实验模拟实现处理机调度,以加深了解处理机调度的工作。三、实验题目1 、设计一个按优先权调度算法实现处理机调度的程序;2、设计按时间片轮转实现处理机调度的程序。四、实验要求PCB 内容:进程名 /PID ;要求运行时间(单位时间) ;优先权;状态:PCB 指针;1 、可随机输入若干进程,并按优先权排序;2、从就绪队首选进程运行:优先权 -1/ 要求运行时间 -1要求运行时间 =0 时,撤销该进程3、重新排序,进行下轮调度4、最好采用图形界面;5、可随时增加进程;6、规定道数,设置后备队列和挂起状态。若内存中进程少于规定道数,可自动从后备队列调度一作业进入。被挂起进程入挂起队列,设置解挂功能用于将指定挂起进程解挂入就绪队列。7、每次调度后,显示各进程状态。实验二:内存管理一、实验内容主存储器空间的分配和回收二、实验目的帮助了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收。三、实验题目在可变分区管理方式下,采用最先适应算法实现主存空间的分配和回收。四、实验要求1 、自行假设主存空间大小,预设操作系统所占大小并构造未分分区表;表目内容:起址、长度、状态(未分/ 空表目)2 、结合实验一, PCB 增加为:PID ,要求运行时间,优先权,状态,所需主存大小,主存起始位置, PCB 指针 3、采用最先适应算法分配主存空间;4、进程完成后,回收主存,并与相邻空闲分区合并.1 、 Vo 类说明(数据存储结构)进程控制块PCB 的结构:Public class PCB / 进程控制块 PCB ,代表一个进程/ 进程名,作为进程的标识;private String name;/ 要求运行时间,假设进程运行的单位时间数;private int time;/ 赋予进程的优先权,调度时总是选取优先数小的进程先执行;private int priority;/ 状态,假设有“就绪”状态( 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 流程图就缔队列首过程开帕运打时间片翱.玷打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).getPriority(),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.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(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.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(int j = waitingList.size(); j < 15; 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(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(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(int j = handupList.size(); j < 15; 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(new MyRenderer();for(int i = 0; i < unAssignList.size(); i+)System.out.print(unAssignList.get(i).getBase()+"");System.out.println(unAssignList.get(i).getLimit();System.out.println("one");System.out.println();/ 时间和优先级减一public void sub()if(runningList.size()>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).getPriority()-1);if(runningList.get(0).getTime()<0)runningList.get(0).setTime(0);if(runningList.get(0).getTime()=0)putOutMemory(runningList,0);public void sub1()if(runningList.size()>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()<15)if(runningList.get(0).getPriority()>=1)runningList.get(0).setPriority(runningList.get(0).getPriority()-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 中 优 先 权 最 高 的/public int getFirstW(ArrayList<Data> list)if(list.size()>0)int min = 0;for(int i = 1;i<list.size();i+ )if(list.get(min).getPriority() > list.get(i).getPriority()min = i;可编辑精选文档min+;return min;elsereturn 0;/删 除 列 表 中 第 几 个 数 据/public void update(ArrayList<Data> list, int num)sList.clear();for(int i = 0; i < list.size(); i+)if(i != num)sList.add(list.get(i);list.clear();for(int i = 0; i < sList.size();i+)list.add(sList.get(i);public void update1(ArrayList<Data_Memory> 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 < sList1.size();i+)list.add(sList1.get(i);/public void putInMemory()if(runningList.size()>0)if(runningList.get(0).getIsIn()=0)for(int i = 0; i < unAssignList.size(); i+)>=if(unAssignList.get(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).get 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 < unAssignList.size(); i+)if(unAssignList.get(i).getLimit()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(ngth();>=j).getLeunAssignList.get(i).setLimit(unAssignList.get(i).getLimit()-readyList.get(j).getLength();break;/public void putOutMemory(ArrayList<Data> 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.get(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(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 data = 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 < sList1.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,cellHasFocus);setBackground(Color.gray);for(int i = 0; i < unAssignList.size(); i+)for(int j = unAssignList.get(i).getBase();unAssignList.get(i).getLimit()+unAssignList.get(i).getBase(); j+)if(index = j)setBackground(Color.white);/ 当没有内容变为白色return this;/public void timeManager(), 调整/ 去掉 time=0 的,从 waiting 队列加入新的进程,排序waitingList 加入 runningLIst/ 去掉 time=0 的if(runningList.size()>0)if(runningList.get(0).getTime()=0)runningList.clear();可编辑精选文档sList.clear();for(int i = 0; i < readyList.size(); i+)if(readyList.get(i).getTime()>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 < 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 < sList.size();i+)waitingList.add(sList.get(i);/加入 runningLIstif(runningList.size()=0)if(readyList.size()>0)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();public void PManager()if(runningList.size()>0)if(runningList.get(0).getTime()=0)runningList.clear();sList.clear();for(int i = 0; i < readyList.size(); i+)if(readyList.get(i).getTime()>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 < waitingList.size(); m+,j+)readyList.add(waitingList.get(getFirstW(waitingList)-1);readyList.get(m).setState("ready");update(waitingList,getFirstW(waitingList)-1);/调整 waitingList/加入 runningLIstif(runningList.size()=0)if(readyList.size()>0)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);elseif(readyList.size()>0)boolean flag = false;int a = runningList.get(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(

    注意事项

    本文(操作系统实验报告-中南大学.docx)为本站会员(时光煮雨)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




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

    三一文库
    收起
    展开