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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(进程调度算法模拟程序设计.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

进程调度算法模拟程序设计.docx

1、进程调度算法模拟程序设计华北科技学院计算机学院综合性实验实 验 报 告课程名称 操作系统B 实验学期 2011 至 2012 学年 第 二 学期学生所在系部 计算机学院 年级 09 专业班级 网络工程B093 学生姓名 李金栋 学号 2 任课教师 杜杏菁 实验成绩 计算机学院制操作系统B课程综合性实验报告开课实验室:基础实验室七 2012年5月10日实验题目进程调度算法模拟程序设计一、实验目的通过对进程调度算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、调度算法的理解。二、设备与环境1. 硬件设备:PC机一台。2. 软件环境:安装Windows操作系统或Linux操作系

2、统,并安装相关的程序开发环境,如C/C+/Java等编程语言环境。三、实验内容(1)用C语言(或其它语言,如Java)编程实现对N个进程采用某种进程调度算法(如动态优先权调度算法、先来先服务算法、短进程优先算法、时间片轮转调度算法)调度执行的模拟。(2)每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段: 进程标识数ID。 进程优先数PRIORITY,并规定优先数越大的进程,其优先权越高。 进程已占用CPU时间CPUTIME。 进程还需占用的CPU时间ALLTIME。当进程运行完毕时,ALLTIME变为0。 进程的阻塞时间STARTBLOCK,表示当进程再运行STARTBLOCK个

3、时间片后,进程将进入阻塞状态。 进程被阻塞的时间BLOCKTIME,表示已阻塞的进程再等待BLOCKTIME个时间片后,将转换成就绪状态。 进程状态STATE。 队列指针NEXT,用来将PCB排成队列。(3)优先数改变的原则: 进程在就绪队列中呆一个时间片,优先数增加1。 进程每运行一个时间片,优先数减3。(4)为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出来,包括正在运行的进程,处于就绪队列中的进程和处于阻塞队列中的进程。(5)分析程序运行的结果,谈一下自己的认识。四、实验结果及分析1.主程序流程图:2.关键算法:(1)PCB结构:设置进程ID、剩余服务时间、剩余阻

4、塞时间、NEXT指针四项记录。typedef struct PCBType int id; int allTime; /*剩余服务时间*/ int blockTime; /*剩余阻塞时间*/ struct PCBType* next;Process;(2)创建新进程:使用函数creatProcess() 创建一个进程的PCB,并挂接在队列一的末尾。void creatNew() char choose8; do printf(n请输入新进程信息:n); printf(-n); firstRear-next=creatProcess(); firstRear=firstRear-next; pr

5、intf(-n); printf(是否继续创建新进程?:); scanf(%s,choose); while(strcmp(choose,y)&strcmp(choose,Y)&strcmp(choose,n)&strcmp(choose,N) printf(输入有误,请重新输入!n); printf(是否继续创建新进程?:); scanf(%s,choose); while(!strcmp(choose,y)|!strcmp(choose,Y);(3)改变进程所在队列:对头指针只需改变其NEXT指针指向,对尾指针则需使用指针的指针。void changeQueue(Process *oldH

6、ead,Process *oldRear,Process *newRear) (*newRear)-next=oldHead-next; *newRear=(*newRear)-next; oldHead-next=oldHead-next-next; if(NULL=oldHead-next) /*若摘去进程后队列为空,则复位尾指针*/ (*oldRear)=oldHead; (*newRear)-next=NULL;(4)搜索并阻塞进程:使用两个辅助指针实现阻塞进程的队列转换。int searchBlock(Process *head,Process *rear,int id) Proce

7、ss *p=head; Process *q=NULL; if(*rear!=head) while(p!=*rear) q=p; p=p-next; if(id=p-id) printf(请输入阻塞时间(1-8):); scanf(%d,&p-blockTime); while(p-blockTimeblockTime8) printf(输入有误,请重新输入!n); printf(请输入阻塞时间(1-8):); scanf(%d,&p-blockTime); printf(-n); changeQueue(q,rear,&blockRear); return 1; return 0;3.运行

8、结果及分析:(1)显示进程信息及选单:显示各队列中进程的ID、剩余服务时间和阻塞服务时间,并显示菜单供用户选择。(2)创建进程:获取新进程的ID及所需服务时间总量,并为其创建PCB,可循环创建多个进程。上图表示的是第一次调度前后的结果,第一队的时间片是1,第二队列的时间片是2,以此类推,一共有4 个队列。(3)阻塞进程:获取要阻塞进程的ID并搜索该进程进行阻塞,可循环阻塞多个进程。(4)进程执行完毕提示:当某一进程执行完毕时,释放其PCB并显示相应的提示信息。(5)程序结束提示:当所有进程执行完毕时,释放所有队列元素并显示提示信息。4.实验感想:(1)编写代码时,应将相同操作提取为函数供其它代

9、码调用,以提高程序代码的复用率并使程序结构简洁明了。(2)程序执行中应在合适的时间给予用户恰当的提示信息,并对用户的输入信息进行格式检查,以保证程序正常运行。(3)在结构化程序设计过程中,应遵循自顶向下的原则,先确定程序的整体结构,再实现具体细节,以保证程序结构的完整合理。(4)多级反馈调度算法能够及时响应用户的请求,满足各种类型用户的需要,故被现代操作系统广泛采用。(5)通过编写多级反馈队列调度算法,加深了对进程调度的理解,对于其基于时间片的算法原理,能够转化成实在的程序算法并验证。教 师 评 价评定项目ABCD评定项目ABCD算法正确界面美观,布局合理程序结构合理操作熟练语法、语义正确解析完整实验结果正确文字流畅报告规范题解正确其他:评价教师签名:年 月 日

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

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