欢迎来到优知文库! | 帮助中心 分享价值,成长自我!
优知文库
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 优知文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    操作系统实验报告实验--实验五 模拟SPOOLING系统.docx

    • 资源ID:724473       资源大小:46.37KB        全文页数:12页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录
    二维码
    扫码关注公众号登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    操作系统实验报告实验--实验五 模拟SPOOLING系统.docx

    操作系统实验报告实验五模拟SPOOLING系统一实验名称SPOOLING系统的模拟实现二、实验目标假脱机(SPOOLING)技术是广泛应用于各种计算机系统的一种行之有效的输入输出手段。这种技术使用比较简单的方法,缓和了高速处理机与低速输入输出设备速度不匹配的矛盾,提高了设备的利用率。为了更好地掌握这种技术。本实验要求学生独立地用高级语言编写一个SPOOLING程序来模拟假脱机输入输出过程。三、实验环境要求1.PC机。2. Windows;Linux环境。3. VisualC+6.0forWindows;g+forLinuo四、实验基本原理spooling系统又叫假脱机系统,它能在主机控制下,对信息的输入输出实现外部设备联机操作.该系统包含输入收存程序和输出发送等程序,还必须建立描述辅存输入井和输出井的状态转化的表格.spooling系统把待建立的作业源源不断向磁盘的输入井中传送,把正在处理的作业的结果收存到输出井上,最后从外设发送出去,这种输入收存和输出发送的功能起到了脱机处理的作用.五、数据结构设计(I)进程控制块类structpcb(intid;intstart;char*ch;intlength;intcolor;pcb()(id=length=O;COlor=LIGHTGRAY;ch=O;start=O;1)(2)进程控制块链管理类.classlink(intn,nl;intx,y;public:pcb*p;link()nl=l0;n=n1;x=y=0;p=newpcbl0;link(inti)nl=i;n=O;p=newpcbnl;)voidIinkset(int,int,int);voiddraw();intempty();voidIef();intfull();intretcolor();friendvoidsend(link&,link&,int);intsetcolo(int);friendvoidmove(link&,Iink&);voidsetchar(int);六、流程图图1Spooling系统流程图七、源代码#include',stdio.h"include,stdlib.h#include<time.h># defineMAXPCBNUM3# definePCBITEMNUM6# defineMAXIOBLKNUM10# defineIOBLKITEMNUM3# defineUSERPROCNUMMAXPCBNUM-1#defineOUTPUTPOOLSIZE100*thestateofprocess*/#defineREADY0*CANRUNINGSTATE*/#define WAITl#define WAIT21*CANNOTRUNNINGSTATE,OUTPUTPOOLISFULL;*/2*CANNOTRUNNINGSTATE;NOFREEIOBLOK;*/#defineFINISH3*FINISHSTATE*/*theitemnameofarraypcb*/#defineIDO# defineSTATE1# definePOINT2# defineSTART3# defineLENGTH4# defineBUFFER5*theitemnameofarrayioblk*/# defineIOBLKDO# defineIOBLK_LEN1# defineIOBLK_START2intpcbMAXPCBNUMPCBITEMNUM,ioblkMAXIOBLKNUMIOBLKITEMNUM,poolUSERPROCNUMOUTPUTPOOLSIZE,valueUSERPROCNUM,bl=0,b2=0,freeioblknum,freepoollenUSERPROCNUM,countUSERPROCNUM,totaliotimesUSERPROCNUM,iotimesUSERPROCNUM;voidinit()*initiaizing*/1inti;srand(time(NULL);for(i=o;i<Maxpcbnum;i+)(pcbiID=i;pcbiSTATE=READY;pcbiPOINT=0;pcbiSTART=0;pcbiLENGTH=0;pcbiBUFFER=-l;1freeioblknum=MAXIOBLKNUM;for(i=0;i<USERPROCNUM;i+)(freepool!eni=OUTPUTPOOLSIZE;printf("INPUTTHETIMESOFUSER%d'sOUTPUTFILE7n",i+l);scanf(',%d",<fecounti);totaliotimesi=counti;iotimesi=0;intspooling()intd,g,e,i,ovemum;staticoutputUSERPROCNUM;if(freeioblknum=MAXIOBLKNUM)(pcbOSTAE=WAITl;retum(1);)d=ioblkblIOBLKJD;g=ioblkblIOBLK_LEN;e=ioblkb1IOBLK_START;iotimesd-l+;printf(,'USER%dFILE%dFILE.LENGTH=%dn",d,iotimesd-l,g);if(g)for(i=O;i<g;i+)printf("%d",poold-le);e=(e+l)%OUTPUTPOOLSIZE;)printf("n,');freepoollend-l+=g;if(pcbdSTATE=WAITl)pcbdSTATE=READY;)bl=(bl+l)%MAXIOBLKNUM;freeioblknum+;for(i=1;i<MAXPCBNUM;i+)pcbiSTATE=READY;ovemum=0;for(i=0;i<USERPROCNUM;i+)(if(iotimesi=totaliotimesi)(if(!outputi)(printf(',OUTPUTOFUSER%dISCOMPLETED!n",i+l);outputi=1;1ovemum+;)1if(overnum=USERPROCNUM)(printf("theend!n");return(0);)elsereturn(1);)intuserproc(intr)(intx;valuer-l=rand()%10;x=valuer-l;elsex=pcbrBUFFER;pcbrBUFFER=-l;1if(x)if(freepoollenr-l)poolr-lpcbrPOINT=x;pcbrLENGTH+;freepoollenr-l-;pcbrPOINT=(pcbrPOINT÷1)%OUTPUTPOOLSIZE;)else(pcbrBUFFER=x;pcbrSTATE=WAITl;)elseif(freeioblknum)(ioblkb2IOBLKD=pcbrID;ioblkb2IOBLK.START=pcbrSTART;ioblkb2IOBLK_LEN=pcbrLENGTH;pcbrLENGTH=0;pcbrSTART=pcbrPOINT;b2=(b2+1)%MAXIOBLKNUM;freeioblknum;pcbOSTART=READY;else(pcbrBUFFER=x;pcbrSTATE=WAIT2;)if(!valuer-l)(countr-l-;if(!countr-l)(pcbrSTATE=FINISH;if(r=0)(printf("ALLFILEHAVEBEENOUTPUTEDXnTHESYSTEMISCOMPLETEDXn");return(O);1elseprintf("ALLANSWERSOFUSER%dHAVEBEENSENDEDn,r);)return(1);voidscheduler()intx,again=1;while(again)x=rand()%100;printf(,x=random(100)is%dn",x);getchar();if(x<=45&&pcblSTATE=READY)again=userproc(1);elseif(x>45&&x<90&&pcb2STATE=READY)again=userproc(2);elseif(x>90&&pcbOSTATE=READY)printf("enterinhere!n");again=spooling();)voidmain()(i11it();scheduler();八、运行结果'C:UsersASUSDesktop遮作DebugSPOoiJNGMexe-XINPUTTHETIMESOFUSERl'sOUTPUTFILE?2INPUTTHETIMESOFUSER2,STPUTFILE?3×=rando<n(l)is48x=random(l)is61x=random(l)is33x=random(l)is79x=random(l)is54x=rando<n(l)is71x三random(l)is12x=random(l)is42x=rando<n(l)is19搜狗拼音输入法全

    注意事项

    本文(操作系统实验报告实验--实验五 模拟SPOOLING系统.docx)为本站会员(王**)主动上传,优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知优知文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 yzwku网站版权所有

    经营许可证编号:宁ICP备2022001189号-2

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知优知文库网,我们立即给予删除!

    收起
    展开