新版操作系统实验报告_第1页
新版操作系统实验报告_第2页
新版操作系统实验报告_第3页
新版操作系统实验报告_第4页
新版操作系统实验报告_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统实验报告院系:专业:班级:学号:姓名:指导老师:进程调度的模拟与内存管理实验目的在采用多道程序设计的系统中,往往有若干个进程同时处在就绪状态。当就续进程个数不不大于解决器数时,就必须根据某种方略来决定哪些进程优先占用解决器。实验模拟实现解决机调度,以加深理解解决机调度的工作,并体会优先级和时间片轮转调度算法的具体实施办法。协助理解在不同的存储管理方式下,应如何实现主存空间的分派和回收。二、实验规定1、可随机输入若干进程,并按优先权排序;2、从就绪队首选进程运行:优先权-1/规定运行时间-1规定运行时间=0时,撤销该进程3、重新排序,进行下轮调度。4、可随时增加进程;5、规定道数,设立后备队列和挂起状态。若内存中进程少于规定道数,可自动从后备队列调度一作业进入。被挂起进程入挂起队列,设立解挂功效用于将指定挂起进程解挂入就绪队列。6、每次调度后,显示各进程状态。7、自行假设主存空间大小,预设操作系统所占大小并构造未分分区表;表目内容:起址、长度、状态(未分/空表目)8、结合以上实验,PCB增加为:{PID,规定运行时间,优先权,状态,所需主存大小,主存起始位置,PCB指针}9、采用最先适应算法分派主存空间;10、进程完毕后,回收主存,并与相邻空闲分区合并。11、采用图形界面;三、实验内容选择一种调度算法,实现解决机调度。1、设计一种按优先权调度算法实现解决机调度的程序;2、设计准时间片轮转实现解决机调度的程序。3、主存储器空间的分派和回收。在可变分区管理方式下,采用最先适应算法实现主存空间的分派和回收。四、实验原理该模拟系统采用java语言实现,要实现的功效有新建进程、进程调度、挂起进程、解挂进程、删除进程,道数和时间片大小能够由顾客自己调节,有两种调度方略:按优先权调度和准时间片轮转调度。每个进程可能有5种状态:新建(new)、就绪(ready)、运行(running)、阻塞(waiting)、挂起(suspend)。每个状态都有一种队列用来寄存处在该状态的进程,不同的调度方略采用不同的队列实现。当创立进程时,如果内存中的进程数还没达成规定道数,则将新建进程插入就绪队列,如果内存中进程数已经达成规定道数,则插到后备队列,后备队列中的进程的状态为new。CPU每次调度时都从就绪队列中取进程,在进程执行过程中如果下一种操作时IO操作,则将进程插入到waiting队列。在系统运行过程中能够执行进程挂起操作,但执行的挂起操作时系统自动暂停运行,在弹出窗口选择要挂起的进程后,将选中的进程从原来的队列中删除并插入到挂起队列。进行解挂操作时将选中的进程从挂起队列中删除并插入该进程原来所处的队列。按优先级调度:当选择按优先权调度时,全部队列都采用优先队列,优先队列采用一种有序链表实现,进程的优先权值越大代表优先级越高,优先队列中的进程按优先权从大到小排列,当新进程插入时根据该进程的优先权插入到队列中的适宜位置,插入后保持队列按优先权从大到小排列,如果新进程与队列中某个进程优先权值相等,则该新进程插到那个进程背面,以遵照先来先服务的规则。当要从队列中取出进程时总是取队列中第一种进程,由于该进程的优先级最高。准时间片轮转调度:当选择准时间片轮转调度时,全部队列都采用先进先出队列,先进先出队列采用一种普通单向链表实现,当新进程插入时插入到队列的末尾,当要取进程时取队首进程,这样就实现了先进先出。内存管理该实验基于实验一完毕,核心是内存的分派和回收,在实验一的基础上增加内存管理部分,在新建进程的时候增加一种输入内存大小的输入框,在进程进入内存时要分派内存,在进程销毁时要回收内存,如果进入内存时内存局限性,则将进程插入到后备队列等待下次调度。系统维护一种内存表,每个表项代表一种空间,每个空间保存了该空间的起始地址和空间大小以及空间使用状态。初始时只有一种空间,当CPU启动时要分派内存,内存分派采用最先适应算法。回收内存时如果有相邻空闲空间,则要进行空闲空间合并。五、部分源程序publicclassdata{privateStringname;etIsIn()==0) { for(inti=0;i<();i++) { if(i).getLimit()>=(0).getLength()) { (0).setStart(i).getBase()); (0).setIsIn(1); if(i).getLimit()==(0).getLength()) { update1(unAssignList,i); } else { (i).setBase(i).getBase()+(0).getLength()); (i).setLimit(i).getLimit()(0).getLength()); } break; } } } } if()>0) { for(intj=0;j<();j++) { if(j).getIsIn()==0) { for(inti=0;i<();i++) { if(i).getLimit()>=(j).getLength()) { (j).setStart(i).getBase()); (j).setIsIn(1); if(i).getLimit()==(j).getLength()) { update1(unAssignList,i); } else { (i).setBase(i).getBase()+(j).getLength()); (i).setLimit(i).getLimit()(j).getLength()); } break; } } } } } }移除内存publicvoidputOutMemory(ArrayList<Data>list,intnum) { (num).setIsIn(0); booleanflag1=false; booleanflag2=false; for(inti=0;i<();i++) { if(i).getBase()==(num).getLength()+(num).getStart())) { (i).setBase(num).getStart()); (i).setLimit(num).getLength()+(i).getLimit()); flag1=true; break; } } for(inti=0;i<();i++) { if((i).getBase()+(i).getLimit())==(num).getStart()) { if(!flag1) { (i).setLimit(num).getLength()+(i).getLimit()); flag2=true; break; } else { (i).setLimit(i).getLimit()+(i+1).getLimit()); update1(unAssignList,i+1); } } } if(flag1||flag2) {} else { inti=0; while(i).getBase()<(num).getStart()) { i++; } Data_Memorydata=newData_Memory(); (num).getStart()); (num).getLength()); (); for(intj=0;j<i;j++) { (j)); } (data); for(intj=i;j<();j++) { (j)); } (); for(intj=0;j<();j++) { (j)); } } }对内存管理调度的操作privateclassMyRendererextendsDefaultListCellRenderer { publicComponentgetListCellRendererComponent(JListlist,Objectvalue,intindex,booleanisSelected,booleancellHasFocus) { (list,value,index,isSelected,cellHasFocus); setBackground; for(inti=0;i<();i++) { for(intj=(i).getBase()+6;j<(i).getLimit()+(i).getBase()+6;j++) { if(index==j) { setBackground;etTime()==0) (); (); for(inti=0;i<();i++) { if(i).getTime()>0) { (i)); } } (); for(inti=0;i<();i++) { (i)); (i).setState("ready"); } etState("ready"); } etState("running"); update(readyList,0); if()>0) { (0)); (5).setState("ready"); } update(waitingList,0); } } elseetState("running"); ()-1).setState("ready"); (0)); update(readyList,0); } } putInMemory(); sub(); display(); (); } publicvoidPManager() { if()>0) if(0).getTime()==0) (); (); for(inti=0;i<();i++) { if(i).getTime()>0) { (i)); } } (); for(inti=0;i<();i++) { (i)); (i).setState("ready"); } intj=0; intm=(); for(;m<6&&j<();m++,j++) { (getFirstW(waitingList)-1)); (m).setState("ready"); update(waitingList,getFirstW(waitingList)-1); } etState("running"); update(readyList,getFirstW(readyList)-1); if()>0) { (getFirstW(waitingList)-1)); ()-1).setState("ready"); } update(waitingList,getFirstW(waitingList)-1); } } else { if()>0) { booleanflag=false; inta=(0).getPriority(); intb=(getFirstW(readyList)-1).getPriority(); if(a>b) { (); (getFirstW(readyList)-1)); flag=true; } if(flag) { (0).setState("ready"); (0)); (); (0)); (0).

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论