ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:96.07KB ,
资源ID:6622311      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6622311.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统B实验报告华北电力大学科技学院.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统B实验报告华北电力大学科技学院.docx

1、操作系统B实验报告华北电力大学科技学院课程设计报告( 2012- 2013年度第1学期)名 称: 操作系统原理课程设计B 院 系: 科技学院信息工程系 班 级: 学 号: 学生姓名: 指导教师: 设计周数: 4 成 绩: 日期: 年 月 日操作系统原理课程设计B课程设计任 务 书一、 目的与要求1. 理解和掌握操作系统的基本概念、基本组成与工作原理;2. 理解和掌握操作系统中主要功能模块的工作原理及其实现算法;3. 掌握软件模块设计技能;熟悉并能较好地利用软件开发环境独立编程、调试和分析程序运行情况,逐渐形成创新思维和从事系统软件的研究和开发能力。二、 主要内容采用某种程序设计语言,设计与开发

2、一个仿真操作系统,要求具备进程调度、存储器管理、文件及设备管理等基本功能,具体内容包括:1. 模拟单处理器系统的进程调度,加深对进程的概念及进程调度算法的理解;2. 编写一个多线程程序,加深对现代操作系统中线程的理解;3. 编写和调试一个银行家算法程序,加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法;4. 用可变分区算法模拟主存的分配和回收,加深对存储器管理的理解,熟悉各种主存分配方法;5. 模拟虚拟存储管理中缺页中断及页面置换算法,加深对虚拟存储器管理的理解,熟悉各种页面淘汰算法;模拟设备的分配与回收,加深对设备管理的理解;模拟文件管理的工作过程,从而对各种文

3、件操作命令的实质内容和执行过程有比较深入的了解;模拟磁盘调度的过程,加深对磁盘存储器管理的理解,熟悉各种磁盘调度算法。6. 综合以上实验的结果,并进行集成与设计,开发出一个小型虚拟操作系统。对以上课程设计内容,将根据学生的专业与实际情况进行调整,某些题目为选作题目。三、 进度计划序号设计(实验)内容完成时间备注1熟悉开发环境及程序设计语言1天2系统的分析、设计2天3调试与集成1天4验收,提交实验报告1天四、 设计(实验)成果要求至少完成主要内容中的3项,统一使用课程设计报告书,文字清楚、工整。五、 考核方式实验结果(60)+实验报告(30)+实验过程表现(10)学生姓名:指导教师:年 月 日一

4、、课程设计(综合实验)的目的与要求1. 理解和掌握操作系统的基本概念、基本组成与工作原理;2. 理解和掌握操作系统中主要功能模块的工作原理及其实现算法;3. 掌握软件模块设计技能;熟悉并能较好地利用软件开发环境独立编程、调试和分析程序运行情况,逐渐形成创新思维和从事系统软件的研究和开发能力。二、设计正文实验1:单处理器系统的进程调度1.1实验目的在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实验模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度的工作。1.2实验要求1设计一个按时间片轮转法

5、实现处理器调度的程序,每个程序由一个PCB表示。2程序执行中应能在屏幕上显示出各进程的状态变化,以便于观察调度的整个过程。1.3实验原理和设计进程控制块PCB的格式为:进程名指针要求运行时间已运行时间状态指针进程按顺序排成循环队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程的指针指出第一个进程的进程控制块首地址。要求运行时间假设进程需要运行的单位时间数。已运行时间假设进程已经运行的单位时间数,初始值为“0”。状态有两种状态,“就绪”和“结束”,初始状态都为“就绪”,用0表示。当一个进程运行结束后,它的状态为“结束”,用1表示。(1) 运行处理器调度程序前,输入进程数并且为每个进程设

6、置所需的服务时间;(2) 把各个进程按顺序排成循环队列,用指针指出队列连接情况;(3)由于是模拟程序,在时间片轮转的前提下,每次使得相应进程:执行时间=已执行时间+1;(4)输出运行细节。1.4实验结果 附加程序:#includeusing namespace std;typedef struct PCB int id; /进程名字p1、p2、p3、p4、p5struct PCB *next;/指针指向下一个位置int runtime; /运行时间int priority;/优先级char status;/状态*pcb;void create(PCB *h) int a,b; /a运行时间、b

7、进程优先级 h-next=NULL; for(int i=0;i5;i+)cout-Pi+1 :ab;PCB *p=new PCB;PCB *q=h-next;p-id=i+1; p-runtime=a;p-priority=b;p-status=R;if(q=NULL)|(p-priorityq-priority)p-next=h-next;h-next=p; continue; while(p-prioritynext-priority)&(q-next!=NULL)q=q-next; p-next=q-next;q-next=p; void sort(PCB *h)if(h-next-r

8、untime=0)h-next-status=E;h-next=h-next-next;return;PCB *p=h-next; h-next=p-next; PCB *q=h-next; if(q=NULL)|(p-priorityq-priority)p-next=h-next;h-next=p; return; while(q-next!=NULL)&(p-prioritynext-priority)q=q-next;p-next=q-next;q-next=p;void call(PCB *h)cout调用 Pnext-idnext-runtime-;h-next-priority-

