进程管理设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程管理设计

操作系统实验报告 实验二 进程管理设计 姓 名: 王婷婷 班 级 学 号: 座机电话号码05307 学 院: 信息学院 专 业: 计算机科学与技术 2010年5月7日 一.目的和要求 进程调度是处理机管理的核心内容。本实验要求用C语言编写和调试一个简单的进程调度程序。通过本实验可以加深理解有关进程控制块、进程队列的概念,并体会和了解优先数和时间片轮转调度算法的具体实施办法。 二.实验内容 设计进程控制块PCB表结构,分别适用于优先数调度算法和循环轮转算法。 PCB结构通常包括以下信息:进程名、进程优先数(或轮转时间片)、进程所占用的CPU时间、进程的状态、当前队列指针等。根据调度算法的不同,PCB结构的内容可以做适当的删除。 建立进程就绪队列,对两种不同算法编制入链子程序。 编制两种进程调度算法:1)优先数调度;2)循环轮转调度。 三.实验环境 IBM 286以上微型计算机及其兼容机。 DOS系统要求3.3及更高的版本。 TURBO C 2.0。 四.实验要求 本实验要求用C 语言编写,选用优先数算法和简单时间片轮转法对五个进程进行调度,每个进程可以有三种状态:运行状态(RUN)、就绪状态(READY)和完成状态(FINISH)。并假定初始状态为就绪状态。 五.模拟算法提示 用C语言模拟实现动态优先数的进程调度算法。并通过WINDOWS提供的vc编辑器来编译C程序,调试C程序。在程序中所用到的数据结构主要是:链表,排序算法。 设计进程控制块结构如下: PCB: name prio/round cputime count needtime state next 其中: name——进程标识符 prio——进程优先数 round——进程轮转时间片 cputime——进程占用CPU时间 count——计数器 needtime——进程完成还要的CPU时间 state——进程的状态 next——链指针 进程控制块链结构中主要指针如下: run——当前运行进程指针 ready——就绪队列头指针 tail——就绪队列尾指针 finish——完成队列头指针 六.流程图 Prt函数: 插入函数: Create函数: priority函数: 七.程序清单: #include stdio.h #include stdlib.h #include string.h typedef struct node char name[10]; int prio; int round; int cputime; int needtime; int count; char state; struct node *next; PCB; PCB *finish,*ready,*tail,*run; int N; /*将就绪队列中的第一个进程投入运行*/ void firstin run ready; /*就绪队列头指针赋值给运行头指针*/ run- state R; /*进程状态变为运行态*/ ready ready- next; /*就绪对列头指针后移到下一进程*/ void prt2 PCB *q printf %-10s%-10d%-10d%-10d %c\n,q- name, q- cputime,q- needtime,q- prio,q- state ; void prt PCB *p; printf name cputime needtime priority state\n ; printf 正在运行的PCB!\n ; if run! NULL prt2 run ; p ready; printf 就绪队列里的PCB!\n ; while p! NULL /*根据优先数确定插入位置*/ prt2 p ; p p- next; p finish; printf 完成队列的PCB!\n ; while p! NULL prt2 p ;p p- next; void insert1 PCB *q PCB *p1,*s,*r; int b 1; s q; p1 ready; r p1; while p1! NULL b if p1- prio s- prio r p1;p1 p1- next; else b 0; if r! p1 r- next s;s- next p1; else s- next p1; ready s; void create PCB *p; int i,time; char na[10]; ready NULL; finish NULL; run NULL; printf Enter name and time of process\n ; for i 1;i N

文档评论(0)

zilaiye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档