操作系统实验报告--n个进程的进程调度

操作系统实验报告--n个进程的进程调度

ID:28057407

大小:251.30 KB

页数:9页

时间:2018-12-07

操作系统实验报告--n个进程的进程调度_第1页
操作系统实验报告--n个进程的进程调度_第2页
操作系统实验报告--n个进程的进程调度_第3页
操作系统实验报告--n个进程的进程调度_第4页
操作系统实验报告--n个进程的进程调度_第5页
资源描述:

《操作系统实验报告--n个进程的进程调度》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、学院:信息学院班级:计1109班姓名:林癡董学号:XXXXXXXXXXXXX指导老师:XXXX实验一:设计一个有N个进程的进程调度程序一、实验目的通过一个简单的进程调度模拟程序的实现,加深对各种进程调度算法,进程切换的理解。二实验内容1、进程调度算法:采用动态最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)。2、每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名---进程标示数ID优先数PRIORITY优先数越大优先权越商到达时间…进程的到达时间为进程输入的时间。、进程还需要运行吋间ALLTIME,进程运行完毕

2、ALLTIME=0,已川CPU时间----CPUTIME、进程的131塞时间STARTBLOCK-表示当进程在运行STARTBLOCK个时间片后,进程将进入塞状态进程的阻塞时间BLOCKTIME-表示当进程阻塞BLOCKTIME个时间片后,进程将进入就绪状态进程状态一STATE队列指针NEXT川来将PCB排成队列。3、调度原则:进程的优先数及需要的运行时间可以事先人为地指定(也可以巾随机数产生)。进程的到达时间为进程输入的时间。进程的运行吋间以吋间片为单位进行计算。进程在就绪队列中待一个时间片,优先数加1每个进程的状态可以是就绪R(READY)、

3、运行R(Run)阻塞B(BLOCK)、或完成F(Finish)四种状态之一。就绪进程获得CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。如果运行一个时间片后,进程的己占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占川CPU时间还未达所耑要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减3,然后把它插入就绪队列等待CPU。每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查。重复以上过程,直到所要进程都完成为止。三、实验要求完成验内容并写出实验报告,报告应具有以

4、卜内容:1.实验目的。2.实验内容。3.程序及运行情况。4.实验过程中出现的问题及解决方法。四、程序代码#include’’stdio.h”#includenstdlib.h"#defineSTARTBLOCK.TIME3#defineBLOCKTIMETIME3#defineNsizeof(PCB)structPCB//定义进程控制块PCB/{intID;//进程标志//intPID;//进程号intPRIORITY;//优先数intALLTIME;//运行时间ALLTIME,进程运行完毕ALLTIME=0intCPUTIME;//己用CPU时

5、间charSTATE[10];//进程状态一STATEintSTARTBLOCK;//表示当进程在运行STARTBLOCK个时间片后,进程将进入阻塞状态intBLOCKTIME;//表示当进程阻塞BLOCKTIME个时间片后,进程将进入就绪状态PCB*NEXT;//队列指针NEXT};PCB*ready=NULL,*p=NULL,*block=NULL;//p为当前进程ready为就绪链表表头block为阻塞链表表头//插入等待表voidinsert_ready(PCB*pcb){PCB*pp;sprintf(pcb-〉STATE,"ready’

6、’);intflag=0;//标志进程是否插入/*就绪队列为空*/if(ready==NULL){pcb-〉NEXT=ready;ready=pcb;}/*比较进程优先级*/else{pp=ready;while(pp->NEXT!=NULL){if((pcb->PRIORITY)>(pp->PRIORITY))/*若插入进程比当前进程优先数大,*/{pcb-〉NEXT=pp;ready=pcb;//表头flag:1;}elsepp=pp->NEXT;if(flag==O)//此时进程优先数最低,插入到队尾pcb-〉NEXT=NULL;pp-〉N

7、EXT=pcb;}}}//插入阻塞表voidinsert_block(PCB*pcb)//采用在队列最前插入结点{sprintf(pcb-〉STATE,’’阻塞’’)•,if(block==NULL){block=pcb;}else{pcb->NEXT=block;block=pcb;}}//初始化进程PCBvoidinput_pcb(){intnum;printf("请输入进程个数:”);scanf(’’%d",&num);for(inti=0;i

8、alloc(N);//p指向新中请出来的pcbprintf(n输入进程标志ID:”);scanf("%d",&p-〉ID);prin

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。