- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《操作系统》实验五 SPOOLing系统设计
《操作系统》实验五 SPOOLing系统设计
一、实验目的实验实验”(执行)或“c”(完成)
bufflag 输出缓冲区空闲标志,FALSE为空闲;
filec 输出文件计数。
本系统赋予spoolout进程和3个用户进程的标识数分别为0,1,2,3。
输出请求块reqblock,内容含有:
reqid 请求进程标识数;
size 输出文件长度;
addr 输出文件在输出井中的首地址。
输出井,用数组well[ ]表示。
用户输出缓冲区,用二维数组userbuf[3][ ]表示。每个用户进程分别使用各自的输出缓冲区。
此外,系统中还安排了下列管理数据(均是全程量):
ebc 空闲reqblock计数,初值为10;
ebp 当前空闲reqblock指针,初值为0;
cbc 当前非空reqblock指针,初值为0;
wellsize 输出井当前可用空间大小;
wellptr 输出井环形指针,指出当前空区首地址;
n 用户的输出请求总数,用以控制系统的运行结束。
3.算法
进程调度采用随机调度法。3个用户进程的调度概率各为30%,spoolout进程为10%。这由产生随机数来模拟。
用户进程在各自的输出缓冲区中形成输出信息序列,而后调用服务程序spoolserver请求输出。Spoolserver接受输出请求,从相应输出缓冲区中取出信息序列送输出井,并构造一个reqblock,提交spoolout进程使用,然后返回用户进程继续执行。Spoolout进程执行,根据取出的某reqblock的内容将输出井中的相应输出文件送实际输出设备,如打印机或CRT,随之释放相应井区。
四、程序框图
图1至4分别示出了本系统的输出主控程序、用户进程模块、SPOOLing输出服务程序及SPOOLing输出进程的大致流程。4、输出示意
The number of user1’s output files?2
The number of user2’s output files?1
The number of user3’s output files?3
User2 program is completed!
User1 program is completed!
User3 program is completed!
User 1:file1,file_size=26
Text:45636525466436656471276539
User 2:file1,file_size=9
Text:356563869
User 1:file2,file_size=30
Text:587685649409584034504969587495
User 3:file1,file_size=15
Text:437598098412659
User 3:file2,file_size=2
Text:87
User 3:file3,file_size=2
Text:36
All files have been outputted!
******END************
图1 SPOOLing输出主控程序流程
图2 用户进程模块
程序开始运行时,显示提示提示信息,要求先后键入3个用户程序各自的输出文件数目和用以控制整个系统的运行。随后系统开始调度执行各用户进程和spoolout进程,并随机打印系统运行过程。
五、实验题
改造输出,要求输出信息序列以文件形式处理
程序输出对每次信息序列的长度做了限制,不允许超过输出缓冲区的长度,实际上并未实现文件形式的输出。一个输出文件的大小应不受输出缓冲区的限制。可将输出井划块,并且块长等于输出缓冲区的长度,另附加一个连接字。于是一个输出文件可分多次送入井内,且可散布在若干离散块中。Spoolout进程工作时,自动将一个输出文件连接起来输出,各输出文件不会相互混淆。
2、设计一个SPOOLing输入的模拟系统。
六、实验报告
1、实习的目的、要求和题目;
2、示例程序的详细分析报告;
3、自编程序的设计思想、框图结构、所使用的数据结构及符号说明;
4、自编程序的源程序清单(附上注释);
5、自编程序的运行结果;
6、实习总结
1
main
初始化
生成随机数x
判断x值及进程状态
Userpro1
X0.3且进程1为可执行状态
Userpro2
0.3=x0.6且进程2为可执行状态
Userpro3
0.6=x0.9且进程3为可执行状态
spoolout
x=0.9
全部输出请求完成?
N
Y
END
Userpro(i)
输出缓冲userbuf(i)为空?
生成信息序列,送输出缓冲userb
文档评论(0)