江苏科技大学操作系统实验_第1页
江苏科技大学操作系统实验_第2页
江苏科技大学操作系统实验_第3页
江苏科技大学操作系统实验_第4页
江苏科技大学操作系统实验_第5页
已阅读5页,还剩149页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

一、实验目的多道程序设计中,经常是若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处理机。因而引起进程调度。本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。2.包含几种调度算法,并加以实现3.输出进程的调度过程——进程的状态、链表等。简化假设1)进程为计算型的(无I/O)3)进程需要的CPU时间以时间片为单位确定1)优先权法——动态优先权当前运行进程用完时间片后,其优先权减去一个常数。2)轮转法键盘输入进程数n,和调度方法的选择NB优先权法?轮转法BY随机数产生进程的优先权及进程所需的CPU时间按优先权大小,把n个进程拉成一个就绪队列初始化其他数据结构区NN链首进程投入运行NN输出个进程的运行情况将进程插入就绪队列将进程插入就绪队列Y撤销进程YBB产生n个进程,对每个进程用随机数产生进程的轮转时间片数及进程所按进程产生的先后次序拉成就绪队列链链首进程投入运行链首进程投入运行输出各进程的运行情况Y进程所需时间片数=0?—→撤销该进程—→NNY把该进程插入就绪队列尾1NY进程名进程状态(1就绪2等待3运行)所需时间优先数(0级最高)输出:进程执行流等待时间,平均等待时间本程序包括:FIFO算法,优先数调度算法,时间片轮转调度算法进程调度创建进程块进程编号服务时间优先级状态随机产生需要时间随即产生优先级初始状态为就绪定义系统处理方法类创建就绪队列随即产生系统时间先来先服务算法就绪队列不为空时间片轮换算法输出信息当前运行进程:需要时间:服务时间:优先级:进程编号:需要时间:服务时间:优先级:当前系统中已经没有就绪进程!主界面菜单进调度算法演示法退出该程序进程调度..实验二银行家算法一、实验目的死锁会引起计算机工作僵死,因此操作系统中必须防止。本实验的目的在于让学生独立的使用高级语言编写和调试一个系统动态分配资源的简单模拟程序,了解死锁产生的条件和原因,并采用银行家算法有效地防止死锁的发生,以加深对课堂上所讲授的知识的理解。系统能显示各个进程申请和释放资源,以及系统动态分配资源的过程,便于用户观察和分析;地改变。如果Available(j)=k,标是系统中现有Rj类资源k个。2.最大需求矩阵Max,这是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max(i,j)=k,表示进程i需要Rj类资源的最大数目为k。3.分配矩阵Allocation,这是一个n×m的矩阵,它定义了系统中的每类资源当前一分配到每一个进程的i,j)=k,表示进程i当前已经分到Rj类资源的数目为k。Allocationi表示进程i的分配向量,有矩阵Allocation的的第i行构成。上述三个矩阵间存在关系:Need(i,j)=Max(i,j)-Allocation(i,ji请求后,系统按下述步骤进行检查:i≤Need,则转向步骤2;否则,认为出错,因为它所请求的资源数已超过它当前的最大3.系统试探性地把资源分配给进程Pi,并修改下面数据结构中的数值:ii4.系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。如果安全才正式将资源分配给进程Pi,以完成本次分配;否则,将试探分配作废,恢复原来的资源分配状态,让进程Pi等待。ABCABCABCABCFinish:它表示系统是否有足够的资源分配给进程,使之运行完成,开始Finish(I)=false;当有足够2.从进程集合中找到一个能满足下述条件的进程。如找到则执行步骤3;否则,执行步骤4;3.当进程Pi获得资源后,可顺利执行直到完成,并释放出分配给它的资源,故应执行4.若所有进程的Finish(i)都为true,则表示系统处于安全状态六、系统流程图输入进程数n,Yi≤nN输入进程i的最大需求向量NYi加1Y所有进程运行N任选一个进程作为YNN该进程已运行输入该进程的资源请求量七.银行家算法程序代码定义最大进程数目定义最大资源类数定义系统可提供给进程继续运行所需的各类资源数目定义进程最大资源需求定义进程当前已用资源数目定义进程需要资源数目定义进程请求资源向量定义进程完成标志定义全局输入流构造函数,初始化各向量请输入当前进程的个数请输入系统资源种类的类数初始化各个数组请输入每个进程最大资源需求量按请输入进程各类资源最大需求量请输入每个进程已分配的各资源数也按照请输入进程各类资源您输入的第个进程所拥有的第个资源数错误请重新输入请输入系统各类资源可用的数目请输入要申请资源的进程号当前共有请输入进程申请的各资源的数量您输入的申请的资源数超过进程的需求量请重新输入您输入的申请数超过系统可用的资源数请重新输入分配给进程成功分配前进程各类资源已分配数量分配前进程各类资源需求数量分配后进程各类资源已分配数量分配后进程各类资源需求数量安全性算法当前系统是安全的存在一安全序列当前系统是不安全的,不存在安全序列八.运行结果实验三存储管理一.实验目的存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。二.实验内容(1)通过计算不同算法的命中率比较算法的优劣。同时也考虑了用户内存容量对命中率的影响。页面失效次数为每次访问相应指令时,该指令所对应的页不在内存中的次数。2)25%的指令是均匀分布在前地址部分3)在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’;5)在后地址[m’+2,319]中随机选取一条指令并执行;C、将指令序列变换称为页地址流(3)计算并输出下属算法在不同内存容量下的命中率。2)最近最少使用算法(LRU4)最少访问页面算法(LFR三.系统框图生成地址流形成地址页号输入算法号SNYNY是否用其他算法继续重新输入存储管理传递数组地址流物理块数缺页数临时变量缺页率产生随机地址流和页面流用户内存及相关数据初始化定义进入内存时间长度数组表示进入内存时间最久的,即最先进去的表示内存中已有当前要调入的页面用户内存中存在空的物理块找到最先进入内存的页面该物理块中页面停留时间置零缺页数物理块中现有页面停留时间dataStrings[blockNum][1]=this.rate+"";}publicvoidLRU(){initialization();tempK=0;if(phyBlock[j]==Addspage[i]this.tempG=j;break;}this.tempF=j;break;}time[tempG]=0;this.tempG=-1;}else{max=time[0];this.tempK=j;max=time[j];}phyBlock[tempK]=Addspage[i];time[tempK]=0;npageNum++;}else{phyBlock[tempF]=Addspage[i];time[tempF]=0;npageNum++;this.tempF=-1;}}time[j]++;}dataStrings[blockNum][2]=this.rate+"";}publicvoidLFR(){initialization();int[]time_lru=newint[32];intmin,max_lru,t;time[i]=0;time_lru[i]=i+1;}this.tempK=0;if(phyBlock[j]==Addspage[i]要求时,先采用将最少使用的间隔时间定位个单位在未达到“一定时间”的进行页面置换计算一定时间间隔内物理块中的页面使用次数应对出现页面使用次数同样少的情况若使用次数同样少,将次数相同的页面按照进行页面置换max_lru=time_lru[tempK];this.tempK=j;max_lru=time_lru[j];}}phyBlock[tempK]=Addspage[i];time_lru[tempK]=0;npageNum++;}}else{phyBlock[tempF]=Addspage[i];time_lru[tempF]=0;npageNum++;}}time_lru[j]++;存储管理importorg.eclipse.swt.widgets.Shell;importorg.eclipse.swt.widgets.Menu;importorg.eclipse.swt.widgets.TableItem;importorg.eclipse.swt.SWT;importorg.eclipse.swt.widgets.MenuItem;importorg.eclipse.swt.widgets.Table;importorg.eclipse.swt.widgets.TableColumn;importorg.eclipse.swt.events.SelectionAdapter;importorg.eclipse.swt.events.SelectionEvent;publicclassManageSWT{protectedShellshell;privateTabletable;publicstaticvoidmain(String[]args){ManageSWTwindow=newManageSWT();window.open();}e.printStackTrace();}}publicvoidopen(){Displaydisplay=Display.getDefault();createContents();shell.open();shell.layout();while(!shell.isDisposed()){if(!display.readAndDispatchdisplay.sleep();}}}protectedvoidcreateContents(){shell=newShell();shell.setSize(450,300);shell.setText("\u5B58\u50A8\u7BA1\u7406");Menumenu=newMenu(shell,SWT.BAR);shell.setMenuBar(menu);MenuItemmenuItem=newMenuItem(menu,SWT.NONE);menuItem.addSelectionListener(newSelectionAdapter(){@OverridepublicvoidwidgetSelected(SelectionEvente){analysis();存储管理});menuItem_1.setText("\u5173\u4E8E");table=newTable(shell,SWT.BORDER|SWT.FULL_SELECTION);table.setBounds(0,0,434,242);table.setHeaderVisible(true);table.setLinesVisible(true);TableColumntblclmnNewColumn=newTableColumn(table,SWT.NONE);tblclmnNewColumn.setWidth(90);tblclmnNewColumn.setText("\u7269\u7406\u5757\u6570");TableColumntblclmnNewColumn_1=newTableColumn(table,SWT.CENTER);tblclmnNewColumn_1.setWidth(100);tblclmnNewColumn_1.setText("\u5148\u8FDB\u5148\u51FA\u7684\u7B97\u6CD5");TableColumntblclmnNewColumn_2=newTableColumn(table,SWT.CENTER);tblclmnNewColumn_2.setWidth(110);tblclmnNewColumn_2.setText("\u6700\u8FD1\u6700\u5C11\u4F7F\u7528\u7B97\u6CD5");TableColumntblclmnLfu=newTableColumn(table,SWT.CENTER);tblclmnLfu.setWidth(110);tblclmnLfu.setText("\u6700\u5C11\u8BBF\u95EE\u9875\u9762\u7B97\u6CD5");}publicvoidanalysis(){table.removeAll();MemoryManage_OperationmOperation=newMemoryManage_Operation();mOperation.setProduceAddstream();String[][]tempStrings=newString[33][4];mOperation.setBlockNum(i);tempStrings[i][0]=i+"K";mOperation.FIFO();mOperation.LRU();五、运行结果.实验四磁盘调度磁盘是高速、大容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,担负着繁重的输入输出工作,在现代计算机系统中往往同时会有若干个要求访问磁盘的输入输出要求。系统可为此需要采用合适的寻道算法,以降低寻道时间。本实验要求学生模拟设计一个磁盘调度程序,观察调度程序的动态运行过程。通过实验让学生理解和掌握磁盘调度的职能。模拟电梯调度算法,对磁盘进行移臂操作问某个磁盘时,其它想访问该磁盘的进程必须等待,直到磁盘一次工作结束。当有多个进程提出输入输出请求而处于等待状态时,可用电梯调度算法从若干个等待访问者中选择一个进程,让它访问磁盘。为此设置“驱动调度”进程。提出使用磁盘(这里我们只要求访问磁道即动态申请访问磁道,为此设置“接受请求”进程。4、为了模拟以上两个进程的执行,可以考虑使用随机数来确定二者的允许顺序,程序结构图参考附格式如下:进程名进程名要求访问的磁道号6、“磁盘调度”的功能是查“请求I/O”表,当有等待访问的进程时,按电梯调度算法(SCAN算假设程序运行前“请求I/O”表中已有若干进程(4~8个)申请访问相应磁道。2、程序中用到的数据结构及其说明。4、实验结果内容如下:打印“请求I/O”表,当前磁道号,移臂方向,被选中的进程名和其要求访问初始化输入在[0,1]区间内的随机数磁盘调度接受请求磁盘调度用来存放磁头的初始位置按顺序依次比较大小把大的数字往前面放磁头向大号移动寻道长度为平均寻道长度为磁盘调度用来存放磁头的初始位置按顺序依次比较大小把大的数字往前面放此循环用来寻找磁头的初始位置被排到了什么磁头向大号移动寻到长度为平均寻到长度为磁盘调度用来判断排序后磁头所在的初始位置的下标按顺序依次比较大小把大的数字往前面放如果磁头的初始位置在最大号此循环用来寻找磁头的初始位置被排到了什么位置用来统计寻到长度}System.out.print(a[m]+"");SUM=SUM+(a[m]-a[mleft]);m=mleft;mleft--;}System.out.print(a[m]+"");}Running=false;SUM=SUM+a[n]-a[mleft];SUM=SUM+a[j]-a[j-1];}平均寻到长度为磁盘调度磁头的初始位置为提示:磁头的序列范围!磁头从小号、先来先服务算法()、最短寻道时间优先算法()、扫描算法()、循环扫描算法()平均寻到长度为实验六模拟文件管理系统对各种文件操作命令的实质内容和执行过程有深入了解使用高级语言编写和调试一个简单的文件系统,达到模拟文件管理工作的目的。(1)设计一个有m个用户的文件系统,每个用户最多可保存n个文件;(2)规定用户在一次运行中只能打开K个文件;(3)系统能检查键入命令的正确性,出错时应能显示出错原因;(4)对文件应能设置保护措施,如只能执行,允许读,允许写等;显示目录内容退出文件系统三、代码.欢迎一号用户使用文件系统。欢迎二号用户使用文件系统。欢迎三号用户使用文件系统。不是合法用户不能使用该文件系统。.现在主目录,请输入需要使用的命输入指令有误。退出系统。现目录为请输入命令结束操作。回到主目录。现目录为请输入命令结束操作。回到主目录。现目录为请输入命令结束操作。回到主目录。操作文件方法请输入需要输入文件内.请输入需要输入文件内.请输入需要输入文件内..初始化文件系统。内含一个主目录,其含个子目录,,。}publicstaticvoidmain(String[]args){fileOSfo=newfileOS();fo.init();booleanisEnter=fo.enter()

温馨提示

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

评论

0/150

提交评论