操作系统实验设备的管理spooling.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验五 设备管理(spooling 技术) ? 实验题目:编写一个Spooling 程序来模拟假脱机输入输出过程 2 一、实验目的 假脱机(Spooling)技术是广泛用于各种系统的一种行之有效的输入输出手段,这种技术使用比较简单的方法,缓和了处理机与低速输入输出设备速度不匹配的矛盾,提高设备的利用率。为了更好地掌握这种技术,本实习要求学生独立地用高级语言编写一个Spooling程序来模拟假脱机输入输出过程。 二、实验要求及实验环境 可将Spooling 输入输出程序编制成一个独立的进程与其它要求输入输出的进程并发工作。Spooling 进程负责从卡片机或光电读带机等设备读入信息送到磁盘或磁鼓的输入井中,或是把磁盘、磁鼓输出井的信息块送到打印机或CRT 等设备输出。其余进程只要求编写输入输出部分的程序,可不考虑其它操作。 本实验编制一个Spooling 输出进程与另外二个要求输出的进程并发运行。要求输出进程每运行一次只输出一项信息到输出井,待输出到一个结束标志时,表示一批信息输出完成,在输出井中形成一输出信息块,再由Spooling 进程把整个信息块实际输出到打印机或CRT。因此,进程的运行必须考虑同步问题。 采用进程的随机调度法模拟Spooling 输出是合适的,因为各进程的输出应是随机的。 (1)进程调度采用随机调度法,二个要求输出进程的调度概率各为45%,Spooling 进程为10%。 (2)可为进程设置三种工作状态:可运行状态,不可运行状态和结束状态。为了区分要求输出进程和Spooling 进程处于不可运行状态的不同原因,又把不可运行状态分成不可运行状态1 和2。分别叙述如下: ①进程执行完毕后应置成“结束状态”。 ②要求输出进程在输出信息时,如发现输出井已满,应置成“不可运行状态1”。 ③Spooling 进程在输出井空时应置成“不可运行状态2”。 ④Spooling 进程输出一个信息块后,应释放该信息块所占的输出井位置,并将正在等待输出的进程置成“可运行状态”。 ⑤要求输出进程在输出信息到输出井并形成信息块后,应将Spooling 进程置成“可运行状态”。 三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系) 1.流程图 4 图 假脱机输出系统框图 5 图 请求输出进程程序框图 6 图 Spooling 进程程序框图 2.逻辑设计 ①进程控制块(PCB) 对于输出进程和spooling 进程两种不同的进程,采用相同的结构处理,包括进程标识,进程状态,输出缓冲,输出指针,信息块首地址,输出长度等内容。需要支持在不同状态之间的转换,输出缓冲晴空等操作。 ②输出请求块包括要求输出的进程标识,输出长度,输出首地址等内容。7 ③输出井使用队列结构模拟。需要支持队列重整,取队首元素,删除队首元素,在队尾插入等操作,需要使用closed,open 两个指针协助操作。 3、物理设计 ①进程控制块(PCB) struct info_PCB { long ID;//进程标识 long status;//状态 long po;//输出指针 long head;//信息块首地址 long count;//输出长度 long wait[1000];//输出缓冲 }PCB[4]; ②输出请求块 struct info_block { long ID;//要求输出的进程 long len;//输出长度 long head;//输出首地址 }block[128]; ③输出井 struct info_wall { long num[10000];//输出内容 long open,closed;//队列指针 }wall[3]; 四、测试结果 实际运行的结果如下: Input the times of user1s output file:4 Input the times of user2s output file:7 Process 2 produces a block 1! Process 1 produces a block 2! Output block 1: (ID=2) 1 1 4 8 9 3 7 1 8 3 2 8 6 2 8 0 8 Process 2 produces a block 3! Process 2 produces a block 4! Output block 2: (ID=1) 2 4 5 9 5 9 8 5 4 9 4 8 0 Output block 3: (ID=2) 7 6 2 8 3 0 Process 2 produces a block 5! Process 2 produces a block 6! Output block 4: (ID=2) 6 0 Pr

文档评论(0)

shaoye348 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档