ImageVerifierCode 换一换
格式:DOC , 页数:19 ,大小:191.54KB ,
资源ID:2220418      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2220418.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(SPOOLing技术模拟实现说明书.doc)为本站上传会员【快乐****生活】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

SPOOLing技术模拟实现说明书.doc

1、SPOOLing技术模拟实现说明书 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 2 个人收集整理 勿做商业用途

2、 目录 摘 要 1 正 文 2 各模块的伪码算法 6 函数的调用关系图 7 测 试 结 果 8 设 计 总 结 9 参 考 文 献 9 致 谢 11 源程序(带注释) 12 摘 要 SPOOLING技术实质上是用户进程利用一个共享设备的一个存储区,并不是真正占有这一设备,用户进程把要完成的任务以文件的形式存入存储区,在存储区中排队并等待SPOOLING系统调度,只有被SPOOLING系统调度并输出,此项任务才真正完成,通过这一技术可以大大提高了共享设备的使用率,节约了硬件资源。利用SPOOLING技术控制批处

3、理系统中作业输入/输出。 SPOOLING技术又被称为“伪脱机输入/输出”技术,被广泛地利用于后来的批处理系统中.采用SPOOLING技术实现输入/输出的系统通常又简称为SPOOLING系统.SPOOLING技术主要是通过加快作业的输入/输出提高系统性能。 关键词: SPOOLING技术、批处理、伪脱机输入/输出 正 文 1.设计思想 在计算机网络高速发展的今天,计算机技术不断地更新与完善,无论是硬件还是软件的变更都会在计算机操作系统的设计技术与使用风格上得到体现. 操作系统是计算机系统中的

4、核心软件,也是不可缺少的基本系统软件,主要用来管理和控制计算机系统的软,硬件资源,提高资源利用率,且为用户提供一个方便,灵活,安全和可靠地使用计算机的工作坏境。 SPOOLING是Simultaneous Peripheral Operation On Line (即并发的外部设备联机操作)的缩写,它是关于慢速字符设备如何与计算机主机交换信息的一种技术,通常称为“假脱机技术”。它在输入和输出之间增加了“输入井"和“输出井”的排队转储环节. SPOOLING技术的特点: (1)提高了I/O速度.从对低速I/O设备进行的I/O操作变为对输入井或输出井的操作,如同脱机操作一样,提高了I/O速

5、度,缓和了CPU与低速I/O设备速度不匹配的矛盾. (2)设备并没有分配给任何进程。在输入井或输出井中,分配给进程的是一存储区和建立一张I/O请求表。 (3)实现了虚拟设备功能.多个进程同时使用一台独享设备,而对每一进程而言,都认为自己独占这一设备,不过,该设备是逻辑上的设备。 SPOOLING 技术实际上是一种外围设备同时联机操作技术,又称为排队转储技术。它在输入和输出之间增加了“输入井”和“输出井"的排队转储环节,以消除用户的“联机"等待时间。在系统输入模块收到作业输入请求信号后,输入管理模块中的读过程负责将信息从输入装置中读入输入井缓冲区.当缓冲区满时,由写过程将信息从缓冲区写

6、到外存的输入井中,读过程和写过程反复循环,直到一个作业输入完毕。当读过程读到一个硬件结束标志之后,系统再次驱动写过程把最后一批信息写入外存输入井并调用中断处理程序结束该次输入.然后,系统为该作业建立作业控制块,从而使输入井中的作业进入作业等待队列,等待作业调度程序选中后进入内存运行。系统在管理输入井过程中可以“不断”读入输入的作业,直到输入结束或输入井满而暂停。若系统的某台台行式打印机采用了虚拟设备技术,那么若有进程要求对它打印输出时,SPOOLING系统并不是将这台打印机直接分配给进程,而是在共享设备(磁盘或磁鼓)上的输出SPOOLING存储区中为其分配一块存储空间,进程的输出数据以文件形式

