操作系统实验——动态优先级进程调度实验报告(共20页).doc





《操作系统实验——动态优先级进程调度实验报告(共20页).doc》由会员分享,可在线阅读,更多相关《操作系统实验——动态优先级进程调度实验报告(共20页).doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上1. 实验名称:动态优先权调度过程中就绪队列的模拟 2. 实验要求:采用动态优先权的进程调度算法,用C语言编程模拟调度过程中每个时间片内的就绪队列。3. 实验内容:(1)每个进程控制块PCB用结构描述,包括以下字段:*进程标识符id*进程优先数priority,并规定优先数越大的进程,其优先权越高。*进程已占用的CPU时间cputime*进程还需占用的CPU时间alltime,当进程运行完毕时,aiitime变为0*进程的阻塞时间startblock,当进程再运行startblock个时间片后,进程将进入阻塞状态*进程被阻塞的时间blocktime,已阻塞的进程再等待
2、blocktime 个时间片后,将转换成就绪状态*进程状态state*队列指针next,将PCB排成队列。(2)调度前,系统中有五个进程,它们的初始状态如下:ID01234PRIORITY93830290CPUTIME00000ALLTIME33634STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEREADYREADYREADYREADYREADY(3)进程在就绪队列呆一个时间片,优先数增加1。(4)进程每运行一个时间片,优先数减3。(5)按下面格式显示每个时间片内就绪队列的情况:READY_QUEUE :-id1-id24. 任务分析进程控制块用结构体来表示,包含
3、它的各项属性。建立两个队列:一个就绪队列,一个阻塞队列。创建一个进程控制块表示当前正在运行的进程。程序开始运行时,所有进程都在就绪队列中。当startblock减少到0时,进程进入阻塞队列。在阻塞队列中的进程,当blocktime减少到0时,转入就绪队列。在就绪队列中的进程,如果优先级比当前正在执行的进程高,就可以取代当前进程获取时间片。当前进程如果运行完毕,就绪队列中优先级最高的进程就可以成为新当前进程。5. 程序流程图6. 程序清单#include #include using namespace std;#define LEN 5/ 进程最大数量typedef enum STATE/ 进
4、程状态READY,/ 就绪BLOCK,/ 阻塞END/ 完成STATE;/ 定义进程控制块typedef struct PCB int id;/ 进程标识符int priority;/ 进程优先级int cputime;/ 已占用的CPU时间int alltime;/ 还需占用的CPU时间int startblock;/ 阻塞时间int blocktime;/ 被阻塞时间STATE state;/ 进程状态PCB;/ 定义队列typedef struct queue int size;/ 队列中进程的数量PCB *dataLEN;/ 进程的指针Queue;PCB psLEN;/ 进程数组PCB
5、 *cp;/ 当前正在运行的进程Queue rQueue, bQueue;/ 就绪队列 和 阻塞队列 / 就绪队列按优先级降序排序(使用了冒泡排序法)void rQueueSort() PCB *temp;for (int i = 0; i rQueue.size - 1; i+) for (int j = 0; j priority priority) temp = rQueue.dataj;rQueue.dataj = rQueue.dataj + 1;rQueue.dataj + 1 = temp;/ 初始化void init() / 给进程赋值for (int i = 0; i LEN
6、; i+) psi.id = i;psi.state = READY;psi.cputime = 0;psi.alltime = 3;psi.blocktime = 0;psi.startblock = -1;ps0.priority = 9;ps1.priority = 38;ps2.priority = 30;ps3.priority = 29;ps4.priority = 0;ps2.alltime = 6;ps4.alltime = 4;ps0.startblock = 2;ps0.blocktime = 3;cp = NULL;/ 当前进程赋空bQueue.size = 0;/ 阻塞
7、队列没有进程for (int i = 0; i LEN; i+) bQueue.datai = NULL;rQueue.datai = ψrQueue.size = 5;/ 所有进程全部进入就绪队列rQueueSort();/ 对就绪队列排序/ 打印void print() cout nRUNNING PROG: ;if (cp != NULL) coutid;cout nREADY_QUEUE:;for (int i = 0; i rQueue.size; i+) cout id;cout nBLOCK_QUEUE:;for (int i = 0; i bQueue.size; i+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 动态 优先级 进程 调度 报告 20

限制150内