SPOOLing技术模拟实现说明书_第1页
SPOOLing技术模拟实现说明书_第2页
SPOOLing技术模拟实现说明书_第3页
SPOOLing技术模拟实现说明书_第4页
SPOOLing技术模拟实现说明书_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

PAGE11名目TOC\o"1—3"\h\uHYPERLINK\l_Toc31710摘要ﻩPAGEREF_Toc317101HYPERLINK\l_Toc657正文ﻩ2HYPERLINK\l_Toc31741各模块的伪码算法 PAGEREF_Toc317416HYPERLINK\l_Toc29852函数的调用关系图ﻩPAGEREF_Toc298527HYPERLINK\l_Toc29640测试结果ﻩPAGEREF_Toc296408HYPERLINK\l_Toc13337设计总结 PAGEREF_Toc133379HYPERLINK\l_Toc3802参考文献ﻩPAGEREF_Toc38029HYPERLINK\l_Toc27622致谢 PAGEREF_Toc2762211HYPERLINK\l_Toc2947源程序(带注释) PAGEREF_Toc294712ﻬ摘要SPOOLING技术实质上是用户进程利用一个共享设备的一个存储区,并不是真正占有这一设备,用户进程把要完成的任务以文件的形式存入存储区,在存储区中排队并等待SPOOLING系统调度,只有被SPOOLING系统调度并输出,此项任务才真正完成,通过这一技术可以大大提高了共享设备的使用率,节省了硬件资源.利用SPOOLING技术掌握批处理系统中作业输入/输出.SPOOLING技术又被称为“伪脱机输入/输出”技术,被广泛地利用于后来的批处理系统中。采纳SPOOLING技术实现输入/输出的系统通常又简称为SPOOLING系统。SPOOLING技术主要是通过加快作业的输入/输出提高系统性能。关键词:SPOOLING技术、批处理、伪脱机输入/输出ﻬ正文1。设计思想在计算机网络高速进展的今日,计算机技术不断地更新与完善,无论是硬件还是软件的变更都会在计算机操作系统的设计技术与使用风格上得到体现。操作系统是计算机系统中的核心软件,也是不行缺少的基本系统软件,主要用来管理和掌握计算机系统的软,硬件资源,提高资源利用率,且为用户供应一个便利,灵敏,平安和牢靠地使用计算机的工作坏境。SPOOLING是SimultaneousPeripheralOperationOnLine(即并发的外部设备联机操作)的缩写,它是关于慢速字符设备如何与计算机主机交换信息的一种技术,通常称为“假脱机技术".它在输入和输出之间增加了“输入井"和“输出井"的排队转储环节。SPOOLING技术的特点:(1)提高了I/O速度。从对低速I/O设备进行的I/O操作变为对输入井或输出井的操作,如同脱机操作一样,提高了I/O速度,缓和了CPU与低速I/O设备速度不匹配的冲突.(2)设备并没有安排给任何进程.在输入井或输出井中,安排给进程的是一存储区和建立一张I/O恳求表.(3)实现了虚拟设备功能.多个进程同时使用一台独享设备,而对每一进程而言,都认为自己独占这一设备,不过,该设备是规律上的设备。SPOOLING技术实际上是一种外围设备同时联机操作技术,又称为排队转储技术.它在输入和输出之间增加了“输入井”和“输出井"的排队转储环节,以消除用户的“联机”等待时间.在系统输入模块收到作业输入恳求信号后,输入管理模块中的读过程负责将信息从输入装置中读入输入井缓冲区.当缓冲区满时,由写过程将信息从缓冲区写到外存的输入井中,读过程和写过程反复循环,直到一个作业输入完毕.当读过程读到一个硬件结束标志之后,系统再次驱动写过程把最后一批信息写入外存输入井并调用中断处理程序结束该次输入。然后,系统为该作业建立作业掌握块,从而使输入井中的作业进入作业等待队列,等待作业调度程序选中后进入内存运行.系统在管理输入井过程中可以“不断"读入输入的作业,直到输入结束或输入井满而暂停。若系统的某台台行式打印机采纳了虚拟设备技术,那么若有进程要求对它打印输出时,SPOOLING系统并不是将这台打印机直接安排给进程,而是在共享设备(磁盘或磁鼓)上的输出SPOOLING存储区中为其安排一块存储空间,进程的输出数据以文件形式此。各进程的数据输出文件形成了一个输出队列,由输出SPOOLING系统掌握这台打印机进程,依次将队列中的输出文件实际打印输出。在SPOOLING系统中,实际上并没有为任何进程安排,而只是在输入井和输出井中,为进程安排一存储区和建立一章I/O恳求表。这样,便把独占设备改造为共享设备。宏观上,虽然是多个进程在同时使用一台独立设备,而对每一个进程而言,它们都认为自己是独占了一个设备。当然,该设备只是规律上的设备SPOOLING系统实现了将独占设备变换为若干台对应的规律设备的功能。操作系统初启后激活SPOOLING输入程序使它处于捕获输入恳求的状态,一旦有输入恳求消息,SPOOLING输入程序立即得到执行,把装在输入设备上的作业输入到硬盘的输入井中.输入井是一组硬盘扇区SPOOLING输出把硬盘上输出井的数据送到慢速的输出设备上.输出井的数据来自作业运行过程中的输出。这就是说,作业调度程序不是从输入设备上装入作业,而是直接从输入井中把选中的作业装入主存,使主机等待作业输入的时间大为缩短。同样对作业的输出而言,写到输出井要比写到输出设备快得多。即使作业的JCB(作业进程块)已注销,SPOOLING输出活动仍可以从容地把输出井中没有输出完的数据连续输出到输出设备上.由此可见,引入SPOOLING技术,把一个共享的硬盘改造成若干台输入设备(对作业调度程序而言)和若干台输出设备(对各作业而言).这样的设备称为虚拟设备,它们的物理实体是输入(出)井.这样改造之后,保持了物理的输入(出)设备繁忙地与主机并行地工作,提高了整个系统的利用率。SPOOLING技术是在通道技术和多道程序设计基础上产生的,它由主机和相应的通道共同担当作业的输入输出工作,利用磁盘作为后援存储器,实现外围设备同时联机操作.SPOOLING系统由专门负责I/O的常驻内存的进程以及输入井、输出井组成;它将独占设备改造为共享设备,实现了虚拟设备功能。将一台独享打印机改造为可供多个用户共享的打印机,是应用SPOOLING技术的典型实例.简略做法是:系统对于用户的打印输出,但并不真正把打印机安排给该用户进程,而是先在输出井中申请一个空闲盘块区,并将要打印的数据送入其中;然后为用户申请并填写恳求打印表,将该表挂到恳求打印队列上。若打印机空闲,输出程序从恳求打印队首取表,将要打印的数据从输出井传送到内存缓冲区,再进行打印,直到打印队列为空。SPOOLING技术实现设备管理时的工作特征:1、提高了I/O速度.2、将独占设备改造为共享设备。在SPOOLING系统中,实际上并没有为任何进程安排,而只是在输入井和输出井中,为进程安排一存储区并建立一张I/O恳求表。这样,便把独占设备改造为共享设备。宏观上,虽然是多个进程在同时使用一台独立设备,而对每一个进程而言,它们都认为自己是独占了一个设备。当然,该设备只是规律上的设备。SPOOLING系统实现了将独占设备变换为若干台对应的规律设备的功能。假脱机(Spooling)技术是广泛用于各种系统的一种行之有效的输入输出手段,这种技术使用比较简洁的方法,缓和了处理机与低速输入输出设备速度不匹配的冲突,提高设备的利用率。为了更好地掌握这种技术,本实习要求同学独立地用高级语言编写一个Spooling程序来模拟假脱机输入/输出过程。本实验编制一个Spooling输出进程与另外二个要求输出的进程并发运行。要求输出进程每运行一次只输出一项信息到输出井,待输出到一个结束标志时,表示一批信息输出完成,在输出井中形成一输出信息块,再由Spooling进程把整个信息块实际输出到打印机或CRT。因此,进程的运行必须考虑同步问题。采纳进程的随机调度法模拟Spooling输出是合适的,由于各进程的输出应是随机的.进程基本状态有3种,分别为可执行,等待和结束.可执行态就是进程正在运行或等待调度的状态;等待状态又分为等待状态1,等待状态2,等待状态3。状态变化的条件为:1〉进程执行完成时,置为“结束”态.2>服务程序在将输出信息送输出井时,如发现输出井已满,将调用进程置为“等待状态1"。3〉SPOOLING进程在进行输出时,若输出井空,则进入“等待状态2”.4>SPOOLING进程输出一个信息快后,应立即释放该信息快所占的输出井空间,并将正在等待输出的进程置为“可执行状态”。5>服务程序在输出信息到输出井并形成输出恳求信息快后,若SPOOLING进程处于等待态则将其置为“可执行状态”。6>当用户进程声请恳求输出快时,若没有可用恳求快时,调用进程进入“等待状态3”。但是,对于尽管在协作过程中格外认真和努力,但由于水平有限,错误和不足之处在所难免,敬请老师加以批判指正。ﻬ各模块的伪码算法(1)进程掌握块(PCB)structpcb{intstatus;ﻩ/*进程状态*/}PCB[3];PCB(ProcessControlBlock),进程掌握块是操作系统用于记录和刻画进程状态及有关信息的数据结构,也是操作系统掌握进程的唯一资料结构,是操作系统掌握和管理进程的主要依据。它包括了进程执行时的情况,以及进程让出处理器所处的状态、断点等信息.对于输出进程和spooling进程两种不同的进程,采纳相同的结构处理,包括进程标识,进程状态,输出缓冲,输出指针,信息块首地址,输出长度等内容。需要支持在不同状态之间的转换,输出缓冲晴空等操作.(2)恳求输出块reqblockstruct{intreuname;ﻩ}reqblock[10];输出恳求块的作用是定义标识要求输出进程的变量和相关信息并且定义输出首地址。要求输出的进程标识,输出长度,输出首地址等内容。(3)输出井BUFFERSPOOLING系统为每个恳求输出的进程在输出井中分别开辟一个区。本实验可设计一个二维数组(intbuffer[2][10])作为输出井。每个进程在输出井最多可占用10个位置。

