1881.操作系统课程设计报告.doc

上传人:文库蛋蛋多 文档编号:3073069 上传时间:2023-03-10 格式:DOC 页数:11 大小:198.50KB
返回 下载 相关 举报
1881.操作系统课程设计报告.doc_第1页
第1页 / 共11页
1881.操作系统课程设计报告.doc_第2页
第2页 / 共11页
1881.操作系统课程设计报告.doc_第3页
第3页 / 共11页
1881.操作系统课程设计报告.doc_第4页
第4页 / 共11页
1881.操作系统课程设计报告.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《1881.操作系统课程设计报告.doc》由会员分享,可在线阅读,更多相关《1881.操作系统课程设计报告.doc(11页珍藏版)》请在三一办公上搜索。

1、一 总体设计系统名称:多级反馈队列的模拟系统开发:1).开发工具:微软Visual Basic6.02).开发人员:项目负责人: 成员: 3) 开发计划及时间安排: 开发步骤 计划完成的任务计划完成时间实际完成情况1确定开发的项目名称,并熟悉相关知识,确定开发工具。(由小组内的所有成员研讨决定)1-2天模拟多级反馈队列的实现,用Visual Basic6.0实现可视化动态的模拟2详细分配任务,并明确每个人的任务,开始实现。这一阶段主要实现怎么控制进程的自动移出和判断2-4天分配了任务在实现自动控制方面有了一定的进展3怎么实现进程时间的判断及与其相应的处理。以及对应处理时cpu的位置1天用多个不

2、同的时钟交叉控制来实现,基本完成4实现控制台程序模块的设计,包括随即生成进程序列,用户自己设定的序列及各个队列的时间1天成功完成了程序控制台的功能和界面设计,模块测试通过5测试各个模块的功能,并对其进行整体测试1天发现了一些小问题,找出原因后一一解决了二 系统分析报告:很多进程调度方法都有一定的局限性,如短进程优先的调度法,仅照顾了短进程而忽略了长进程,而且如果并未指明进程的长度,则段进程优先和基于进程长度的抢占调度算法,都将无法使用,而多级反馈队列调度算法,则不必事先知道各种进程所需的时间,而且还可以满足各种类型进程的需要,因而它是目前被公认为的一种较好的进程调度算法。在采用多级反馈队列调度

3、算法的系统中,调度算法的实施过程如下:(1) 应设置多个就绪队列,并为各个队列赋予不同的优先级,第一个队列的优先级是最高,第二个队列次之,其余各队列的优先权逐个降低,该算法赋予各个队列中进程执行时间片,例如,第二个队列的时间片要不第一个队列的时间片长一倍,第i+1个队列的时间片要比第i个队列的时间片长一倍。(2) 当一个新进程进入内存后,首先将它放入第一队列的结尾,按FCFS原则排队等待调度,当论到该进程执行时, 如它能在该时间片后内完成,便可准备撤离系统,如果它在一个时间片结束尚未完成,调度程序便将该进程转入第二个队列的结尾,再同样地按FCFS原则等待调度执行;如果它在第二队列中运行一个时间

4、片后仍未完成,再依次将它放入第三个队列,如此下去,当第一长作业(进程)从第一队列依次降到第n队列后,在第n队列中便采用取按时间片轮转的方式运行。(3) 仅当第一个队列空闲时,调度程序才调度第二个队列中的进程运行,仅当第1(i-1)队列均空闲时,才会调度第I个队列中为某进程服务时,又有新进程进入优先权比较高的队列(第1(i-1)中的任何一个队列),则此时新进程将 抢占在运行进程的处理机,即由调度程序把在运行的进程放回到第I队列的结尾,把处理机分配给新到的高有限权进程。 就绪队列1就绪队列2就绪队列3就绪队列n 至CPU 至CPU 至CPU 至CPU (时间片: )用VB模拟的时候,可以用list

5、来显示进程。三 . 系统设计报告: 1)设计原理:本系统主要可视的模拟了多级反馈队列的工作过程,多级反馈队列的工作过程如下: 2)模拟的界面如下: 3)设计的模拟实现: 用list来模拟进程队列和需要的时间(剩余时间),用时钟来控制自动运行4)设计时主要解决的问题: (1)在多级反馈队列中,最主要的是队列的优先级,第一队列的优先级最高,运行时间最短,第二级队列次之,运行时间次短,最后的一级队列运行时间最长,优先级最低。这就要求当进程在第一队列运行没有完成时,自动进入第二级,如果完成,则进入完成队列。我们用时钟来实现,给每一个队列中设置一个时钟,用来设置各个队列的时间,在外部有相应的时钟来控制来

6、判断是否转入下一级队列还是进入完成队列。 (2)在最后一级队列中,如果没有处理完,则继续进入最后一级队列的结尾,等待下一次处理,直到完成。这样,控制最后一个的时钟和以前的设计是不一样的 (3)当第i级队列为空时,处理机才能去处理i+1级队列,也就意味着可能出现抢占CPU的情况,比如:当处理机处理第三级队列中的进程的时候,意味着第一第二队列已经为空,但当此时生成一批新进程时(新进程生成时只能进入第一级队列),这时,处理机抢占进行处理第一级队列。实现的时候,管理后面队列的时钟总要判对他前面的所有的队列中是否还有进程。关于CPU的位置,我们用一个时钟控制CPU的位置,它的时钟频率很高,比控制进程处理

