下载此文档

操作系统实验报告 实验一 进程管理.pdf


文档分类:IT计算机 | 页数:约9页 举报非法文档有奖
1/9
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/9 下载此文档
文档列表 文档介绍
该【操作系统实验报告 实验一 进程管理 】是由【青山代下】上传分享,文档一共【9】页,该文档可以免费在线阅读,需要了解更多关于【操作系统实验报告 实验一 进程管理 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..进程管理进程调度是处理机管理的核心内容..本实验要求编写和调试一个简单的进程调度程序..通过本实验加深理解有关进程控制块、进程队列的概念;并体会和了解进程调度算法的具体实施办法..二、实验内容及要求1、设计进程控制块PCB的结构PCB结构通常包括以下信息:进程名进程ID、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等..可根据实验的不同;PCB结构的内容可以作适当的增删..为了便于处理;程序中的某进程运行时间以时间片为单位计算..各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定..2、系统资源r;共有w类;每类数目为r…r..随机产生n进程1w1wPid;sj;k;t;0<=i<=n;0<=j<=m;0<=k<=dt为总运行时间;在运行过程中;会随机申请新的资源..i3、每个进程可有三个状态即就绪状态W、运行状态R、等待或阻塞状态B;并假设初始状态为就绪状态..建立进程就绪队列..4、编制进程调度算法:时间片轮转调度算法本程序用该算法对n个进程进行调度;进程每执行一次;CPU时间片数加1;进程还需要的时间片数减1..在调度算法中;采用固定时间片即:每执行一次进程;该进程的执行时间片数为已执行了1个单位;这时;CPU时间片数加1;进程还需要的时间片数减1;并排列到就绪队列的尾上..三、实验环境操作系统环境:Windows系统..编程语言:C..四、实验思路和设计1、程序流程图1:..开始;建立就绪队列、阻塞队列..Input触发时钟;调用时间片轮转调度算法..runFcfs是就绪队列为空结束否输出就绪队列和阻塞队列的信息..outputall取就绪队列的第一个进程;判断其运行的时间片是否达到所需次数..如果达到;则释放资源如果没达到;则运行一个时间片..running检查阻塞队列;对于当前资源数目满足阻塞队列的进程;由阻塞转入就绪队列..testblock检查是否有新进程产生;如果有;则判断系统资源是否够用;如果够用;则分配给该进程;插入就绪队列..如果不够用;则插入阻塞队列..testnew显示三类资源情况..rescore2:..//PCB结构体structpcb{publicintid;//进程IDpublicintra;//所需资源A的数量publicintrb;//所需资源B的数量publicintrc;//所需资源C的数量publicintntime;//所需的时间片个数publicintrtime;//已经运行的时间片个数harstate;//进程状态;W等待、R运行、B阻塞//publicintnext;}ArrayListhready=newArrayList;ArrayListhblock=newArrayList;Randomrandom=newRandom;//ArrayListp=newArrayList;intm;n;r;a;a1;b;b1;c;c1;h=0;i=1;time1Inteval;//m为要模拟的进程个数;n为初始化进程个数//r为可随机产生的进程数r=m-n//a;b;c分别为A;B;C三类资源的总量//i为进城计数;i=1…n//h为运行的时间片次数;time1Inteval为时间片大小毫秒//对进程进行初始化;建立就绪数组、阻塞数组..publicvoidinput//对进程进行初始化;建立就绪队列、阻塞队列{m=;n=;a=;b=;c=;a1=a;b1=b;c1=c;r=m-n;time1Inteval=;=time1Inteval;fori=1;i<=n;i++{pcbjincheng=newpcb;=i;=+1;=+1;=+1;=;5;=0;3:..ID:所需A资源数目:所需B资源数目:所需C资源数目:所需时间片数:ifa->=0&&b->=0&&c->=0{a=a-;b=b-;c=c-;='W';;//加入就绪队列}else{='B';;//加入阻塞队列}当前进程状态:}}从数组起始地址开始输出该数组的内容publicvoiddispArrayListlist{ArrayListlist1=newArrayList;list1=list;>0{forintj=0;j<;j++{pcbp=pcblist1j;+++++}}else{该队列中没有进程}}//输出就绪数组和阻塞数组的信息publicvoidoutputall{运行了:次4:..进程ID进程状态A资源数B资源数C资源数所需时间片已运行时间片disphready;当前就阻塞列的信息进程ID进程状态A资源数B资源数C资源所需时间片已运行时间片disphblock;}运行就绪数组的头进程;运行一个时间片;轮转一个时间片;时间片轮转调度算法publicvoidrunning{ArrayListhready1=newArrayList;hready1=hready;pcbp1=newpcb;p1=pcbhready10;='R';=+1;h=h+1;+++++++=={的进程已经完成a=a+;b=b+;c=c+;;}else{='W';;;}}//检测当前资源数目是否满足阻塞数组里进程的需求publicvoidtestblock{ArrayListhblock1=newArrayList;hblock1=hblock;forintm=0;m<;m++{pcbp1=newpcb;5:..p1=pcbhblock1m;ifa->=0&&b->=0&&c->=0{='W';;a=a-;b=b-;c=c-;;m--;}}}检测是否有新的进程产生;随机产生新进程publicvoidtestnew{intt;ifr>0//r为随机产生的进程数目{t=+1;ift<=7{有新的进程申请加入:pcbjincheng=newpcb;=i++;=+1;=+1;=+1;=;5;=0;产生进程ID:所需A资源数目:所需B资源数目:所需C资源数目:所需时间片数:ifa->=0&&b->=0&&c->=0{a=a-;b=b-;c=c-;='W';进程状态为:;//加入就绪队列资源满足新进程请求;该进程进入就绪队列}6:..else{='B';;//进程状态为:资源不满足新进程请求;该进程进入阻塞队列}}}r=r-1;}系统三类资源变化情况的显示publicvoidrescore//系统三类资源变化情况的显示{ifa>a1{=;}ifa>=0&&a<a1{=;}ifb>b1{=;}ifb>=0&&b<=b1{=;}ifc>c1{=;}ifc>=0&&c<=c1{=;}}//时间片轮转调度算法先来先服务FCFS算法publicvoidrunFcfs{>0{outputall;running;testblock;testnew;rescore;}else{=false;=;=;=;所有进程都已经运行结束}//计时器触发时间片轮转调度算法privatevoidtimer1_Tickobjectsender;EventArgse{7:..runFcfs;}privatevoidbutton1_Clickobjectsender;EventArgse{runmain;=false;=false;=false;=false;=false;=false;=false;=false;=false;=false;}//清除屏幕按钮单击执行函数privatevoidbutton2_Clickobjectsender;EventArgse{;=true;=true;=true;=true;=true;=true;=true;}//运行的主函数publicvoidrunmain{input;=true;}8:..3界面中;可以任意设定需要模拟的进程总数如5;初始化进程个数如3;还有A、B、C三类资源的总数如10、10、10..为了方便显示;还可以设定时间片的长度如500毫秒..除此之外;在运行过程中;所有的资源都是随机生成的;并且其中新进程的产生也是随机的;但是产生的进程总数不会多于开始设定的模拟的进程总数;以防止不断产生新进程;程序不断运行..在显示窗口的上方;还会实时显示资源的变化情况;方便对运行的观察..当运行结束后;可以通过工具栏中的显示选项中的保存结果按钮;将结果保存成txt文件格式;方便运行后的结果分析..本次实验;我的任务是设计一个允许n个进程并发运行的进程管理模拟系统..该系统包括有简单的进程控制、同步与通讯机构;系统在运行过程中能显示各进程的状态及有关参数的变化情况;从而观察诸进程的运行过程及系统的管理过程;我是用C写的;在我的电脑能够运行通过;虽不能尽善尽美;但也基本能实现老师的要求..两个星期的实验;虽然时间有点短;但我也收获不少;这次实验;加深了我对进程概念及进程管理的理解;比较熟悉进程管理中主要数据结构的设计及进程调度算法、进程控制机构、同步机构及通讯机构的实施..也让我认识到自己的不足;操作系统的有些知识;我知道的还不多;没有掌握好;还需要多多学学;不断提升自己的能力..实验中;我们小组分工合作;共同学****虽然在实验中遇到了一些问题;但在老师和同学的细心指导和热心帮助下解决了..同时;了解到团队精神的重要性;也为以后的学****和工作打下了坚实的基础;同时积累了宝贵的经验..9

操作系统实验报告 实验一 进程管理 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数9
  • 收藏数0 收藏
  • 顶次数0
  • 上传人青山代下
  • 文件大小729 KB
  • 时间2024-04-17