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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

cpu调度算法的模拟实现 页面置换算法的模拟实现课程设计.docx

1、cpu调度算法的模拟实现 页面置换算法的模拟实现课程设计课 程 设 计 说 明 书设计题目: 操作系统课程设计班 级: 软件工程专业 2009-1学 号: 姓 名: 2011年 12月 27日课 程 设 计 任 务 书学院信息科学与工程专业 软件工程 班级 09-1 姓名 一、课程设计题目: 操作系统课程设计 二、课程设计主要参考资料(1)计算机操作系统(第三版) (2) 程序设计基础(基于C语言) (3) C+面向对象程序设计 三、课程设计应解决的主要问题:(1)CPU调度算法的模拟实现 (2)页面置换算法的模拟实现 (3)磁盘调度算法的模拟实现 四、课程设计相关附件(如:图纸、软件等):(

2、1)codeblocks编程软件 五、任务发出日期: 2011-11-1 课程设计完成日期: 2011-12-27 指导教师签字: 指导教师对课程设计的评语成绩: 指导教师签字: 年 月 日设计1 CPU调度算法的模拟实现 一、设计目的通过CPU调度相关算法的实现,了解CPU调度的相关知识,通过实现CPU调度算法,理解CPU的管理,以及不同的CPU调度算法实现过程。体会算法的重要性。二、设计要求1、编写算法,实现FCFS、非抢占SJF、可抢占优先权调度、RR2、针对模拟进程,利用CPU调度算法进行调度3、进行算法评价,计算平均周转时间和平均等待时间4、调度所需的进程参数由输入产生(手工输入或者

3、随机数产生)5、输出调度结果6、输出算法评价指标三、设计说明1、采用数组存储进程属性;course1006;course的行坐标是进程名,course的纵坐标0表示进程到达时间,1表示服务时间,2表示开始服务时间,3表示完成时间,5表示优先级2、FCFS先来先服务调度算法是一种最简单的调度算法,当作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个最先进入该队列的作业3、非抢占SJF短作业优先调度算法,是指对短作业有限调度算法。是从后备队列中选择一个估计运行时间最短的作业将他们调入内存。4、可抢占优先权调度在这种方式下,系统把处理机分配给优先级最高的进程,使之执行。但在其执行期间,只要

4、出现另一个其优先权更高的进程,进程调度程序就立即停止当前进程(原优先权最高的进程)的执行,重新将处理及分配给新到的优先权最高的进程。5、RR系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首的进程并令其执行一个时间片。当执行的时间片用完时,有一个计时器发出时钟中断请求。调度程序便据此信号来停止该进程的执行,并将他送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首过程。四、运行结果及分析输入进程的数量。五、总结1、刚开始没想好count中该存储几种属性结果多出了一个本来是要存储周转时间的,但是周转时间用完成时间和开始时间可求便没有存储;另外因为在main

5、函数中不需要完成时间和开始时间所以程序中并没有将完成时间和开始时间存到count中;2、编写程序时本来是跟算法思想来设计程序,但是模拟毕竟与实际不同,比如没有中断请求,没有真正时间观念,所以所设计程序只是将个算法算出结果显现,并非模拟算法过程; 设计2 页面置换算法的模拟实现一、设计目的通过实现页面置换算法的FIFO和LRU两种算法,理解进程运行时系统是怎样选择换出页面的,对于两种不同的算法各自的优缺点是哪些。二、设计要求1、编写算法,实现页面置换算法FIFO、LRU;2、针对内存地址引用串,运行页面置换算法进行页面置换;3、算法所需的各种参数由输入产生(手工输入或者随机数产生);4、输出内存

6、驻留的页面集合,页错误次数以及页错误率;三、设计说明1、采用数组页面的页号2、FIFO算法,选择在内存中驻留时间最久的页面予以淘汰;分配n个物理块给进程,运行时先把前n个不同页面一起装入内存,然后再从后面逐一比较,输出页面及页错误数和页错误率。3、LRU算法,根据页面调入内存后的使用情况进行决策; 同样分配n个物理块给进程,前n个不同页面一起装入内存,后面步骤与前一算法类似。四、运行结果及分析自动运行结果。五、总结因为对移位不太了解,故用/2和+256来代替右移和最高位加1;在编码过程中因为把加1和赋值顺序颠倒,导致程序出错;设计3 磁盘调度算法的模拟实现一、设计目的通过实现磁盘调度算法,理解