7、的各个时钟的都快,这样,他以很高的频率扫描判断CPU应该在的位置。 (4)程序控制台主要用来设置一些基本条件,比如各个队列的时间等。5)设计界面和具体代码: 其中:timer1 timer2 timer3 用来记录第一第二第三队列的时间,timer4用来控制CPU的位置 timer5,timer7,timer6来控制各个对列的添加和进入完成队列 设计界面如下:源代码如下:Public pcb1 As StringPublic pcb0 As StringPublic time As StringPublic time0 As StringPrivate Sub Command1_Click()

8、Randomizerandi = Int(Rnd * (9 - 5 + 1) + 5)For i = 0 To randi Randomize rand = Int(Rnd * (10 - 1 + 1) + 1) Select Case rand Case 1 pcb = 进程控制块1 time = 100 Case 2 pcb = 进程控制块2 time = 200 Case 3 pcb = 进程控制块3 time = 300 Case 4 pcb = 进程控制块4 time = 400 Case 5 pcb = 进程控制块5 time = 500 Case 6 pcb = 进程控制块6 t

9、ime = 600 Case 7 pcb = 进程控制块7 time = 700 Case 8 pcb = 进程控制块8 time = 800 Case 9 pcb = 进程控制块9 time = 900 End Select List1.AddItem pcb List5.AddItem time Next i Timer5.Enabled = True Timer4.Enabled = TrueEnd SubPrivate Sub Command2_Click()EndEnd SubPrivate Sub Command3_Click()If Text1.Text = ThenMsgBox

10、 (请输入生成的条件!)Elserandi = Text1.TextFor i = 0 To randi Randomize randi = Int(Rnd * (10 - 1 + 1) + 1) Timer1.Interval = Text2.Text Timer2.Interval = Text3.Text Timer3.Interval = Text4.Text Select Case randi Case 1 pcb = 进程控制块1 time = 100 Case 2 pcb = 进程控制块2 time = 200 Case 3 pcb = 进程控制块3 time = 300 Cas

11、e 4 pcb = 进程控制块4 time = 400 Case 5 pcb = 进程控制块5 time = 500 Case 6 pcb = 进程控制块6 time = 600 Case 7 pcb = 进程控制块7 time = 700 Case 8 pcb = 进程控制块8 time = 800 Case 9 pcb = 进程控制块9 time = 900 End Select List1.AddItem pcb List5.AddItem time Next i Timer5.Enabled = True End IfEnd SubPrivate Sub Form_Load()If F

12、orm1.Option1.Value = True ThenText1.Enabled = FalseText2.Enabled = FalseText3.Enabled = FalseText4.Enabled = FalseEnd IfEnd SubPrivate Sub Option1_Click()If Option1.Value = True ThenText1.Enabled = FalseText2.Enabled = FalseText3.Enabled = FalseText4.Enabled = FalseEnd IfEnd SubPrivate Sub Option2_C

13、lick()If Option2.Value = True ThenText1.Enabled = TrueText2.Enabled = TrueText3.Enabled = TrueText4.Enabled = TrueEnd IfEnd Sub Private Sub Timer4_Timer()If List1.List(0) Then Picture2.Left = 360ElseIf List2.List(0) = Then Picture2.Left = 5500 Else Picture2.Left = 2800 End If End If End SubPrivate S

14、ub Timer5_Timer()If List1.List(0) Then time0 = List5.List(0) pcb0 = List1.List(0) a = Timer1.Interval If time0 a Then List1.RemoveItem 0 List5.RemoveItem 0 List2.AddItem pcb0 List7.AddItem time0 - a Else List1.RemoveItem 0 List5.RemoveItem 0 List6.AddItem pcb0 End If Else Timer6.Enabled = True End I

15、f End SubPrivate Sub Timer6_Timer()If Form1.List1.List(0) = Then If List2.List(0) Then time0 = List7.List(0) pcb0 = List2.List(0) a = Timer2.Interval If time0 a Then List2.RemoveItem 0 List7.RemoveItem 0 Label12.Caption = pcb0 List3.AddItem pcb0 List8.AddItem time0 - a Else List2.RemoveItem 0 List7.

16、RemoveItem 0 List6.AddItem pcb0 End If Else Timer7.Enabled = True End If End If End SubPrivate Sub Timer7_Timer()If Form1.List1.List(0) = Then If List2.List(0) = Then If List3.List(0) Then time0 = List8.List(0) pcb0 = List3.List(0) a = Timer3.Interval If time0 a Then List3.RemoveItem 0 List8.RemoveI

17、tem 0 List3.AddItem pcb0 List8.AddItem time0 - a Else List3.RemoveItem 0 List8.RemoveItem 0 List6.AddItem pcb0 End If Else MsgBox (进程完毕) End IfEnd IfEnd IfEnd Sub四 。系统模块说明 系统共有三个模块:程序控制模块,具体实现模块和处理机模块 功能如下: 程序控制模块:实现生成进程的条件,包括两种方式:随机和设定,随机生成的时候,生成要设置的所有的条件,设定时,要按照后面给出的条件来设定。CPU处理模块:由一个时钟来控制CPU的位置,它的

