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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

操作系统课程设计徐阳 3091110042.docx

1、操作系统课程设计徐阳 3091110042 江苏大学操作系统课程设计报告磁盘调度模拟J计算机0902班 徐阳 30911100421 目 录1. 需求分析 22. 数据结构的设计 22.1 函数介绍 23.程序概要设计内容 23.1磁盘调度 23.1.1先来先服务(FCFS) 23.1.2最短时间优先算法 33.1.3扫描(SCAN)调度算法 33.1.4循环扫描(CSCAN)算法 34.程序详细设计及流程图 44.1系统流程图 44.2先来先服务(FCFS) 44.3最短寻道时间优先(SSTF) 54.4扫描算法(SCAN) 54.5循环扫描(CSCAN)算法 75.功能模块描述及使用说明

2、85.1先来先服务调度(FCFS) 85.2最短寻道时间优先调度(SSTF) 85.3扫描调度算法(SCAN) 95.4循环扫描算法(CSCAN) 106.心得体会及结束语 117.参考文献 11附源代码 121. 需求分析操作系统的任务之一就是有效的使用硬件。对于磁盘驱动器,满足这一要求意味着要有较快的访问速度和较宽的磁盘带宽。访问时间包括两个主要部分:寻道时间,旋转延迟。磁盘带宽是所传递的总的字节数除以从服务请求开始到最后传递结束时的总时间。可以通过使用好的访问顺序来调度磁盘I/O请求,提高访问速度和宽度。本程序模拟四种磁盘调度算法:先来先服务调度(FCFS),最短寻道时间优先调度(SST

3、F),扫描调度算法(SCAN),循环扫描算法(CSCAN)。并通过比较,了解各种算法的优缺点。2. 数据结构的设计2.1 函数介绍Hand:当前磁道号;DiscLine10:随机生成的磁道号;void SetDI(int DiscL)生成随机磁道号算法;void CopyL(int Sour,int Dist ,int x) 数组Sour复制到数组Dist,复制到x个数(四)详细设计;void DelInq(int Sour,int x,int y) 数组Sour把x位置的数删除,x后的数组元素向前挪一位.void PaiXu()寻道长度由低到高排序void FCFS(int Han,int

4、DiscL)先来先服务算法(FCFS)void SSTF(int Han,int DiscL)最短寻道时间优先算法(SSTF)int SCAN(int Han,int DiscL,int x,int y) 扫描算法(SCAN)void CSCAN(int Han,int DiscL)循环扫描算法(CSCAN)3.程序概要设计内容3.1磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读/写操作的请求。由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列。3.1.1先来先服务(FCFS)即先来的请求先被响应。FCFS策略看起

5、来似乎是相当公平的,但是当请求的频率过高的时候FCFS策略的响应时间就会大大延长。FCFS策略为我们建立起一个随机访问机制的模型,但是假如用这个策略反复响应从里到外的请求,那么将会消耗大量的时间。为了尽量降低寻道时间,看来我们需要对等待着的请求进行适当的排序,而不是简单的使用FCFS策略。这个过程就叫做磁盘调度管理。有时候fcfs也被看作是最简单的磁盘调度算法。3.1.2最短时间优先算法要求访问的磁道,与当前磁头所在的磁道距离最近,以使每次的寻道时间最短。 3.1.3扫描(SCAN)调度算法该算法不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑的是磁头当前的移动方向。例如,当磁头正在自里向

6、外移动时,SCAN算法所考虑的下一个访问对象,应是其欲访问的磁道,既在当前磁道之外,又是距离最近的。这样自里向外的访问,直至再无更外的磁道需要访问时,才将磁道换向自外向里移动。这时,同样也是每次选择这样的进程来调度,也就是要访问的当前位置内距离最近者,这样,磁头又逐步地从外向里移动,直至再无更里面的磁道要访问,从而避免了出现“饥饿”现像。3.1.4循环扫描(CSCAN)算法当磁头刚从里向外移动而越过了某一磁道时,恰好又有一进程请求访问此磁道,这时,该里程就必须等待,为了减少这种延迟,CSCAN算法规定磁头单向移动,而本实验过程中我们所设计的是磁头从里向外移动,而从外向里移动时只须改方向而已,本