7、此。各进程的数据输出文件形成了一个输出队列,由输出SPOOLING系统控制这台打印机进程,依次将队列中的输出文件实际打印输出。在SPOOLING 系统中,实际上并没有为任何进程分配,而只是在输入井和输出井中,为进程分配一存储区和建立一章I/O请求表。这样,便把独占设备改造为共享设备。文档为个人收集整理,来源于网络本文为互联网收集,请勿用作商业用途 宏观上,虽然是多个进程在同时使用一台独立设备,而对每一个进程而言,它们都认为自己是独占了一个设备.当然,该设备只是逻辑上的设备SPOOLING系统实现了将独占设备变换为若干台对应的逻辑设备的功能。 操作系统初启后激活SPOOLING输入程序使它

8、处于捕获输入请求的状态,一旦有输入请求消息,SPOOLING输入程序立即得到执行,把装在输入设备上的作业输入到硬盘的输入井中。输入井是一组硬盘扇区SPOOLING输出把硬盘上输出井的数据送到慢速的输出设备上.输出井的数据来自作业运行过程中的输出。这就是说,作业调度程序不是从输入设备上装入作业,而是直接从输入井中把选中的作业装入主存,使主机等待作业输入的时间大为缩短.同样对作业的输出而言,写到输出井要比写到输出设备快得多。即使作业的JCB(作业进程块)已注销,SPOOLING输出活动仍可以从容地把输出井中没有输出完的数据继续输出到输出设备上。由此可见,引入SPOOLING技术,把一个共享的硬盘改

9、造成若干台输入设备(对作业调度程序而言)和若干台输出设备(对各作业而言)。这样的设备称为虚拟设备,它们的物理实体是输入(出)井.这样改造之后,保持了物理的输入(出)设备繁忙地与主机并行地工作,提高了整个系统的利用率。 SPOOLING技术是在通道技术和多道程序设计基础上产生的,它由主机和相应的通道共同承担作业的输入输出工作,利用磁盘作为后援存储器,实现外围设备同时联机操作. SPOOLING系统由专门负责I/O的常驻内存的进程以及输入井、输出井组成;它将独占设备改造为共享设备,实现了虚拟设备功能。将一台独享打印机改造为可供多个用户共享的打印机,是应用SPOOLING技术的典型实例。具体做法

10、是:系统对于用户的打印输出,但并不真正把打印机分配给该用户进程,而是先在输出井中申请一个空闲盘块区,并将要打印的数据送入其中;然后为用户申请并填写请求打印表,将该表挂到请求打印队列上。若打印机空闲,输出程序从请求打印队首取表,将要打印的数据从输出井传送到内存缓冲区,再进行打印,直到打印队列为空。 SPOOLING技术实现设备管理时的工作特征: 1、提高了I/O速度. 2、将独占设备改造为共享设备。 在SPOOLING系统中,实际上并没有为任何进程分配,而只是在输入井和输出井中,为进程分配一存储区并建立一张I/O请求表。这样,便把独占设备改造为共享设备。宏观上,虽然是多个进程在同时使用

11、一台独立设备,而对每一个进程而言,它们都认为自己是独占了一个设备。当然,该设备只是逻辑上的设备。SPOOLING系统实现了将独占设备变换为若干台对应的逻辑设备的功能。 假脱机(Spooling)技术是广泛用于各种系统的一种行之有效的输入输出手段,这种技术使用比较简单的方法,缓和了处理机与低速输入输出设备速度不匹配的矛盾,提高设备的利用率。为了更好地掌握这种技术,本实习要求学生独立地用高级语言编写一个Spooling程序来模拟假脱机输入/输出过程。 本实验编制一个Spooling 输出进程与另外二个要求输出的进程并发运行。要求输出进程每运行一次只输出一项信息到输出井,待输出到一个结束标志时

12、表示一批信息输出完成,在输出井中形成一输出信息块,再由Spooling 进程把整个信息块实际输出到打印机或CRT。因此,进程的运行必须考虑同步问题。采用进程的随机调度法模拟Spooling 输出是合适的,因为各进程的输出应是随机的。 进程基本状态有3种,分别为可执行,等待和结束。可执行态就是进程正在运行或等待调度的状态;等待状态又分为等待状态1,等待状态2,等待状态3。 状态变化的条件为: 1〉进程执行完成时,置为“结束”态。 2〉服务程序在将输出信息送输出井时,如发现输出井已满,将调用进程置为“等待状态1”。 3〉SPOOLING进程在进行输出时,若输出井空,则进入“等待状态2”

