内容发布更新时间 : 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