实验一-进程调度实验.pdfVIP

  • 1
  • 0
  • 约3.9千字
  • 约 8页
  • 2020-11-12 发布于湖北
  • 举报
实验一 - 进程调度实验 实验一 进程调度实验 一、实验目的 用高级语言编写和调试一个进程调度程序,以加深对进程的概念 及进程调度算法的理解 二、实验类别 综合性实验。综合高级语言编程、进程调度模型、进程调度算法 及数据结构等多方面的知识 三、实验示例 例题: 设计一个有 N 个进程共行的进程调度程序 进程调度算法: 采用最高优先数优先的调度算法 (即把处理机分配给 优先数最高的进程)和先来先服务算法。 每个进程有一个进程控制块( PCB )表示。进程控制块可以包含如 下信息:进程名、优先数、到达时间、需要运行时间、已用 CPU 时 间、进程状态等等。 进程的优先数及需要的运行时间可以事先人为地指定 (也可以由随机 数产生)。进程的到达时间为进程输 入的时间。 进程的运行时间以时间片为单位进行计算。 每个进程的状态可以是就绪 W (Wait )、运行 R (Run )、或完 成 F (Finish )三种状态之一。 就绪进程获得 CPU 后都只能运行一个时间片。用已占用 CPU 时间加 1 来表示。 如果运行一个时间片后, 进程的已占用 CPU 时间已达到所需要 的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用 CPU 时间还未达所需要的运行时间,也就是进程还需要继续运行, 此时应将进程的优先数减 1 (即降低一级),然后把它插入就绪队列 等待 CPU 。 每进行一次调度程序都打印一次运行进程、 就绪队列、 以及各个 进程的 PCB ,以便进行检查。 重复以上过程,直到所要进程都完成为止。 调度算法的流程图如下 : 进程调度源程序如下: //jingchendiaodu.cpp #include stdio.h #include stdlib.h #include conio.h #define getpch(type) (type*)malloc(sizeof(type)) #define NULL 0 struct pcb { /* 定义进程控制块 PCB */ char name[10]; char state; int super; int ntime; int rtime; struct pcb* link; }*ready=NULL,*p; typedef struct pcb PCB; sort() /* 建立对进程进行优先级排列函数 */ { PCB *first, *second; int insert=0; if((ready==NULL)||((p-super)(ready-super))) /* 优先级最大者 ,插 入队首 */ { p-link=ready; ready=p; } else /* 进程比较优先级 ,插入适当的位置中 */ { first=ready; second=first-link; while(second!=NULL) { if((p-super)(second-super)) /* 若插入进程比当前进程优先数大 ,*/ { /* 插入到当前进程前面 */ p-link=second; first-link=p; second=NULL; insert=1; } else /* 插入进程优先数最低 ,则插入到队尾 */ { first=first-link; second=second-link

文档评论(0)

1亿VIP精品文档

相关文档