13、 4>SPOOLING进程输出一个信息快后,应立即释放该信息快所占的输出井空间,并将正在等待输出的进程置为“可执行状态"。 5〉服务程序在输出信息到输出井并形成输出请求信息快后,若SPOOLING进程处于等待态则将其置为“可执行状态”。 6〉当用户进程声请请求输出快时,若没有可用请求快时,调用进程进入“等待状态3"。 但是,对于尽管在协作过程中非常认真和努力,但由于水平有限,错误和不足之处在所难免,敬请老师加以批评指正。    各模块的伪码算法 (1)进程控制块(PCB) struct pcb {

14、 int status; /*进程状态*/ }PCB[3]; PCB(Process Control Block),进程控制块是操作系统用于记录和刻画进程状态及有关信息的数据结构,也是操作系统掌握进程的唯一资料结构,是操作系统控制和管理进程的主要依据。它包括了进程执行时的情况,以及进程让出处理器所处的状态、断点等信息.对于输出进程和spooling 进程两种不同的进程,采用相同的结构处理,包括进程标识,进程状态,输出缓冲,输出指针,信息块首地址,输出长度等内容。需要支持在不同状态之间的转换,输出缓冲晴空等操作。 (2)请求输出块reqblock struct{ int reun

15、ame; }reqblock[10]; 输出请求块的作用是定义标识要求输出进程的变量和相关信息并且定义输出首地址.要求输出的进程标识,输出长度,输出首地址等内容。 (3) 输出井BUFFER SPOOLING系统为每个请求输出的进程在输出井中分别开辟一个区。本实验可设计一个二维数组(int buffer[2][10])作为输出井。每个进程在输出井最多可占用10个位置。 函数的调用关系图 程序框图如下: 结束返回 X≤0.45,且进程1为执行状态 开始 对各进程的PCB、输出请求块、输出井初始化 生成(0~1)随机数X 判断的X值及进程

16、的状态 执行请求输出用户进程 执行请求输出用户进程 执行SPOOLing进程 0.450.9,且SOOPLing进程为执行状态 进程都结束了吗? Y N 图1 SPOOLing输出模拟系统主控流程图 Y Y N N N N Y Y 测 试 结 果 随机调度算法模拟SPOOLING进程调度程序执行如下: 设 计 总 结 在这两周的操作系统课程设计中,我的题目是: SPOOLING技术模拟实现,这两周课程设计中, 通过该题目的设计过程,学会如何把

17、学到的知识用于解决实际问题,锻炼了自己动手的能力。 在以后的学习中我会更加注意各个方面的能力的协调发展。在课程设计时遇到了很多的问题,在老师的帮助和对各种资料的查阅中将问题解决,培养了我自主动手,独立研究的能力,为今后在学习工作中能更好的发展打下了坚实的基础。 两周的课程设计很短暂,但其间的内容是很充实的,在其中我学习到了很多平时书本中无法学到的东西,积累了经验,锻炼了自己分析问题,解决问题的能力,并学会了如何将所学的各课知识融会,组织,来配合学习,两周中我收益很大,学到很多。 参 考 文 献 主要参考文献: 1. 汤子瀛,哲凤屏.《计算机操作系统》.西安电子科技大

18、学学出版社. 2. 王清,李光明.《计算机操作系统》。冶金工业出版社。 3。 孙钟秀等. 操作系统教程. 高等教育出版社 4. 曾明。  Linux操作系统应用教程. 陕西科学技术出版社。 5. 张丽芬,刘利雄.《操作系统实验教程》。 清华大学出版社. 6。 孟静, 操作系统教程--原理和实例分析. 高等教育出版社 7. 周长林,计算机操作系统教程. 高等教育出版社 8。 张尧学,计算机操作系统教程,清华大学出版社 9。 任满杰,操作系统原理实用教程,电子工业出版社 致 谢 在这两周的操作系统课程设计中,我的题目是: SPOOLING技术模拟实现,这两