函数的调用关系图程序框图如下:结束返回结束返回X≤0.45,且进程1为执行状态开始对各进程的PCB、输出请求块、输出井初始化生成(0~1)随机数X判断的X值及进程的状态执行请求输出用户进程执行请求输出用户进程执行SPOOLing进程0.45<X≤0.9,且进程2为执行状态X>0.9,且SOOPLing进程为执行状态进程都结束了吗?YN图1SPOOLing输出模拟系统主控流程图YYNNNNYYYYNNNNYYﻬ测试结果随机调度算法模拟SPOOLING进程调度程序执行如下:设计总结在这两周的操作系统课程设计中,我的题目是:SPOOLING技术模拟实现,这两周课程设计中,通过该题目的设计过程,学会如何把学到的知识用于解决实际问题,熬炼了自己动手的能力。在以后的学习中我会更加注意各个方面的能力的协调进展。在课程设计时遇到了很多的问题,在老师的帮助和对各种资料的查阅中将问题解决,培育了我自主动手,独立讨论的能力,为今后在学习工作中能更好的进展打下了坚实的基础.两周的课程设计很短暂,但其间的内容是很充实的,在其中我学习到了很多平常书本中无法学到的东西,积累了阅历,熬炼了自己分析问题,解决问题的能力,并学会了如何将所学的各课知识融会,组织,来协作学习,两周中我收益很大,学到很多。ﻬ参考文献主要参考文献:1.汤子瀛,哲凤屏.《计算机操作系统》。西安电子科技高校学出版社.2。王清,李光明.《计算机操作系统》。冶金工业出版社.3.孙钟秀等.HYPERLINK"http://202.201.33。254/dlib/product。asp?DocID=29120&DocGroupID=21”\o”操作系统教程"操作系统教程.高等教育出版社4。曾明.

