惠州学院操作系统实验五汇编.pdfVIP

  • 0
  • 0
  • 约1.87万字
  • 约 24页
  • 2021-11-11 发布于福建
  • 举报
实验五 模拟进度调度 1 、 实验目的 1. 理解 PCB 2. 理解进程的并发执行 3. 理解进程的 FCFS 、动态优先权和时间片轮转三种调度算法,并模拟实现这三 种算法 2 、 实验器材 微型计算机、 fedora 版本的 Linux 系统 3 、 实验内容 PCB 在本设计中的基本结构 Typedef struct node { Char name[10] ;/* 进程标识符 */ Float prin ;/* 进程的优先级 */ Int round ;/* 进程轮转的时间片 */ Int needtime ;/* 进程还需要的 cpu 时间 */ Int waittime ;/* 进程进入系统后等待 cpu 的时间 */ Char state ;/* 进程的状态 */ Struct node *next ;/* 链接指针 */ }PCB 设计三个队列:就绪、完成、运行,其中运行队列中应该只有一个进程。 创建进程,就是用户输入进程的标识符和运行所需时间,系统为其生成一个 PCB ,存放进程的信息,将新生成的 PCB 插入就绪队列。进程任务结束,系统将其 PCB 插入完成队列,该进程就消亡。 任务 1 :动态优先权调度算法模拟: 优先权 = 1 + 等待时间 / 需要服务时间 最高响应比优先 (1) 输入一批作业的进程标识和估计运行时间,将其 PCB 插入就绪队列 (2) 当就绪队列非空、 CPU 空闲时,计算出每个就绪进程的优先权 (3) 将优先权最高的进程从就绪队列移入运行队列,状态改为运行 ( 模拟进程调度 ) (4) 在屏幕上输出当前所有进程的状态和优先权信息 ( 已完成进程不显示 ) (5) 让运行进程执行足够的服务时间 (6) 将运行进程移入完成队列 (7) 提示可以输入新的作业,如果有新作业输入,则转向 (1) ,否则转向 (2) (8) 如果就绪队列为空,则结束 程序框图如下: 程序源代码如下: #include stdio.h #include string.h typedef struct node { char name[10]; // 进程标识符 float prin; // 进程的优先级 int round; // 进程轮转的时间片 int needtime; // 进程还需要当 CPU 时间 int waittime; // 进程进入系统后等待当 CPU 的时间 char state; // 进程当状态 struct node *next; // 链接指针 } PCB; PCB *readyQueue=NULL, *runningQueue=NULL, *finishedQueue=NULL, *finishedQueueT ail=NULL, *readyQueueT a

文档评论(0)

1亿VIP精品文档

相关文档