7、实验未实现。但本实验已完全能演示循环扫描的全过程。4.程序详细设计及流程图4.1系统流程图: 4.2先来先服务(FCFS):这是一种简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。但此算法由于未对寻道进行优化,致使平均寻道时间可能较长。先来先服务算法(FCFS)流程图:4.3最短寻道时间优先(SSTF):该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,但这种调度算法却不能保证平均寻道时间最短。最短寻道时间优先流程图:4.4扫描算法(S

8、CAN):SCAN算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。例如,当磁头正在自里向外移动时,SCAN算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动。这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在当前磁道之内,从而避免了饥饿现象的出现。由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法。扫描算法(scan)流程图4.5循环扫描(CSCAN)算法:处理该进程的请求,致使该进程的请求被严重地推迟。为了减少这种延迟,CSCAN算法规定磁

9、头单向移动。例如,只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。循环扫描算法(cscan)流程图:设计思路程序主要分成三部分:主程序,寻道子程序,图形界面子程序。主程序包括实现总的选择界面,提醒用户输入一组磁道数,调用图形子程序。寻道子程序包括4个分支 FCFS SSTF SCAN C-SCAN 实现四种寻道并输出 图形子程序包括画图程序 同心圆代表磁道,控制循环和延迟实现寻道展示。5.1实现及效果 磁盘调度目录输入数据5.1Fcfs(先来先服务)算法5.2Sstfs(最短寻道时间优先)算法5.3SCAN(扫描调度

10、算法)5.4C-scan(循环扫描算法)算法6.心得体会及结束语转眼间,一个礼拜的操作系统课程设计就结束了。在这一个礼拜之中,我学到了很多很多,也加深了对本课程理论知识的理解,更知道了学习一门课程,不是只是通过一次考试就最为最后的标准的。参加了系统的实践之后,才知道差距是如此之大,而这也是个艰难的过程,经历了一开始的不懂,到后来的懵懵懂懂,再到后来能逐渐和书本联系起来,当中的问题,暴露了课堂上不认真的很多弊病。在设计过程中,同学们的帮助和老师的教导是无比宝贵的,遇到问题,一起讨论,还不能解决,老师会最后把关。这样一层一层,逐渐养成了我们自主发现问题,解决问题的习惯。还有就是在做一个课题时,善于

11、寻找资源,利用资源也是很重要的一环,我们虽然摒弃绝对的“拿来主义”,但是事必躬亲也是同样不可取的,反而会无谓的加大工作量。有些部分,已经形成一个模板,可以直接套用。这在以后的学习工作过程中,同样具有借鉴意义。最后,在实践的过程中,对这次的课题,和书本的知识有了更深的体会。比如:自己熟悉的计算机系统和程序设计语言模拟操作系统基本功能的设计方法及其实现过程 用完成各分项功能。在算法的实现过程中,要求可决定变量应是动态可变的;同时模块应该有一个合理的输出结果。具体可参照实验的程序模拟 .各功能程序要求自行编写程序实现,不得调用现有操作系统提供的模块或功能函数。磁盘调度程序模拟。先来先服务调度算法.

12、最短寻道时间优先调度,循环(SCAN)调度算法。磁盘调度让有限的资源发挥更大的作用。一个礼拜的课程设计很快就结束了,当中很紧张,也很充实,最后完成一份东西是也觉得一份欣喜。它的完成,离不开同学一起的努力,更离不开老师的辛勤教导,不厌其烦的解答问题。他是集体的结晶,共有的财富,而我得到的专业知识,学习方法和教训,则是个人的珍贵的财产。虽然课程设计结束了,但是这门课的学习远未结束,专业的学习远未结束,他将陪伴我们一生。对这次课程设计肤浅的心得,就是如此了,再次谢谢老师。 J计算机0902班 徐阳30911100427.参考文献 (1) 汤小丹 梁红兵 哲凤屏 汤子瀛 编著. 计算机操作系统(第三版

13、).西安电子科技大学出版社. 2007.(2) 谭浩强 编著.C程序设计(第三版).清华大学出版社.20058附源代码 #includegraphics.h#includestdio.h#includemath.hvoid show() printf(nnnnnnn*welcome to use the system!*n); printf( 1.enter the datan); printf( 2.fcfsn); printf( 3.sstfn); printf( 4.scann); printf( 5.c-scann); printf( 6.breakn); printf( choose

