《操作系统》实验五 SPOOLing系统设计.doc_第1页
《操作系统》实验五 SPOOLing系统设计.doc_第2页
《操作系统》实验五 SPOOLing系统设计.doc_第3页
《操作系统》实验五 SPOOLing系统设计.doc_第4页
《操作系统》实验五 SPOOLing系统设计.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统实验五 SPOOLing系统设计6一、实验目的通过设计并运行一个简单的SPOOLing系统来模拟实际的SPOOLing输入/出过程,以掌握这种有用的技术。二、实验要求将SPOOLing输入/出处理程序编成一个独立的进程模块并与其他输入/出进程并发运行。SPOOLing进程负责把从输入设备读入的信息送到外存输入井中,或把外存输出井中的信息送到打印机等输出设备上输出。其余进程只要求编写输入/出部分的程序。三、实验内容1、 问题描述本系统利用内存来模拟SPOOLing输出过程。管理系统包括一个SPOOLing输出过程模块spoolout和一个SPOOLing输出请求服务程序spoolserver。Spoolserver负责接收并处理用户进程的输出请求;spoolout完成实际的输出。另外,系统中设计了3个请求SPOOLing输出的用户进程。它们共享用户进程模块userpro。2、 数据结构(1) 进程控制块PCB,内容含有:id 进程标识数;status 进程运行状态,可为“e”(执行)或“c”(完成)bufflag 输出缓冲区空闲标志,FALSE为空闲;filec 输出文件计数。本系统赋予spoolout进程和3个用户进程的标识数分别为0,1,2,3。(2) 输出请求块reqblock,内容含有:reqid 请求进程标识数;size 输出文件长度;addr 输出文件在输出井中的首地址。(3) 输出井,用数组well 表示。(4) 用户输出缓冲区,用二维数组userbuf3 表示。每个用户进程分别使用各自的输出缓冲区。此外,系统中还安排了下列管理数据(均是全程量):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 user1s output files?2The number of user2s output files?1The number of user3s output files?3User2 program is completed!User1 program is completed!User3 program is completed!User 1:file1,file_size=26Text:45636525466436656471276539User 2:file1,file_size=9Text:356563869User 1:file2,file_size=30Text:587685649409584034504969587495User 3:file1,file_size=15Text:437598098412659User 3:file2,file_size=2Text:87 User 3:file3,file_size=2Text:36 All files have been outputted!*END*判断x值及进程状态 ENDYN全部输出请求完成?x=0.9spoolout0.6=x0.9且进程3为可执行状态Userpro30.3=x0.6且进程2为可执行状态Userpro2X井当前空区大小?Spoolserver(p.s)YN保留本次请示NYEND置本进程为“完成”态本进程的输出全部完成?输出成功?调用spoolserver,请求输出本次/上次信息生成信息序列,送输出缓冲userbuf(i)输出缓冲userbuf(i)为空? Userpro(i)图2 用户进程模块程序开始运行时,显示提示提示信息,要求先后键入3个用户程序各自的输出文件数目和用以控制整个系统的运行。随后系统开始调度执行各用户进程和spoolout进程,并随机打印系统运行过程。五、实验题1、 改造输出,要求输出信息序列以文件形式处理程序输出对每次信息序列的长度做了限制,不允许超过输出缓冲区的长度,实际上并未实现文件形式的输出。一个输出文件的大小应不受输出缓冲区的限制。可将输出井划块,并且块长等于输出缓冲区的长度,另附加一个连接字。于是一个输出文件可分多次送入井内,且可散布在若干离散块中。Spoolout进程工作时,自动将一个输出文件连接起来输出,各输出文件不会相互混淆。2、设计一个SPOO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论