《操作系统》课程设计指导书范文Word文档下载推荐.docx
《《操作系统》课程设计指导书范文Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《《操作系统》课程设计指导书范文Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
进程所需时间片数
进程状态
进程控制块链结构如下:
其中:
RUN—当前运行进程指针;
HEAD—进程就绪链链首指针;
TAID—进程就绪链链尾指针。
2、算法与框图
(1)优先数法。
进程就绪链按优先数大小从高到低排列,链首进程首先投入运行。
每过一个时间片,运行进程所需运行的时间片数减1,说明它已运行了一个时间片,优先数也减3,理由是该进程如果在一个时间片中完成不了,优先级应该降低一级。
接着比较现行进程和就绪链链首进程的优先数,如果仍是现行进程高或者相同,就让现行进程继续进行,否则,调度就绪链链首进程投入运行。
原运行进程再按其优先数大小插入就绪链,且改变它们对应的进程状态,直至所有进程都运行完各自的时间片数。
(2)简单轮转法。
进程就绪链按各进程进入的先后次序排列,进程每次占用处理机的轮转时间按其重要程度登入进程控制块中的轮转时间片数记录项(相当于优先数法的优先数记录项位置)。
每过一个时间片,运行进程占用处理机的时间片数加1,然后比较占用处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运行进程排到就绪链末尾,调度链首进程占用处理机,且改变它们的进程状态,直至所有进程完成各自的时间片。
(3)程序框图如下图1所示。
图1进程调度框图
3、程序运行结果格式
(1)程序运行结果格式
TYPETHEALGORITHM:
PRIORITY
OUTPUTOFPRIORITY
==============================
RUNNINGPROC.WAITINGQUEUE
3415
ID12345
PRIORITY93830290
CPUTIME00000
ALLTIME33634
STATEWRWWW
NEXT53410
……
SYSTEMFINISHED
(2)说明:
程序启动后,屏幕上显示“TYPETHEALGORTITHM”,要求用户打入使用何种调度算法。
本程序只编制了优先数法(“priority”)和简单轮转法(“RoundRobin”)两种。
打入某一算法后,系统自动形成各进程控制块,实施该算法的进程调度算法,并打印各进程在调度过程中的状态和参数的变化。
4、小结
本任务用较简单的二种方法模拟进程调度,在进程运行时间和进程状态变化方面也做了简化,但已经能够反映进程调度的实质。
本任务能加深对进程调度的理解和熟悉它的实施方法。
三、设计题
自行设计一个进程调度程序,在计算机上调试和运行该程序,其功能应该不亚于示例。
直观地评测各种调度算法的性能。
提示1:
可编写一个反馈排队法(FB方法)的进程调度程序。
该算法的基本思想是设置几个进程就绪队列,如队列1……队列i,同一队列中的进程优先级相同,可采用先进先出方法调度。
各队列的进程,其优先级逐队降低。
即队列1的进程优先数最高,队列i的最低。
而时间片,即以此占用CPU的时间正好相反,队列1的最短,队列i则最长。
调度方法是开始进入的进程都在队列1中参加调度,如果在一个时间片内该进程完不成,应排入队列2,即优先级要降低,但下一次运行的时间可加长(即时间片加长了)。
以此类推,直至排到队列i。
调度时现在队列1中找,待队列1中已无进程时,再调度队列2的进程,一旦队列1中有了进程,又应返回来调度队列1的进程。
这种方法最好设计成运行过程中能创造一定数量的进程,而不是一开始就生成所有进程。
提示2:
可综合各种算法的优先,考虑在各种不同情况下的实施方法,如上述FB算法。
也可选用有关资料中报导的一些方法,加以分析、简化和实现。
四、思考题
(1)示例中的程序,没有使用指针型(pointer)数据结构,如何用指针型结构改写本实例,使更能体现C语言的特性。
(2)如何在程序中真实地模拟进程运行的时间片?
(3)如果增加进程的“等待”状态,即进程因请求输入输出等问题而挂起的状态,如何在程序中实现?
课程设计任务
(二):
请求页式存储管理
近年来,由于大规模集成电路(LSI)和超大规模集成电路(VLSI)技术的发展,使存储器的容量不断扩大,价格大幅度下降。
但从使用角度看,存储器的容量和成本总是受到一定的限制。
所以,提高存储器的利用效率始终是操作系统研究的重要课题之一。
其中虚拟存储技术是用来扩大内存容量的一种重要方法。
学生应独立地用C语言(或其它程序设计语言)编写几种常用的存储分配算法,并设计一个存储管理的模拟程序,对各种算法进行分析比较,评测其性能优劣,从而加深对这些算法的了解。
为了比较真实地模拟存储管理,可预先生成一个大致符合实际情况的指令地址流。
然后模拟这样一种指令序列的执行来计算和分析各种算法的访问命中率。
本示例采用页式分配存储管理方案,并通过分析计算不同页面淘汰算法情况下的访问命中率来比较各种算法的优劣。
另外也考虑到改变页面大小和实际存储器容量对计算结果的影响,从而可为选择好的算法、合适的页面尺寸和实存容量提供依据。
本程序是按下述原则生成指令序列的:
(1)50%的指令是顺序执行的。
(2)25%的指令均匀散布在前地址部分。
(3)25%的指令均匀散布在后地址部分。
示例中选用最佳淘汰算法(OPT)和最近最少使用页面淘汰算法(LRU)计算页面命中率。
公式为
假定虚存容量为32K,页面尺寸从1K至8K,实存容量从4页至32页。
(1)最佳淘汰算法(OPT)。
这是一种理想的算法,可用来作为衡量其他算法优劣的依据,在实际系统中是难以实现的,因为它必须先知道指令的全部地址流。
由于本示例中已预先生成了全部的指令地址流,故可计算出最佳命中率。
该算法的准则是淘汰已满页表中不再访问或是最迟访问的的页。
这就要求将页表中的页逐个与后继指令访问的所有页比较,如后继指令不在访问该页,则把此页淘汰,不然得找出后继指令中最迟访问的页面淘汰。
可见最佳淘汰算法要花费较长的运算时间。
(2)最近最少使用页淘汰算法(LRU)。
这是一种经常使用的方法,有各种不同的实施方案,本例采用不断调整页表链的方法,即总是淘汰页表链链首页,而把新访问的页插入链尾。
如果当前调用页已在页表内,则把它再次调整到链尾。
这样就能保证最近使用的页,总是处于靠近链尾部分,而不常使用的页则移到链首,逐个被淘汰,在页表较大时,调整页表链的代价也是不小的。
(3)程序框图如下图2所示。
图2计算页面命中率框图
3、程序运行结果格式
(1)程序运行结果格式
THEVIRTUALADDRESSSTREAMASFOLLOWS:
a[0]=16895a[1]=16896a[2]=16897a[3]=16302
a[4]=25403a[5]=13941a[6]=13942a[7]=8767
A[252]=23583a[253]=20265a[254]=20266a[255]=20267
==========================================
Thealgorithmis:
opt
PAGENUMBERWITHSIZE1kFOREACHADDRESSIS:
pageno[0]=17pageno[1]=17pageno[2]=17pageno[3]=16
pageno[4]=25pageno[5]=14pageno[6]=14pageno[7]=9
pageno[252]=24pageno[253]=20pageno[254]=20pageno[255]=20
vmsize=32kpagesize=1k
---------------------------
pageassignedpages_in/totalreferences
47.0000E-1
67.0000E-1
88.0000E-1
108.0000E-1
128.0000E-1
149.0000E-1
169.0000E-1
189.0000E-1
209.0000E-1
229.0000E-1
249.0000E-1
269.0000E-1
289.0000E-1
309.0000E-1
329.0000E-1
PAGENUMBERWITHSIZE2kEACHADDRESSIS:
PAGENUMBERWITHSIZE4kEACHADDRESSIS:
PAGENUMBERWITHSIZE8kEACHADDRESSIS:
Endtheresultforopt
************************************************
thealgorithmislru
……同上
Endtheresultforlru
*********************************************
(2)示例中使用的有关数据结构、常量和变量说明如下:
length被调试的指令地址流长度,可作为一个常量设定。
called当前请求的页面号。
pagefault页面失效标志,如当前请求页called已在页表内,则置pagefault=false,否则为true。
table页表。
table[i]=j,表示虚存的第j页在实存的第i页中。
used当前被占用的实存页面数,可用来判断当前实存中是否有空闲页。
(3)本程序启动后,屏幕上显示“thealgorithmis:
”,用户可选择最佳淘汰算法(打入“OPT”)或者最近最少使用淘汰算法(打入“LRU”)计算页面命中率。
当然还可以加入各种其他的算法。
4、小结
(1)编制评测各种算法性能的模拟程序是研制系统程序,尤其是操作系统所必须的。
模拟的环境愈是真实,其结果愈是可靠,也就更有利于选择合适的方案。
本任务虽然简单,但可作为一个尝试。
(2)注意正整数的范围只能从0……32767,限制程序中的虚存尺寸为32K,实际如采用更大的虚存实存,更能说明问题。
(1)编制和调试示例给出的请求页式存储管理程序,并运行之。
2种算法均完成得70分。
(2)增加2种已学过的淘汰算法,计算它们的页面访问命中率。
试对各种算法的命中率加以比较分析。
每增加1种加15分,满分100分。
提示:
可选用FIFO方法,即先访问的页先淘汰,也可选用LRU方法中的其他方案。
如在页表中设置标志位,按标志位值得变化来淘汰。
也可用LFU方法,为页表中各页面设置访问计数器,淘汰访问频率最低的页(注意:
当前访问的页不能淘汰)等等。
(1)设计一个界地址存储管理的模拟系统,模拟界地址方式下存储区的分配和回收过程。
必须设置一个内存分配表,按照分配表中有关信息实施存储区的分配,并不断根据存储区的分配和回收修改该表。
算法有首次匹配法,循环首次匹配法和最佳匹配法等。
可用各种方法的比较来充实实习内容。
可使用碎片收集和复盖等技术。
(2)自行设计或选用一种较为完善的内存管理方法,并加以实现。
设计一个段页式管理的模拟程序或通过一个实际系统的消化和分析,编制一个程序来模拟该系统。
课程设计任务(三):
文件操作与管理
随着社会信息量的不断增长,要求计算机处理的信息与日俱增,涉及到社会生活的各个方面。
因此,文件管理是操作系统的一个极为重要的组成部分。
学生应独立地用C语言(或其它程序设计语言)编写和调试一个简单的文件系统,模拟文件管理的工作过程。
从而对各种文件操作命令的实质内容和执行过程有比较深入的了解,掌握它们的实施方法,加深理解课堂上讲授过的知识。
2、要求
(1)设计一个有n个用户的文件系统,每个用户最多可保存m个文件。
(2)限制用户在一次运行中只能打开l个文件。
(3)系统应能检查输入命令的正确性,出错要显示出错原因。
(4)对文件必须设置保护措施,如只能执行,允许读、允许写等。
在每次打开文件时,根据本次打开的要求,再次设置保护级别,即可有二级保护。
(5)对文件的操作至少应有下述几条命令:
creat建立文件。
delete删除文件。
open打开文件。
close关闭文件。
read读文件。
write写文件。
1.题目
(1)本任务设计一个10个用户的文件系统,每个用户最多可保存10个文件,一次运行中用户可打开5个文件。
(2)程序采用二级文件目录,即设置主文件目录(MFD)和用户文件目录(UFD)。
前者应包含文件主(即用户)及他们的目录区指针;
后者应给出每个文件主占有的文件目录,即文件名,保护码,文件长度以及他们存放的位置等。
另外为打开文件设置运行文件目录(AFD),在文件打开时应填入打开文件号,本次打开保护码和读写指针等。
(3)为了便于实现,简化对文件的读写操作,在执行读写命令时,只修改读写指针,并不进行实际文件的读写操作。
2.算法与框图
(1)因系统小,文件目录的检索使用了简单的线性搜索,而没有采用Hash等有效算法。
(2)文件保护简单实用了三位保护码,对应于允许读、允许写和运行执行,如下所示:
111
允许写允许读允许执行
如对应位为0,则不允许。
(3)程序中使用的主要数据结构如下:
主文件目录和用户文件目录
打开文件目录
(4)程序框图如图3所示。
图3文件系统框图
3.程序运行结果格式
RUN
YOURNAME?
YOUIJIN
YOURNAMEISNOTNTHEUSERNAMETABLE,TRYAGAIN.
YOUJIN
YOURFILEDIRECTORY
FILENAMEPROTECTIONCODELENGTH
XUMAIN1119999
F11110
YOUJINYU111100
******0000
COMMANDNAME?
CREATER
COMMANDNAMEGIVENISWRONG!
ITSHOULDBEONEOFFOLLOWING:
CREATE,DELETE,OPEN,CLOSE,READ,WRITE,BYE.TRYAGAIN
CREATE
THENEWFILESNAME(LESSTHAN9CHARS)?
F2
THENEWFILE’SPROTECTIONCODE?
101
THENEWFILEISCREATED.
ENTERTHEOPENMODE?
101
THISFILEISOPENED,ITSOPENNUMBERIS1
READ
OPENFILENUMBER?
ERRORMESSAGE:
ITISNOTALLOWEDTOREADTHISFILE!
!
WRITE
1
HOWMANYCHARACTERSTOBEWRITTENINTOTHATFILE?
190
COMMANDNAME?
OPEN
FILENAMETOBEOPENED?
F1
111
THISFILEISOPENED,ITSOPENNUMBERIS2
WRITE
2
CLOSE
THEOPENEDFILENUMBERTOBECLOSED?
2
THISFILEISCLOSED.
BYE
NOWYOURFILEDIRECTORYISFOLLOWING:
XUMAN1119999
F11111900
YOUJINYU111100
F2101190
*****0000
GOODBXE.
(2)本程序用交互方式工作。
启动程序后,系统查询:
YOURNAME?
输入用户名,登入主目录后,系统立即响应。
注意,本程序中前一个登录用户名的程序,用户需实现在主目录中登入用户名。
系统响应后会给出用户文件目录,然后显示:
打入相应命令后就可建立、删除、读、写、打开和关闭文件,如命令输错,系统会指出并给用户提示。
操作完成后应关闭文件,然后输入“BYE”命令退出文件系统。
退出前系统再次打印当前文件目录。
4.小结
文件系统的管理有各种各样的方案和算法。
由于时间和条件的限制,本示例只是简单的模拟了文件的几种操作命令,学生可从其它途径进一步深入学习和探讨。
(1)编制和调试示例给出的文件操作与管理程序,并运行之。
(2)增加3个文件操作命令,并加以实现。
每增加1种加10分,满分100分。
可以增加移动读写指针命令,如把指针移至某一起始位置或文件头;
改变文件属性的命令,如更改文件名,改变文件保护级别等。
(1)编制一个通过屏幕选择命令的文件管理系统,每幅屏幕要为用户提供足够的选择信息,不需要输入冗长的命令。
为了便于用户操作,微机大多采用按照屏幕的提示选择命令,这里可以使用高级语言编制通过屏幕显示选择文件操作命令的文件管理模拟程序。
(2)设计一个树形目录结构的文件系统,其根目录为root,各分支可以是目录,也可以是文件,最后的叶子都是文件。
可以参考Linux操作系统的文件结构和管理方法。
采用多级保护,即把用户分成文件主,伙伴和普通用户三类,分别给予使用权。
为了缩短搜索文件的路径,可设置工作目录,能在当前使用的目录下查找文件,不必每次都从根目录开始查找。
(3)根据学校的各级机构,编制一个文件系统,要求上级机构能查阅和修改下级机构的文件,而下级机构只有在授权情况下才能查阅上级的文件,但不能修改,同一级的文件可以共享。
提示3:
学校机构可由如下图4组成:
图4学校机构图
课程设计任务(四):
死锁观察与避免
死锁会引起进程僵死,严重的话会造成整个系统瘫痪。
因此,死锁现象是操作系统特别是大型系统中必须设法防止的。
学生应独立的使用C语言(或其它程序设计语言)编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有效的防止死锁的发生。
从而更直观地了解死锁的起因,初步掌握防止死锁的简单方法,加深理解课堂上讲授过的知识。
(1)设计一个由n个并发进程共享m个系统资源的系统。
系统中进程可动态地申请资源和释放资源。
系统按各进程的申请动态地分配各资源。
(2)系统应能显示各进程申请和释放资源以及系统动态分配资源的过程,便于用户观察和分析。
(3)系统应能选择是否采用防止死锁算法或选用何种防止算法(如有多种算法)。
在不采用防止算法时观察死锁现象的发生过程。
在使用防止死锁算法时,了解在同样申请条件下,防止死锁的过程。
本示例采用银行家算法防止死锁的发生。
假设有三个并发进程共享十个系统。
在三个进程申请的系统资源之和不超过10时,当然不可能发生死锁,因为各个进程申请的资源都能满足。
在有一个进程申请的系统资源数超过10时,必然会发生死锁。
应该排除这二种情况。
程序采用人工输入各进程的申请资源序列。
如果随机给各进程分配资源,就可能发生死锁,这就是不采用防止死锁算法的情况。
假如,按照一定的规则,为各进程分配资源,就可以防止死锁的发生。
示例中采用了银行算法。
2、算法与框图
程序框图如图5,6,7所示:
图5防止死锁程序框图
图6死锁处理程序框图
图7safe函数框图
INPUT:
OPTION=0
CLAIMOFPROCESS1IS:
123