1、 计算机科学与应用系计算机科学与应用系 操作系统原理操作系统原理 课程设计报告课程设计报告 题目: 进程调度算法 班级: 姓名: 专业: 计算机科学与技术 指导老师: 操作系统课程设计 2 进程调度算法 一、实验目的 通过优先权法与轮转调度算法的模拟加深对进程概念和进程调度过程的理 解,掌握进程状态之间的切换,同时掌握进程调度算法的实现方法和技巧。 二、实验内容 1、 用 C 语言或 C+语言来实现对 N 个进程采用优先算法以及轮转算法的进程 调度。 2、每个用来标示进程的进程控制块 PCB 用结果来描述,包括以下字段 (1) 进程标识ID, 其中0为闲逛进程, 用户进程的标识数为1、 2、
2、3、 、 、 、 、 、 、 。 (2)进程优先级 Priority,闲逛进程(idle)的优先级为 0,用户有进 程的优先级大于 0,且随机产生,标识数越大,优先级越高。 (3)进程占用的 CPU 时间 CPUtime,进程每运一次,累积等于 4. (4)进程总共需要运行时间 Alltime,利用随机函数产生。 (5)进程状态,0就绪态,1运行态,2阻塞态。 (6)队列指针 next,用来将多个进程控制块 PCB 链接为队列。 3、优先数改变的原则 (1)进程在就绪队列中每呆一个时间片,优先数增加 1. (2)进程每运行一个时间片,优先数增加 1. 4、在调度前,系统中拥有的进程数 PCB_
3、number 有键盘输入,进初始化后, 所有的进程控制块 PCB 连接成就绪队列。 5、为了清楚的观察诸进程的调度过程,程序应将每个时间片内的进程的情 况显示出来。 三、实验步骤 1、进程管理程序调式好后,运行进程管理程序 操作系统课程设计 3 Y N N Y Y N N Y Y N N Y ready-queue 是否为 将 Running 从 ready_queue 中删除, 再将 running 加入 block_queueb 将其从 blick_queuek 队列是中删除,再将其加入 ready_queuek 输入开始进程数 n 随机 对 block_queue 中的进程 PCB询问是
4、否要唤醒? 创建新进程并加入到 ready_queue 中 Runningi; while(i) if(i=1) couti; return 0; /输出所有 PCB 的初始值 void print_init(PCB *pcb) PCB* temp=pcb-next ; coutState=0) coutID=0) coutState=0) coutnext; if(p=0) item-next =0; q-next=item; 操作系统课程设计 11 else item-next =p; q-next =item; /将 item 插入到阻塞队列的尾部 void pushback_queue(PCB *queue,PCB *item) PCB *p,*q; q=queue,p=q-next; while(p!=0) q=p; p=p-next; item-next =q-next ; q-next =item; /对 queue