欢迎来到天天文库
浏览记录
ID:51907903
大小:144.00 KB
页数:13页
时间:2020-03-18
《进程调度实验归纳总结报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验一进程调度一.实验题目:(1)、编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法对五个进程进行调度。2)、编写并调试一个模拟的进程调度程序,采用“轮转法”调度算法对五个进程进行调度。二:实验目的用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解.三.实验内容:<一>最高优先级优先调度算法1)优先级简介动态优先数是指在进程创建时先确定一个初始优先数,以后在进程运行中随着进程特性的改变不断修改优先数,这样,由于开始优先数很低而得不到CPU的进程,就能因为等待时间的增长而优先数变为最高而得到CPU运行。例如:在进程获得一次CPU后
2、就将其优先数减少1。或者,进程等待的时间超过某一时限时增加其优先数的值,等等。2)详细设计优先权调度算法:1、设定系统中有五个进程,每一个进程用一个进程控制块(PCB)表示,进程队列采用链表数据结构。2、进程控制块包含如下信息:进程名、优先数、需要运行时间、已用CPU时间、进程状态等等。3、在每次运行设计的处理调度程序之前,由终端输入五个进程的“优先数”和“要求运行时间”。4、进程的优先数及需要的运行时间人为地指定.进程的运行时间以时间片为单位进行计算。5、采用优先权调度算法,将五个进程按给定的优先数从大到小连成就绪队列。用头指针指出队列首进程,队列采用链表结构。6、处
3、理机调度总是选队列首进程运行。采用动态优先数办法,进程每运行一次优先数减“1”,同时将已运行时间加“1”。7、进程运行一次后,若要求运行时间不等于已运行时间,则再将它加入就绪队列;否则将其状态置为“结束”,且退出就绪队列。8、“就绪”状态的进程队列不为空,则重复上面6,7步骤,直到所有进程都成为“结束”状态。9、在设计的程序中有输入语句,输入5个进程的“优先数”和“要求运行时间”,也有显示或打印语句,能显示或打印每次被选中进程的进程名、运行一次后队列的变化,以及结束进程的进程名。10、最后,为五个进程任意确定一组“优先数”和“要求运行时间”,运行并调试所设计的程序,显示
4、或打印出逐次被选中进程的进程名及其进程控制块的动态变化过程。3)流程图:图一.最高优先级优先调度算法流程图4)源程序:#include"stdio.h"#include#include#definegetpch(type)(type*)malloc(sizeof(type))#defineNULL0structpcb{/*定义进程控制块PCB*/charname[10];//进程名charstate;//进程状态intsuper;//进程优先级intntime;//进程需要运行时间intrtime;//进程已经运行的时间struct
5、pcb*link;}*ready=NULL,*p;typedefstructpcbPCB;voidinunization()//初始化界面{printf("tt*********************************************tt");printf("tttt实验一进程调度");printf("tt*********************************************tt");printf("ttttt计算机学院软件四班");printf("tttt
6、t蓝小花");printf("ttttt3204007102");printf("ttttt完成时间:2006年11月10日");printf("请输入任意键进入演示过程");getch();}voidsort()/*建立对进程进行优先级排列函数*/{PCB*first,*second;intinsert=0;if((ready==NULL)
7、
8、((p->super)>(ready->super)))/*优先级最大者,插入队首*/{p->link=ready;ready=p;}else/*进程比较优先级,插入适当的位置中
9、*/{first=ready;second=first->link;while(second!=NULL){if((p->super)>(second->super))/*若插入进程比当前进程优先数大,*/{/*插入到当前进程前面*/p->link=second;first->link=p;second=NULL;insert=1;}else/*插入进程优先数最低,则插入到队尾*/{first=first->link;second=second->link;}}if(insert==0)first->link=p;}}voidinput(
此文档下载收益归作者所有