9、; void show(PCB *h) PCB *p=h-next;while(p!=NULL)cout pid runtime priority status endl;cout- next;void main()cout * 请输入各个进程的运行时间及其优先级 *next!=NULL) call(h); sort(h); show(h);实验二 银行家算法实验一、实验目的 熟悉银行家算法,理解系统产生死锁的原因及避免死锁的方法,加深记意。二、实验要求 用高级语言编写和调试一个描述银行家算法的程序。设计五个进程P0,P1,P2,P3,P4共享三类资源A,B,C的系统,A,B,C的资源数量分别

10、为10,5,7。进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。要求程序具有显示和打印各进程的某一时刻的资源分配表和安全序列;显示和打印各进程依次要求申请的资源号以及为某进程分配资源后的有关资源数据。三、实验原理利用银行家算法避免死锁1、银行家算法中的数据结构(1)可利用资源向量Available(2)最大需求规阵Max(3)分配矩阵Allocation(4)需求矩阵Need2、银行家算法(1)如果Requesti或=Need,则转向步骤2;否则,认为出错,因为它所需要的资源数已超过它所宣布的最大值。(2)如果Request或=Available,则转向步骤(3);否则,表示

11、系统中尚无足够的资源,P1必须等待。(3)系统试探把要求的资源分配给进程Pi,并修改下面数据结构中的数值:Available:=Available-Requesti;Allocation:=Allocationi+Request;Needi:=Needi-request;(4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。3、安全性算法系统所执行的安全性算法可描述如下:(1)设置两个向量工作向量Work。它表示系统可提供进程继续运行所需要的各类资源数目,它含有m个元素,执行安全算法开始时,Work:=Allocation;Finish。它表示系统是否有足够的资源分配给进程,使之

12、运行完成,开始时先做Finishi:=false;当有足够资源分配给进程时,令Finishi:=true。(2)从进程集合中找到一个能满足下述条件的进程:Finishi:=falseNeedAvailable(2,3,0),让P4等待。(4) P0请求资源P0发出请求向量Request0(0,2,0),系统按银行家算法进行检查:(1)Request0(o,2,0)或=Need0(7,4,3);(5)进行安全性检查可用资源Available2,1,0已不能满足任何进程的需要,故系统进入不安全状态,此时系统不分配资源。如果在银行家算法中,把P0发出的请求向量改为Request(0,1,0),系统是

13、否能将资源分配给它,请读者考虑四、实验所需仪器、设备、材料PC机五、实验思路银行家算法的基本思想是分配资源之前, 判断系统是否是安全的; 若是, 才分配。它是最具有代表性的避免死锁的算法。 设进程cusneed 提出请求REQUEST i ,则银行家算法按如下规则进行判断。 (1) 如果REQUEST cusneed i= NEEDcusneedi ,则转(2) ;否则,出错。 (2) 如果REQUEST cusneed i= AVAILABLEcusneedi ,则转(3) ;否则,出错。 (3) 系统试探分配资源,进(4) 系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统

14、恢复 原状程等待安全性检查算法 (1) 设置两个工作向量Work=AVAILABLE;FINISH (2) 从进程集合中找到一个满足下述条件的进程, FINISH=false; NEED=Work; 如找到,执行(3) ;否则,执行(4) (3) 设进程获得资源,可顺利执行,直至完成,从而释放资源。 Work+=ALLOCATION; Finish=true; (4) 如所有的进程Finish= true ,则表示安全;否则系统不安全六、实验结果#includeusing namespace std;#include#include#define False 0#define True 1in

15、t Max100100=0;/各进程所需各类资源的最大需求int Avaliable100=0;/系统可用资源char name100=0;/资源的名称int Allocation100100=0;/系统已分配资源int Need100100=0;/还需要资源int Request100=0;/请求资源向量int temp100=0;/存放安全序列int Work100=0;/存放系统可提供资源int M=100;/作业的最大数为100int N=100;/资源的最大数为100void showdata()/显示资源矩阵 int i,j; cout系统目前可用的资源Avaliable:endl

16、; for(i=0;iN;i+) coutnamei ; coutendl; for (j=0;jN;j+) coutAvaliablej ;/输出分配资源 coutendl; cout Max Allocation Needendl; cout进程名 ; for(j=0;j3;j+) for(i=0;iN;i+) coutnamei ; cout ; coutendl; for(i=0;iM;i+) cout i ; for(j=0;jN;j+) coutMaxij ; cout ; for(j=0;jN;j+) coutAllocationij ; cout ; for(j=0;jN;j+

17、) coutNeedij ; coutendl; int safe()/安全性算法int i,k=0,m,apply,Finish100=0;int j;int flag=0;Work0=Avaliable0;Work1=Avaliable1;Work2=Avaliable2;for(i=0;iM;i+) apply=0; for(j=0;jN;j+) if (Finishi=False&Needij=Workj) apply+;/只有apply为n时才能进行分配 if(apply=N) for(m=0;mN;m+) Workm=Workm+Allocationim;/变分配数 Finishi

18、=True;/把完成的进程标志位1 tempk=i;/记录符合条件的是哪一组 i=-1; k+; flag+; for(i=0;iM;i+) if(Finishi=False) cout系统不安全endl;/不成功系统不安全 return -1; cout系统是安全的!endl;/如果安全,输出成功 cout分配的序列:;for(i=0;iM;i+)/输出运行进程数组 couttempi; if(iM-1) cout; coutendl; return 0;int main()/主函数 int i,j,number,m,n,flag;char ming;coutn;N=n;for(i=0;in

19、;i+) cout资源i+1ming; namei=ming; coutnumber; Avaliablei=number;coutendl;coutm;M=m;cout请输入各进程的最大需求量(m*n矩阵)Max:endl;for(i=0;im;i+) for(j=0;jMaxij;do flag=0; cout请输入各进程已经申请的资源量(m*n矩阵)Allocation:endl; for(i=0;im;i+) for(j=0;jAllocationij; if(AllocationijMaxij) flag=1; Needij=Maxij-Allocationij; if(flag)

20、cout申请的资源大于最大需求量,请重新输入!n;while(flag); showdata();/显示各种资源 safe();/用银行家算法判定系统是否安全 return 1;实验3:主存储器空间的分配和回收 3.1实验目的一个好的计算机系统不仅要有一个足够容量的、存取速度高的、稳定可靠的主存储器,而且要能合理地分配和使用这些存储空间。当用户提出申请存储器空间时,存储管理必须根据申请者的要求,按一定的策略分析主存空间的使用情况,找出足够的空闲区域分配给申请者。当作业撤离或主动归还主存资源时,则存储管理要收回作业占用的主存空间或归还部分主存空间。主存的分配和回收的实现虽与主存储器的管理方式有关

21、的,通过本实验帮助学生理解在不同的存储管理方式下应怎样实现主存空间的分配和回收。3.2实验要求1在可变分区管理方式下采用最先适应算法实现主存分配和实现主存回收。2打印空闲区说明表的初始状态,作业4的申请量以及为作业4分配后的空闲区说明表状态;再依次打印作业3和作业2的归还量以及回收作业3,作业2所占主存后的空闲区说明表。3.3实验原理和设计1. 可变分区方式是按作业需要的主存空间大小来分割分区的。当要装入一个作业时,根据作业需要的主存量查看是否有足够的空闲空间,若有,则按需要量分割一个分区分配给该作业;若无,则作业不能装入。随着作业的装入、撤离,主存空间被分成许多个分区,有的分区被作业占用,而

22、有的分区是空闲的。例如:05k10k14k26k32k128k操作系统作业1作业3空闲区作业2空闲区其中,起址指出一个空闲区的主存起始地址。 长度指出从起始地址开始的一个连续空闲的长度。3.4实验结果附加程序#includeusing namespace std;int TABLE42=0,512;/TABLE=起始地址,长度int WORK83=300,1,0,100,2,0,300,1,1,150,3,0,30,4,0,40,5,0,60,6,0,30,4,1;/WORKE=作业大小,作业次序/起始地址,操作类型(0申请/1释放)int i,j,k,flag=1,now,temp2,onc

23、e=0;/now 当前作业,temp2交换变量,once执行申请变量,i,j,k循环变量void first_01()/TABLE 功能的实现:申请作业功能 once=0; for(i=0;i=WORKnow0) TABLEi0=TABLEi0+WORKnow0; TABLEi1=TABLEi1-WORKnow0; for(j=now;j8;j+) if(WORKj2=1&WORKnow2=0&WORKj1=WORKnow1) WORKj1=TABLEi0; /释放作业的起始地址 WORKnow1=TABLEi0-WORKnow0;/申请作业的起始地址 once=1; void first_02()/TABLE 功能的实现:释放作业功能 j=0; for(i=0;iflag;i+) if(WORKnow1=TABLEi0)/初始地址重复 TABLEi0=TABLEi0-WORKnow0; TABLEi1=TABLEi1+WORKnow0; else j+; if(j=flag)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1