版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告( 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)学生姓名:指导教师:年 月 日一、课程设计(综合实验)的目的与要求1.
4、 理解和掌握操作系统的基本概念、基本组成与工作原理;2. 理解和掌握操作系统中主要功能模块的工作原理及其实现算法;3. 掌握软件模块设计技能;熟悉并能较好地利用软件开发环境独立编程、调试和分析程序运行情况,逐渐形成创新思维和从事系统软件的研究和开发能力。二、设计正文实验1:单处理器系统的进程调度1.1实验目的在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实验模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度的工作。1.2实验要求1设计一个按时间片轮转法实现处理器调度的程序,每个程序由一个P
5、CB表示。2程序执行中应能在屏幕上显示出各进程的状态变化,以便于观察调度的整个过程。1.3实验原理和设计进程控制块PCB的格式为:进程名指针要求运行时间已运行时间状态指针进程按顺序排成循环队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程的指针指出第一个进程的进程控制块首地址。要求运行时间假设进程需要运行的单位时间数。已运行时间假设进程已经运行的单位时间数,初始值为“0”。状态有两种状态,“就绪”和“结束”,初始状态都为“就绪”,用0表示。当一个进程运行结束后,它的状态为“结束”,用1表示。(1) 运行处理器调度程序前,输入进程数并且为每个进程设置所需的服务时间;(2) 把各个进程按
6、顺序排成循环队列,用指针指出队列连接情况;(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进程优先级 h-next=NULL;f
7、or(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-runtime=0)h-next-status=E;
8、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-;void show(PCB *h) PCB *p=h-ne
9、xt;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,5,7。进程可动态地申请资源和释放资源,系统按各进程的申请
10、动态地分配资源。要求程序具有显示和打印各进程的某一时刻的资源分配表和安全序列;显示和打印各进程依次要求申请的资源号以及为某进程分配资源后的有关资源数据。三、实验原理利用银行家算法避免死锁1、银行家算法中的数据结构(1)可利用资源向量Available(2)最大需求规阵Max(3)分配矩阵Allocation(4)需求矩阵Need2、银行家算法(1)如果Requesti或=Need,则转向步骤2;否则,认为出错,因为它所需要的资源数已超过它所宣布的最大值。(2)如果Request或=Available,则转向步骤(3);否则,表示系统中尚无足够的资源,P1必须等待。(3)系统试探把要求的资源分配
11、给进程Pi,并修改下面数据结构中的数值:Available:=Available-Requesti;Allocation:=Allocationi+Request;Needi:=Needi-request;(4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。3、安全性算法系统所执行的安全性算法可描述如下:(1)设置两个向量工作向量Work。它表示系统可提供进程继续运行所需要的各类资源数目,它含有m个元素,执行安全算法开始时,Work:=Allocation;Finish。它表示系统是否有足够的资源分配给进程,使之运行完成,开始时先做Finishi:=false;当有足够资源分配
12、给进程时,令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),系统是否能将资源分配给它,请读者考虑四、实验所需仪器、设备、材料PC机五
13、、实验思路银行家算法的基本思想是分配资源之前, 判断系统是否是安全的; 若是, 才分配。它是最具有代表性的避免死锁的算法。 设进程cusneed 提出请求REQUEST i ,则银行家算法按如下规则进行判断。 (1) 如果REQUEST cusneed i= NEEDcusneedi ,则转(2) ;否则,出错。 (2) 如果REQUEST cusneed i= AVAILABLEcusneedi ,则转(3) ;否则,出错。 (3) 系统试探分配资源,进(4) 系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复 原状程等待安全性检查算法 (1) 设置两个工作向量Work=
14、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 1int Max100100=0;/各进程所需各类资源的最大需求int
15、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; for(i=0;iN;i+) coutnamei ; cout
16、endl; 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+) coutNeedij ; coutendl; int safe
17、()/安全性算法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=True;/把完成的进程标志位1 tempk=i;/记录符合条件
18、的是哪一组 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;i+) cout资源i+1ming; namei=ming; c
19、outnumber; 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) cout申请的资源大于最大需求量,请重新输入!n;while(fl
20、ag); showdata();/显示各种资源 safe();/用银行家算法判定系统是否安全 return 1;实验3:主存储器空间的分配和回收3.1实验目的一个好的计算机系统不仅要有一个足够容量的、存取速度高的、稳定可靠的主存储器,而且要能合理地分配和使用这些存储空间。当用户提出申请存储器空间时,存储管理必须根据申请者的要求,按一定的策略分析主存空间的使用情况,找出足够的空闲区域分配给申请者。当作业撤离或主动归还主存资源时,则存储管理要收回作业占用的主存空间或归还部分主存空间。主存的分配和回收的实现虽与主存储器的管理方式有关的,通过本实验帮助学生理解在不同的存储管理方式下应怎样实现主存空间的
21、分配和回收。3.2实验要求1在可变分区管理方式下采用最先适应算法实现主存分配和实现主存回收。2打印空闲区说明表的初始状态,作业4的申请量以及为作业4分配后的空闲区说明表状态;再依次打印作业3和作业2的归还量以及回收作业3,作业2所占主存后的空闲区说明表。3.3实验原理和设计1. 可变分区方式是按作业需要的主存空间大小来分割分区的。当要装入一个作业时,根据作业需要的主存量查看是否有足够的空闲空间,若有,则按需要量分割一个分区分配给该作业;若无,则作业不能装入。随着作业的装入、撤离,主存空间被分成许多个分区,有的分区被作业占用,而有的分区是空闲的。例如:05k10k14k26k32k128k操作系
22、统作业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,once=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&WOR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年陕西省西安市长安区中考语文一模试卷(含详细答案解析)
- 2025年湖北中烟招聘考试笔试试题试卷(含答案)
- 幕墙工程监理实施细则
- 妇联法治知识竞赛试题及答案
- 能力方面的不足和改进措施【六篇】
- 房地产行业年终工作总结报告
- 全员招聘整合资源团队制胜
- 职工工作质量督查考核办法
- 围产期降压药物临床应用管理指南核心要点2026
- 春运便民服务站点设置
- 高考考务人员培训系统考试试题答案
- 2026上海市大数据中心招聘10名笔试参考题库及答案解析
- 四川省达州市(2026年)辅警招聘公安基础知识考试题库及答案
- (二模)青岛市2026年高三年级第二次适应性检测语文试题(含答案)
- 15 青春之光 课件(共23张)
- 国药集团2026届春季校园招聘笔试历年备考题库附带答案详解
- 产科孕产期管理诊疗常规
- 2026年北京市丰台区初三下学期一模道德与法治试卷和答案
- 【 生物 】人体的运动重难点梳理课件-2025-2026学年北师大版七年级生物下册
- 《AQ3067-2026化工和危险化学品重大生产安全事故隐患判定准则》解读
- 2026湖北三支一扶试卷真题
评论
0/150
提交评论