下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统课程设计报告专业:计算机科学与技术班级: 09 计本班学 号姓名成绩200981010118刘利刚题目名称: 进程调度模拟程序完成日期:2012年6月20日甘肃政法学院计算机科学学院第一章课程设计目的 3第二章课程设计要求 3第三章设计思想 43.1 基本概念 43.2 进程控制块 53.3 算法思想 5第四章详细设计 64.1 程序设计流程图 64.2 程序各模块功能介绍 7第五章运行结果及分析 145.1 程序调试 145.2 运行结果 155.3 结果分析 17第六章总结 17参考文献 18Word资料进程调度模拟程序第一章课程设计目的深入掌握进程调度的概念原理和实现方法,理解操
2、作系统进程管理中进行进 程调度的过程和编程方法,掌握先来先服务调度算法和最高优先数优先的调度算 法,创建进程控制块PCB理解进程的状态及变化,动态显示每个进程的当前状 态及进程的调度情况。 进程调度是处理机管理的核心内容。本次课程设计用C语言编写模拟进程调度程序,以便加深理解有关进程控制快、进程队列等概念, 并体会最高优先数优先与按时间片轮转调度结合算法的优缺点。第二章课程设计要求编写一个进程调度程序,允许多个进程并行执行。1 、进程调度算法:采用最高优先数优先与按时间片轮转调度结合算法。2 、每个进程有一个进程控制块(PCB表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行
3、时间、已用CPUW问、进程状态等等。3 、进程的优先数及需要的运行时间可在运行时输入,进程的到达时间为输 入进程的时间。4 、进程的运行时间以时间片为单位进行计算。5 、每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F (Finish ) 三种状态之一。6 、就绪进程获得CPU后都只能运行一个时间片。7 、如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时 问,则撤消该进程,如果运行一个时间片后进程的已占用 CPU寸间还未达所需要 的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减 1 (即降低 一级),然后把它插入就绪队列等待CPU8 、每进行一
4、次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB以便进行检查。重复以上过程,直到所要进程都完成为止。第三章设计思想3.1 基本概念优先级调度算法:按照进程的优先级大小来调度。使高优先级进程或线程得 到优先的处理的调度策略称为优先级调度算法。进程的优先级可以由系统自动地 按一定原则赋给它,也可由系统外部来进行安排。本次课程设计是自己给定进程 的优先级。但在许多采用优先级调度的系统中,通常采用动态优先数策略。即一个进程 的优先级不是固定的,往往是随许多因素的变化而变化。尤其随作业(进程)的 等待时间,已使用的处理器时间或其他系统资源的使用情况而定,以防止低优先级进程或线程长期饥饿现象
5、发生时间片轮转算法: 时间片轮转调度是一种最古老,最简单,最公平且使用 最广的算法。每个进程被分配一个时间段,称作它的时间片,即该进程允许运 行的时间。如果在时间片结束时进程还在运行,则CPU等被剥夺并分配给另一个 进程。如果进程在时间片结束前阻塞或结束, 则CPUS即进行切换。调度程序所 要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的 末尾。时间片轮转算法主要用于处理器调度。 采用此算法的系统,具进程就绪队 列往往按进程到达的时间来排序。进程调度程序总是选择就绪队列中的第一个进 程,也就是说按照先进先出原则调度,但一旦进程占有处理器仅使用一个时间片, 在使用完一个时间
6、片后,进程还没有完成其运行,它也必须释放出(被抢占)处 理器给下一个就绪的进程。而被抢占的进程返回到就绪队列的末尾重新排队等候 再次运行。进程调度程序选择一个就绪状态的进程, 使之在处理器上运行,每个进程的状态信息用数据结构(进程控制块 PCB表示,进程的调度采用最高优先数优先和按时间片轮转相结合的调度算法, 并且采用动态优先数策略,选择进程占用处理器后该进程仅能使用一个时间片,运行完后优先数减1。进程的状态:运行状态R (Run):进程正在处理器上运行。就绪状态 W(Wait): 一个进程获得了除处理器外的一切所需资源,一旦得到处理器即可运行。完成状态F (Finish ): 一个进程一旦完
7、成,就停止运行。3.2 进程控制块描述进程的状态信息,用结构体定义/typedef struct process char name10;int priority; /Time ReachTime;Time NeedTime;Time UsedTime;char state; /进程名优先数/ 到达时间/需要运行时间/已用时间进程状态PCB;/进程控制块图1进程调度模拟程序模块图3.3 算法思想定义结构体PCB述进程的进程控制块,定义数组 PCB pcbMax存放进程进程调度程序调用face()函数选择所要进行的操作。输入 1则增加进程并调度进程;输入2则打印进程,输入0则任务结束;增加进程,
8、调用 AddProcess() 函数,将输入的进程存放在数组 pcbMax中;打印进程,调用print()函数,在 该函数中首先调用sort()函数对进程按优先级和先来先服务排序,然后显示输 出排序后的进程。进程调度,调用 attemper()函数,调度优先级最高的进程分 配给CPU使之运行一个时间片,进程优先级排序,调用 sort()函数,按照先来 先服务和优先级排序,使排序完最优先运行的进程存放在pcb0中。第四章详细设计4.1 程序设计流程图图2程序设计流程图4.2 程序各模块功能介绍进程优先级排序sort()函数:函数用冒泡法排序,首先按到达时间排序,使到达时间最早(即 pcbn.Re
9、achTime最小)的进程被交换到 pcb0中, 再按优先级排序,使具有最高优先级(即pcbn.priority 最大)的进程被交换 到pcb0中。相同优先级的进程只按到达时间排序。主要代码如下:for (i=0;i=i;j-) if (pcbj+1.ReachTimepcbj.ReachTime) temp=pcbj;pcbj=pcbj+1;pcbj+1=temp; for (i=0;i=i;j-) if (pcbj+1.prioritypcbj.priority) temp=pcbj;pcbj=pcbj+1;pcbj+1=temp; 进程优先级排序Sort()函数的流程图如图3所示图 3
10、sort()函数流程图打印进程print()函数:先调用sort ()排序函数对进程进行排序,排序完再打印输出进程主要代码如下:sort();printf(n 进程名优先级到达时间需要时间已用时间进程状态n);for (i=0;in;i+)printf(%8s%8d%8d%10d%10d%10cn,,pcbi.priohty,pcbi.ReachTime,pcbi.NeedTime,pcbi.UsedTime,pcbi.state);进程调入AddProcess()函数:增加进程函数,输入要添加的进程的进程控制块的信息,并依次存放在数组PCB pcbMax中,每加入一个进程后
11、判断是否还要继续增加进程,若是则继续循环的执行操作主要代码如下:do printf(n请输入进程名);scanf(%s,);printf(请输入进程的优先级);scanf(%d,&pcbn.priority);printf(请输入进程需要的时间);scanf(%d”,&pcbn.NeedTime);pcbn.ReachTime=n;pcbn.UsedTime=0;pcbn.state=W;n+;printf(还要继续增加进程吗,是(Y),否(N);do ch=getchar(); while(ch!=Y&ch!=N&ch!=y&ch!=n);while (ch=Y|ch=y)
12、;打印进程print()函数和进程调入函数AddProcess()函数的流程图如图4和图5所示。图4 print()函数流程图图5 AddProcess()函数流程图 进程调入attemper()函数:调度排完序后存放在pcb0中的进程,分 配给该进程CPU,使之运行一个时间片,然后比较进程的剩余时间 (pcb0.NeedTime-pcb0.UsedTime)是否小于时间片的大小 pTime,若是,该进程调度完成,进程处于完成状态,若非,则已用时间加上一个时间片,进程 处于就绪状态继续等待运行,然后调用print()函数打印输出当前进程的状态并排序,直至所有进程处于完成状态后结束运行。主要代码
13、如下:do if (pcb0.NeedTime-pcb0.UsedTime)pTime) pcb0.UsedTime+=pTime; /已用时间加时间片pcb0.priority-;优先级减一pcb0.state=W; else pcb0.UsedTime=pcb0.NeedTime; /已用时间等于需要时间pcb0.priority=-1000;/优先级置为零pcb0.state=F;/完成进程,将状态置为完成 print();while(pcb0.state!=F);进程调入attemper()函数流程图如图6所示。结束图6 attemper()函数流程图选择操作face()函数:函数打印
14、所能进行的操作以供选择。输入则是增加进程后调度进程,输入2则是打印进程,输入0则是任务结束主要代码如下:char choose;printf(n增加进程并调度进程,请按1);printf(n打印进程,请按2);printf(n任务结束,请按0);printf(n请选择:);dochoose=getchar(); while(choose!=1&choose!=2&choose!=0);return choose;图7 face()函数流程图 main() 函数:首先设置时间片的大小 pTime,然后调用face()函数选择要进行的操作,choose=1则增加进程并调度,choose=2则打印进
15、程,choose=0则任务结束。主要代码如下:char choose;n=0; /初始化进程数为0printf( 设置时间片的大小:);scanf(%d”,&pTime);choose=face();do if (choose=1) AddProcess();print();attemper();if (choose=2) print(); if (choose=0) return; choose=face(); while(1);函数间的关系:1 ) sort()函数嵌套在print()函数中调用2 )调用AddProcess()函数前必须先调用print()函数对进程进行排序并打Main(
16、)函数的流程图如图8所示第五章运行结果及分析5.1 程序调试此次课程设计进程调度模拟程序是用C编写的程序,运行环境是MicrosoftVisual C+6.0。在VC+6.0中的编写的程序如图9所示。量 d-MicrowsIt YisuaJ CZ-E交时回网热方看CD ILAID IS 旧*i均I*U晶口,独 KRiiHiNII可睁州 bi由叼因百鼎I?Gbnbkd-3- 9 ?rrofsjji 32lDe-bugdfl-c5cci还要建技博加进程吗进程名 优先级lly8lift5名19111V 遑111 进优先级-100进程名 优先级114J4lit4llv-100进程名 lit 113 l
17、ly优先级4-100-100进程名 优先级lit3llu-100lly-10进程名 优先级11g T0闫 11*=100lit -100是dL否到达时间需要时间11002S216到达时间需要时间 的 216110到达时间 需要时间202161到达时间需要时间216920110到达时间需要时间216926110到达时间需要时间1 216已用时间000已用时间0010已用时间10 g已用时间010已用时间102010已用时间2016进程状态R进程状态R迸程状态RF进程状态RFF进程状态R FF迸程状态F原程京-等结择加印窑增北请图11三个进程的运行过程上述创建的三个进程运行完以后,还可以继续创建新
18、的进程继续运行。如图 12所示。CAWindoswTjy3tern32D?bu-gdaTIlin推3人.进千呈定 裾森n髓酶一进程色 11k世先缴 0到达时间 3需要时间已用时间 0过程状态H工。iisia2因ZF.1115f-1HH11 fl 1GFlit-100含16F迸程含11k优先锻 -1到达时间 3需要时间已用日寸间1 R迸程状忠H11m-19002920Fnym11HF口 it-1HH216HEF进程名Ilk优先级-a到达时询3常典时间已用时间迸程状志llij-innanKRFUy-100119IBFlit-10021JLGF进程名Ilk优先缎-3到达时间 3需要时间 59已用日寸
19、间 30进程状态 RIls-Lm62 Id20Pllv-1HH11H1Flit-1HB立痂IEF进程名 ilk优先松 T到达时间3需要时间 得己用时间 dft迸程状态 Hllff-1HHfl3020F11岁-iaa1诵18Flit-lUldN1bjLEF迪:程色 llu优先绥-100到达时间 e需要时间 29已用时间 20祖程代志 F11,-1L3H11H1UFlit-IBBa16FIlk-1903595。F_卜图12新创建进程的运行过程5.3 结果分析运行程序后,首先根据提示设置时间片大小为10,然后顺序创建三个进程11g , 11y , 11t ,它们的优先级依次为5, 8, 4,需要运行
20、的时间为20, 10, 16, 程序默认三个进程到达的时间依次为 0, 1, 2。运行进程,首先比较优先级大小, 选择进程11y运行,其进程状态为 R (运行),其运行一个时间片时间以后,该 进程运行完成,优先级减变为-100 (程序默认),然后其进程状态变为F (完成); 再选择11g进程运行,首先其进程状态从 W(等待)变为R (运行),然后运行一 个时间片时间以后,该进程还没运行完成,具优先级减1变为4,相比11t进程, 他们具有相同的优先级,所以继续运行11g进程,再运行一个时间片以后,该进 程运行完成,其优先级变为-100 (程序默认),其进程状态从 R (运行)变为F(完成);最后运行11t进程,首先它的进程状态运行一个时间片以后,换没结束,再运行6以后运行结束,其优先级变为-100 (程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 客户审计管理制度
- 家具财务规章制度
- 2025-2026学年耳机音乐教案视频
- 小商贸企业财务规章制度
- 2025-2026学年苏的拼音教学游戏设计
- 2026年安宁疗护中心健康宣教调查问卷
- 2026年挖机考试试题含答案解析
- 2026恒丰银行总行实习生招收备考题库附参考答案详解【模拟题】
- 2026北京大学教育学院全球人才招聘备考题库含完整答案详解(名校卷)
- 基于数字孪生的智慧工厂生产过程优化与监控方案研究课题报告教学研究课题报告
- 2026新疆乌鲁木齐市乌鲁木齐县南郊供排水有限公司及子公司招聘14人笔试模拟试题及答案解析
- 《名师工作室建设实践指南(2025版)》
- 2026广东江门市新会银海集团有限公司招聘2人备考题库及答案详解(名师系列)
- 2025年农商行考试题及答案
- 2026年春苏教版新教材小学科学二年级下册教学计划及进度表
- 2025中证信息技术服务有限责任公司招聘16人笔试备考试题附答案
- 流程管理优化工具及方法
- 医疗设备采购与招标流程
- 雨课堂学堂在线学堂云中华戏曲艺术鉴赏华侨单元测试考核答案
- PET吹瓶工艺操作指导书
- DB4419∕T 30-2025 高层、超高层民用建筑匹配消防救援能力建设规范
评论
0/150
提交评论