设计1----进程调度算法的模拟 下载本文

内容发布更新时间 : 2024/12/27 4:03:03星期一 下面是文章的全部内容请认真阅读。

山东科技大学学生课程设计

设计1 进程调度算法的模拟

一、设计目的

1、通过编程实现进程调度算法的模拟,了解进程调度的过程,理解进程调度各方法的特点。

二、设计要求

1.用语言来实现对n个进程采用不同调度算法的进程调度。 2.每个用来标识进程的进程控制块PCB用结构来描述,包括以下字段:

(1)进程优先数ID,其中0为闲逛进程,用户进程的标识数为1,2,3…。

(2)进程优先级Priority,闲逛进程(idle)的优先级为0,用户进程

的优先级大于0,且随机产生,优先数越大,优先级越高。 (3)进程占用的CPU时间CPUtime,进程每运行一次,累计值等于4。 (4)进程总共需要运行时间Alltime,利用随机函数产生。 (5)进程状态,0:就绪态;1:运行态;2:阻塞态。 (6)队列指针next,用来将多个进程控制块PCB链接为队列。 3.优先数改变的原则

(1)进程在就绪队列中每呆一个时间片,优先数增加1。 (2)进程每运行一个时间片,优先数减3。

1

山东科技大学学生课程设计

4.在调度前,系统中拥有的进程数PCB_number由键盘输入,经初始化后,所有的进程控制块PCB链接成就绪队列。

三、设计说明

1 FCFS模块

开始 初始化PCB,输入进程信息 FCFS算法,按照进程先后顺序输出 SJS算法,按照ALLTIME从小到大依次输出 优先级算法,按照优先从大到小输出,进程执行依次P-3,就绪队列中的进程P+1 RR算法,按照时间片依次执行进程,ALLTIME—=4. 结束 2

山东科技大学学生课程设计

1.1 功能

对于先到达的进程优先分配CPU,按照先来先服务的原则依次执行各进程。 1.2 数据结构

typedef struct PCB

{

int ID; //进程优先数,用于标示不同的进程 int Priority; //进程优先级

int CPUTime; //进程占用的CPU时间CPUtime,进程

每运行一次,累计值等于4

int ALLTime; //进程总共需要运行时间Alltime

int Status; //用于表示进程状态,0:就绪态;1:运

行态;2:阻塞态

}PCB;

1.3算法

void FCFS() {

3