欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

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

    • 资源ID:850885       资源大小:46.37KB        全文页数:12页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入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)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开