7、磁盘存储器的管理,以及不同的磁盘调度算法实现过程。二、设计要求1、编写算法,实现FCFS、SSTF、SCAN、CSAN调度算法2、针对给定的磁盘访问序列,运行各种调度算法得出调度过程3、算法所需的各种参数由输入产生(手工输入或者随机数产生)4、输出调度过程、平均寻道长度三、设计说明1、FCFS调度算法:这是一种最简单的磁盘调度算法,它根据进程请求访问的先后次序进行调度。2、SSTF调度算法:该算法要求访问的磁道与当前磁头所在的磁道距离最近,以使每次寻道时间最短。实现时,先将被访问的磁道号进行从小到大的排序,然后看已排好序的数组最小值是否比用户输入的当前磁道大,若是则按从小到大的顺序输出即为调度

8、过程,若已排好序的数组最大值小于当前磁道,则按从大到小的顺序输出即为调度过程,若两者均不符,则逐一判断k值(数组下标为k的值小于当前磁道,数组下标为k+1的值大于当前磁道),先要判断这两个部分与当前磁道接近的值与当前磁道的距离,先输出距离短的那部分,k值之前的按从大到小输出,k值之后的按从小到大输出。3、SCAN调度算法:此算法在考虑到欲访问磁道与当前磁道间的距离基础上,更优先考虑磁头当前的移动方向。程序中1 代表磁道号增加方向,0代表磁道号减小方向,前半部分的数组排序,定位k值都是同于SSTF算法的,只是在此基础上加入磁臂的移动方向。 4、CSCAN调度算法: 为了减少SCAN算法中的延迟,

9、CSCAN算法规定磁头只能单向移动,例如,只是自里向外移动,当磁头移动到最外边时,立即返回到最里的磁道访问,即将最小磁道号紧接着最大磁道号构成循环,代码实现思想同SCAN算法。四、运行结果及分析五、总结完成此算法主要解决排序问题编码实现设计1#include#include#includeusing namespace std;void FCFS(int cou1006,int n)int i,j; int coursen4; for(i=0;in;i+) for(j=0;j4;j+)courseij=couij; course02=course00; course03=course01+co

10、urse02; for(i=1;icoursei0)coursei2=coursei-13; else coursei2=coursei0; coursei3=coursei1+coursei2; coutsetw(8)进程名 setw(10)到达时间 setw(10)服务时间setw(14)开始执行时间 setw(10)完成时间setw(10)周转时间 setw(10)等待时间endl; for(i=0;in;i+) coutsetw(8)i setw(10)coursei0 setw(10)coursei1 setw(14)coursei2 setw(10)coursei3 setw(10

11、)coursei3-coursei0 setw(10)coursei2-coursei0endl; j=0; for(i=0;in;i+)j+=coursei3-coursei0; cout平均周转时间j*1.0/nendl; for(i=0;in;i+)j-=coursei1; cout平均等待时间j*1.0/nendl;/非抢占void SJF(int cou1006,int n) int an,i,j,k,s,p; int coursen4; for(i=0;in;i+) for(j=0;j4;j+)courseij=couij; for(i=1;in;i+)ai=1; a0=0; co

12、urse02=course00; course03=course01+course02; s=course03; for(i=1;in;i+) for(j=1;coursej0=s&js&jn)p=coursej1; k=j;s=coursej0; for(;coursej0=s&jcoursej1&aj) p=coursej1;k=j;break; coursek2=s; s+=coursek1; coursek3=s; ak=0; coutsetw(8)进程名setw(10)到达时间 setw(10)服务时间setw(14)开始执行时间 setw(10)完成时间setw(10)周转时间 s

13、etw(10)等待时间endl; for(i=0;in;i+) coutsetw(8)isetw(10)coursei0 setw(10)coursei1 setw(14)coursei2 setw(10)coursei3 setw(10)coursei3-coursei0 setw(10)coursei2-coursei0endl; j=0; for(i=0;in;i+)j+=coursei3-coursei0; cout平均周转时间j*1.0/nendl; for(i=0;in;i+)j-=coursei1; cout平均等待时间j*1.0/nendl;void rob(int cou10

14、06,int n) int i,j,k=2,l=0,temp; int coursen6; for(i=0;in;i+)for(j=0;j6;j+)courseij=couij; int an;/按优先级记录进程 for(i=0;in;i+)ai=i; int b2003;/记录进程顺序 for(i=1;in;i+) for(j=0;jcourseaj+15) temp=aj+1; aj+1=aj; aj=temp; b00=-1; b01=0; b02=0; b10=a0; b11=coursea00;b12=coursea00+coursea01;coursea02=b11; course