HYPERLINK"http://202.201。33.254/dlib/product。asp?DocID=29119&DocGroupID=21"\o"Linux操作系统应用教程"Linux操作系统应用教程。陕西科学技术出版社.5。张丽芬,刘利雄.《操作系统实验教程》.清华高校出版社。6。孟静,

HYPERLINK”http://202。201。33.254/dlib/product.asp?DocID=29122&DocGroupID=21”\o"操作系统教程--原理和实例分析”操作系统教程—-原理和实例分析。高等教育出版社7.周长林,HYPERLINK"http://202.201。33.254/dlib/product.asp?DocID=29121&DocGroupID=21”\o"计算机操作系统教程"计算机操作系统教程.高等教育出版社8.张尧学,HYPERLINK"http://202。201。33.254/dlib/product.asp?DocID=29115&DocGroupID=21"\o"计算机操作系统教程”计算机操作系统教程,清华高校出版社9.任满杰,HYPERLINK”http://202.201.33。254/dlib/product。asp?DocID=29117&DocGroupID=21"\o"操作系统原理实用教程"操作系统原理有用教程,电子工业出版社ﻬ致谢在这两周的操作系统课程设计中,我的题目是:SPOOLING技术模拟实现,这两周课程设计中,通过该题目的设计过程,进一步理解和娴熟掌握课本中所学的各种知识,学会如何把学到的知识用于解决实际问题,熬炼了自己动手的能力。一个人要完成全部的工作是格外困难和耗时的。在以后的学习中我会更加注意各个方面的能力的协调进展。在课程设计时遇到了很多的问题,在老师的帮助和对各种资料的查阅中将问题解决,培育了我自主动手,独立讨论的能力,为今后在学习工作中能更好的进展打下了坚实的基础。两周的课程设计很短暂,但其间的内容是很充实的,在其中我学习到了很多平常书本中无法学到的东西,积累了阅历,熬炼了自己分析问题,解决问题的能力,并学会了如何将所学的各课知识融会,组织,来协作学习,两周中我收益很大,学到很多。基础课学习中为我打下良好的基础,这是我这次课程设计能够顺利完成的前提。首先感谢我的指导老师王老师,他在我的课程设计过程中提出了指导性的方案和架构,并指引我阅读相关的资料和书籍,使我在不熟识的领域中仍能飞快掌握新的技术.我的同学在设计完成后对程序的测试,没有他们,也许就难以发现一些潜在的错误,在此一并表示感谢。

源程序(带注释)#include<stdlib.h>#include<time.h>#include<stdio.h>structpcb{//定义结构体 intstatus;//进程状态ﻩintlength;//输出长度}*PCB[3];structreq{//恳求进程名ﻩintreqname;//定义名称ﻩintlength;//输出长度ﻩintaddr;//本次输出的首地址}reqblock[10];intbuffer[2][100];inthead=0,tail=0;intt1=5,t2=5;voidrequest(inti)//定义恳求函数{ﻩintj,m,s,length=0;ﻩstructreq*run;ﻩif(1==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ﻩ{ﻩﻩintindex=(tail-1)%10;ﻩﻩrun->addr=reqblock[index]。addr+reqblock[index]。length; }ﻩfor(m=0;m<100;m++)ﻩ{ if(0==buffer[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]—>status)ﻩﻩPCB[2]-〉status=0;ﻩtail++;}voidspooling(){inti,j;ﻩstructreq*run; printf("调用SPOOLING输出服务程序输出数据:\n");ﻩrun=&reqblock[head%10]; printf(”%d:\n”,run-〉reqname);ﻩfor(i=0;

温馨提示

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

评论

0/150

提交评论