19、周课程设计中, 通过该题目的设计过程,进一步理解和熟练掌握课本中所学的各种知识,学会如何把学到的知识用于解决实际问题,锻炼了自己动手的能力。 一个人要完成所有的工作是非常困难和耗时的。在以后的学习中我会更加注意各个方面的能力的协调发展。在课程设计时遇到了很多的问题,在老师的帮助和对各种资料的查阅中将问题解决,培养了我自主动手,独立研究的能力,为今后在学习工作中能更好的发展打下了坚实的基础。 两周的课程设计很短暂,但其间的内容是很充实的,在其中我学习到了很多平时书本中无法学到的东西,积累了经验,锻炼了自己分析问题,解决问题的能力,并学会了如何将所学的各课知识融会,组织,来配合学习,两周中我收

20、益很大,学到很多。基础课学习中为我打下良好的基础,这是我这次课程设计能够顺利完成的前提。 首先感谢我的指导老师王老师,他在我的课程设计过程中提出了指导性的方案和架构,并指引我阅读相关的资料和书籍,使我在不熟悉的领域中仍能迅速掌握新的技术。 我的同学在设计完成后对程序的测试,没有他们,也许就难以发现一些潜在的错误,在此一并表示感谢。 源程序(带注释) #include〈stdlib。h> #include〈time.h> #include struct pcb{ //定义结构体 int status; /

21、/进程状态 int length; //输出长度 }*PCB[3]; struct req{ //请求进程名 int reqname; //定义名称 int length; //输出长度 int addr; //本次输出的首地址 }reqblock[10]; int buffer[2][100]; int head=0,tail=0; int t1=5,t2=5; void request(int i) //定义请求函数 { int j,m,s,length=0; struct req*run; if(1==

22、i) t1——; else t2——; printf("用户%d请求数据:\n",i);//输出标注 run=&reqblock[tail%10];//定义输出块 run-〉reqname=i; run—〉length=0; if(0==tail) run—>addr=0; else { int index=(tail—1)%10; run-〉addr=reqblock[index].addr+reqblock[index]。length; } for( m=0;m〈100;m++) { if(0==buffer[

23、i—1][m]) { run—>addr=m; break; } } s=0; while(1) { j=rand()%10; if(0==j) { run—>length=length; break; } buffer[i-1][(run-〉addr+length)]=s; printf(”%3d",s); s++; length++; } printf("\n"); PCB[i-1]->length+=length; length=0; if(2==PCB[2]

24、>status) PCB[2]—>status=0; tail++; } void spooling() { int i,j; struct req*run; printf("调用SPOOLING输出服务程序输出数据:\n”); run=&reqblock[head%10]; printf(”%d:\n",run->reqname); for(i=0;ilength;i++) printf("%3d",buffer[run->reqname-1][run->addr+i] ); printf(”\n”); head++;

25、 for( j=0;j〈2;j++) { if(1==PCB[j]—>status) PCB[j]-〉status=0; } } //程序主函数 void main() { int l,m,n,j,k; for(l=0;l<2;l++) for(j=0;j〈100;j++) buffer[l][j]=0; for(n=0;n〈3;n++) { struct pcb*tmpPcb=(struct pcb*)malloc(sizeof(struct pcb)); tmpPcb-〉status=0; tmpPcb->len

26、gth=0; PCB[n]=tmpPcb; } printf(”两个用户进程的请求分别为5,5.\n”); srand((unsigned)time(NULL)); while(1) { k=rand()%100; //用随机数模拟进程执行概率 if(k<=45)//执行请求输出用户进程1 { if((0==PCB[0]—>status)&&(t1>0)) request(1); } else if((k〈=90)&&(t2>0))//执行请求输出用户进程2 { if(0==PCB[1]-〉status) request(2); } else spooling();//执行SPOOLING进程 if((0==t1)&&(0==t2)&&(head==tail)) break; } for(m=0;m<3;m++) { free(PCB[m]); PCB[m]=NULL;//PCB值为空 } getchar(); }//主函数结束 16

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服