18、频率很高,基本上可以达到与新进程同步具体实现模块:实现多级反馈队列的模拟。当一个新进程进入内存后,首先将它放入第一队列的结尾,按FCFS原则排队等待调度,当论到该进程执行时, 如它能在该时间片后内完成,便可准备撤离系统,如果它在一个时间片结束尚未完成,调度程序便将该进程转入第二个队列的结尾,再同样地按FCFS原则等待调度执行;如果它在第二队列中运行一个时间片后仍未完成,再依次将它放入第三个队列,如此下去,当第一长作业(进程)从第一队列依次降到第n队列后,在第n队列中便采用取按时间片轮转的方式运行。仅当第一个队列空闲时,调度程序才调度第二个队列中的进程运行,仅当第1(i-1)队列均空闲时,才会调

19、度第I个队列中为某进程服务时,又有新进程进入优先权比较高的队列(第1(i-1)中的任何一个队列),则此时新进程将 抢占在运行进程的处理机,即由调度程序把在运行的进程放回到第I队列的结尾,把处理机分配给新到的高有限权进程。 五 . 系统分调和总调报告 1) 分调报告:主要是指具体实现模块和控制模块。 具体实现模块:(1) 当timer4的频率太快时,生成的进程刚进入第一队列就会处理完毕,这时体现不出真正的模拟,这是可以将其频率设的慢一点,这时,他不断的进行判断测试,当发现第一个为空时,才激活控制第二个队列的timer5来工作。(2) 在最后的队列中和以前的不一样,开始时的时候把它设置的和前面一样

20、,出现了还没有运行完成就加入完成队列。显然是个错误。将其纠正后,正常运行(3) 比如在处理第三队列的进程时,新进入队列,则转向处理第一队列,这时,其他的队列的时钟则为不可用。后面的时钟必须判断前面的队列是否为空。(4) 当进程运行完毕后,弹出进程完毕的对话框,它也是由时钟控制的,即只要全部队列为空,就一直循环的探出对话框。这一点我没有时间解决控制模块:单独与此模块,主要是测试几个设计的视线是否正常(1) 当单选在随机生成的时候,所有的文本框均不可用,刚开始的时候,我把它们的可用设为真,有时可用,有时相反。这时应该把它们置位假,而单选默认在随机生成,(2) 当选择设置时,其范围不能超出后面所给的

21、,否则会出现混乱2)总调报告:总调时主要解决两个问题;一是如何把设置和随机产生的条件赋予队列,另一个是怎么使CPU处于正常的位置;(1) 第一个其实很简单,只要将所生成的东西赋值与pcb0 tim0即可,他们是用来记录相应的条件的。(2) 这个问题有点复杂,因为CPU和队列是完全不相干的两个方面,要实现机会是同步转化基本不可能,我采取了这样的策略:将各个时钟的频率置得很慢,这样可以一方面更好的显示处理的过程,另一方面,将CPU的时钟置得很大,这样Timer4不停的扫描,只要前面有新加的进程,它会在最短时间内转过去,原来的进程停止(这是由具体实现模块实现的)六. 系统用户说明: 系统用户使用说明

22、:现在就如何使用该系统作一个说明,系统共分三个模块,下面我们就每一个模块一一说明: 1. 该系统是在VB环境下设计的,主要为了完成进程的多级反馈队列调度算法,为了使该过程直观系统使用cpu跟踪队列法,即进程在那个队列运行,模拟cpu就在那个队列的上部。若在处理第三个队列时又有进程进入第一个队列,则cpu将转去处理第一个进程。2. 队列中有进程名和计划时间两列,进程名中列出所有在该列中的进程,在第一列中的需要时间总数,也就是计划要花多少时间才能完成该进程,在第二列中,除有进程名外,还有剩余时间,也就是进程在第一列处理后还差多少时间才能完成,第三列一样,要注意该设计思想,在处理第三个队列的进程时,

23、若有进程进入第一个队列,则cpu就转去处理权限高的新到来的进程。该系统只是一个模拟,设计时队列的个数有限,只有四个队列,第四个队列就是处理完了的进程的队列。3. 该模块是一控制台,包括产生进程的两种方法,一是随机产生,选用这种形式时,以下的功能就被屏蔽,二是自己设定,你可以在该模块中的进程块的数量中填入你想要的进程数(其中所填数在1到99之间),在时间队列中,填如入进程的在 每个队列运行的时间,值得注意:第一队列的时间要你第二队列的数值要大,第二队列的时间要比第三队列要大。在该模块中,随机产生按扭,是用于产生随机进程的,而生成进程按扭是在自己设定时使用,在填好以上的要求后,按此按扭即刻生成进程,若没有填上面要求要填的,或是没有填写完整,系统会弹出一对话框,给出提示信息,注意:所填的值应在所给定的范围内,否则系统也会弹出对话框,提示你信息有误。最后是退出按扭。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号