操作系统实验报告-进程调度zzp教程.doc
文本预览下载声明
实验报告
· PAGE 14·
· PAGE 15·
· PAGE 0·
沈 阳 工 程 学 院
学 生 实 验 报 告
实验室名称:计算机实验室 实验课程名称: 操作系统
实验项目名称:进程调度 实验日期: 2016年 月 日
班级: 物联网151 姓名: 学号:
指导教师: 曲乐声 刘琪 批阅教师: 成绩:
一.实验目的
本实验要求用高级语言编写模拟进程调度程序,以便加深理解有关进程控制快、进程队列等概念,并体会和了解基于时间片轮转调度算法的具体实施办法。
二.实验设备
PC机一台,WIN-TC软件。
三.实验项目
(1)设计进程控制块PCB的结构,通常应包括如下信息:进程名、或轮转时间片数、进程已占用的CPU时间、进程到完成还需要的时间、进程的状态、进程优先级、当前队列指针等
(?2)编写调度算法程序:时间片轮转、优先级调度算法程序
(3)按要求输出结果。(附图)
四.根据实验写结果
1.时间片轮转
时间片大小进程名ABCDE平均q=4到达时间01234服务时间23456完成时间2591522周转时间24712188.6带权周转时间11.31.752.431.892.优先级
时间片大小进程名ABCDE平均q=4到达时间01234服务时间23456优先数12345完成时间211131820周转时间21011151610.8带权周转时间13.32.7532.62.5四.实验程序代码(附页)
成绩评定
算法正确性2.521.510.50程序正确性2.521.510.50结果及分析的正确性543210成 绩
时间片轮转
#include?stdio.h? ??
#include?stdlib.h? ??
#include?string.h? ??
typedef?struct?node? ??
{? ??
??char?name[20];????/*进程的名字*/? ??
??int?prio;?????/*进程的优先级*/? ??
??int?round;?????/*分配CPU的时间片*/? ??
??int?cputime;????/*CPU执行时间*/? ??
??int?needtime;????/*进程执行所需要的时间*/? ??
??char?state;?????/*进程的状态,W——就绪态,R——执行态,F——完成态*/? ??
??int?count;?????/*记录执行的次数*/? ??
??struct?node?*next;???/*链表指针*/? ??
}PCB;? ??
PCB?*ready=NULL,*run=NULL,*finish=NULL;?/*定义三个队列,就绪队列,执行队列和完成队列*/? ??
int?num;? ??
void?GetFirst();????/*从就绪队列取得第一个节点*/? ??
void?Output();?????/*输出队列信息*/? ??
void?InsertPrio(PCB?*in);??/*创建优先级队列,规定优先数越小,优先级越高*/? ??
void?InsertTime(PCB?*in);??/*时间片队列*/? ??
void?InsertFinish(PCB?*in);??/*时间片队列*/? ??
void?PrioCreate();????/*优先级输入函数*/? ??
void?TimeCreate();????/*时间片输入函数*/? ??
void?Priority();????/*按照优先级调度*/? ??
void?RoundRun();????/*时间片轮转调度*/? ??
int?main(void)? ??
{? ??
??char?chose;? ??
??printf(输入进程名及其需要运行的时间\n);? ??
??scanf(%d,num);? ??
??getchar();? ??
??printf(Scheduling method for input process: (P/R)\n);? ??
??scanf(%c,chose);? ??
??switch(chose)? ??
??{? ??
??case?P:? ??
??c
显示全部