14、 the number to start.n);void turn(int *t,int n) int i,j,k; for(i=0;in-1;i+) for(j=i+1;jtj) k=ti; ti=tj; tj=k; void sstf(int *a,int f) int i,t,m,n=0,j=0,k,b10; turn(a,10); m=fabs(a0-f); for(i=1;it) m=t; n=i; if(an+1-anan-an-1) j=1; if(j=1) if(n%2=0) k=n/2; for(i=0;ik;i+) t=ai; ai=an; an=t; n-; else k

15、=(n+1)/2; for(i=0;ik;i+) t=ai; ai=an; an=t; n-; else k=9-n; for(i=0;i=k;i+) bi=an; n+; n=9-k-1; for(i=k+1;i10;i+) bi=*(a+n); n-; for(i=0;i10;i+) ai=bi; for(i=0;i10;i+) printf(%d ,ai);void scan(int *a,int f) int i,t,m,n=0,j=0,k,b10; turn(a,10); m=fabs(a0-f); for(i=1;it) m=t; n=i; if(anf) j=1; if(j=1)

16、 if(n%2=0) k=n/2; for(i=0;ik;i+) t=ai; ai=an; an=t; n-; else k=(n+1)/2; for(i=0;ik;i+) t=ai; ai=an; an=t; n-; else k=9-n; for(i=0;i=k;i+) bi=an; n+; n=9-k-1; for(i=k+1;i10;i+) bi=an; n-; for(i=0;i10;i+) ai=bi; for(i=0;i10;i+) printf(%d ,ai);void cscan(int *a,int f) int i,t,m,n=0,n1=0,j=0,k,b10; turn

17、(a,10); m=fabs(a0-f); for(i=1;it) m=t; n=i; if(anf) j=1; if(j=1) if(n%2=0) n1=n; k=n/2; for(i=0;ik;i-) t=ai; ai=an; an=t; n+; else n=n1; k=(n+1)/2; for(i=0;ik;i-) t=ai; ai=an; an=t; n-; else k=9-n; for(i=0;i=k;i+) bi=an; n+; n=0; for(i=k+1;i10;i+) bi=an; n+; for(i=0;i10;i+) ai=bi; for(i=0;i10;i+) pr

18、intf(%d ,ai);void mycircle(int x,int y) int k,i; for(k=0;k8;k+) setcolor(k+8); for(i=10;i100;i+=10) arc(x,y,k*45,(k+1)*45,i); void round(int x,int y,int radius,int *t,int f) int k,i,m=1,m1,n=0; m1=m; bar(315,199,f+315,201); getch(); while(m) m=m1; for(k=0;k8;k+) setcolor(k+8); for(i=radius;i100;i+=1

19、0) arc(x,y,m*45,(m+1)*45,i); m+; bar(315,199,*(t+n)+315,201); sleep(1); cleardevice(); n+; m1+; if(n-10=0) break; if(m1-8=0) m1=0; main() int k,i,driver,mode,first=30; int a10; char t; driver=VGA;mode=VGAHI; initgraph(&driver,&mode,); setbkcolor(0); show(); t=getch(); while(t) t=getch(); switch(t) c

20、ase(1): for(i=0;i10;i+) printf(input %dth data:,i+1); scanf(%d,&ai); printf(press any key to continue.); getch(); cleardevice(); show(); break; case(2): for(i=0;i10;i+) printf(%d ,ai); circle(315,200,1); floodfill(315,200,15); mycircle(315,200); round(315,200,10,a,90); printf(press any key to contin

21、ue.); getch(); cleardevice(); show(); break; case(3): sstf(a,first); circle(315,200,1); floodfill(315,200,15); mycircle(315,200); round(315,200,10,a,90); printf(press any key to continue.); getch(); cleardevice(); show(); break; case(4): scan(a,first); circle(315,200,1); floodfill(315,200,15); mycir

22、cle(315,200); round(315,200,10,a,90); printf(press any key to continue.); getch(); cleardevice(); show(); break; case(5): cscan(a,first); circle(315,200,1); floodfill(315,200,15); mycircle(315,200); round(315,200,10,a,90); printf(press any key to continue.); getch(); cleardevice(); show(); break; case(6): exit();

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

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