15、a03=b12;b20=-1; b21=10000; b22=10000; k+; for(i=1;in;i+) for(j=1;jcourseai0)break; for(;jk;j+)if(bj-12bj1)break; if(bj-12j;s-) bs0=bs-10; bs1=bs-11; bs2=bs-12; bj0=ai; bj1=courseai0; courseai2=bj1; if(bj+11-courseai0=courseai1) bj2=bj1+courseai1;k+;courseai3=bj2;continue; else bj2=bj+11;k+;courseai1

16、-=bj2-bj1; courseai2=bj-12; while(1) for(;jk;j+)if(bj-12=courseai1) for(int s=k;sj;s-) bs0=bs-10; bs1=bs-11; bs2=bs-12; bj0=ai; bj1=bj-12; bj2=bj-12+courseai1; k+;break; else for(int s=k;sj;s-) bs0=bs-10; bs1=bs-11; bs2=bs-12; bj0=ai; bj1=bj-12; bj2=bj+11; courseai1-=bj2-bj1; k+; courseai3=bj2; for(

17、i=0;in;i+)coursei1=coui1; coutsetw(8)进程名setw(10)到达时间 setw(10)服务时间setw(14)开始执行时间 setw(10)完成时间setw(10)周转时间 setw(10)等待时间setw(8)优先级endl; for(i=0;in;i+) coutsetw(8)isetw(10)coursei0 setw(10)coursei1 setw(14)coursei2 setw(10)coursei3 setw(10)coursei3-coursei0 setw(10)coursei3-coursei0-coursei1 setw(8)cour

18、sei5endl; j=0; for(i=0;in;i+)j+=coursei3-coursei0; cout平均周转时间j*1.0/nendl;for(i=0;in;i+)j-=coursei1; cout平均等待时间j*1.0/nendl; cout运行过程endl; for(i=1;ik-1;i+) coutCbi0 bi1bi2endl; / m存储时间片周期void RR(int cou1006,int n,int m) int i,j; int coursen4; for(i=0;in;i+) for(j=0;j4;j+)courseij=couij; int pram1002,p

19、=0; int sum=0;/执行时间 for(i=0;in;i+) if(sumcoursei0)sum=coursei0; sum+=coursei1; i=0; while(1) for(j=0;ji)break; if(coursej1=couj1)coursej2=i; if(coursej1=m) i+=coursej1;pramp0=j;pramp1=coursej1;p+;coursej3=i;coursej1=0; else i+=m;pramp0=j;pramp1=m;p+;coursej1-=m; int k; for(k=0;kj;k+)if(coursek1!=0)b

20、reak; if(k=j)i=coursej0; if(k=n)break; for(i=0;in;i+)coursei1=coui1; cout运行顺序endl; for(i=0;ip;i+)coutCprami0 prami1endl; coutsetw(8)进程名setw(10)到达时间 setw(10)服务时间setw(14)开始执行时间 setw(10)完成时间setw(10)周转时间 setw(10)等待时间endl; for(i=0;in;i+) coutsetw(8)isetw(10)coursei0 setw(10)coursei1 setw(14)coursei2 setw

21、(10)coursei3 setw(10)coursei3-coursei0 setw(10)coursei3-coursei0-coursei1endl; j=0; for(i=0;in;i+)j+=coursei3-coursei0; cout平均周转时间j*1.0/nendl; for(i=0;in;i+)j-=coursei1; cout平均等待时间j*1.0/nendl;int main() int course1006; int n; cout输入进程数量n; int i,p=0; srand(int)time(0); for(i=0;in;i+,p+=rand()%4+1) co

22、ursei0=p; coursei1=rand()%9+1; coursei5=rand()%9+1; course02=course00; course03=course01+course02; coutFCFSendl; FCFS(course,n); coutSJFendl; SJF(course,n); cout可抢占优先权调度endl; rob(course,n); coutRRendl; RR(course,n,4);设计2#includeusing namespace std;int FIFO(int *num,int order10010,int n,int m) order0

23、1=num0; int sign=2; int i=1; for(;im;i+) int j=1; for(;jn)break; if(i=m)order00=m;return 0; order00=i; sign=1; int signm=1; for(i+;im;i+) int j=1; for(;jn) for(int k=1;k=n;k+) ordersignmk=ordersignm-1k; ordersignm0=i; ordersignmsign=numi; sign=sign%n+1; signm+; return signm-1;int LRU(int *num,int order10010,int n,int m) order01=num0; int signnn+1; signn1=256; int sign=2; int i=1; for(;im;i+) int k=0; for(int j=1;jn)break; if(i=m)order00

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

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