操作系统实验1

2018-11-27 09:15

学生实验报告

实验课名称:计算机操作系统 实验项目名称:进程调度

专业名称:计算机科学与技术(交通信息工程) 班学

级: 2012240204 号: 201224020425

学生姓名: 刘涛 教师姓名: 刘晓春

2014 年 12 月 20 日

一、实验名称: 进程调度

二、实验目的与要求:

要求学生通过实验加深理解进程调度的特点,并掌握几种常见的调度算法。

三、实验内容:

编写模拟程序实现FIFO算法和轮转法,比较他们的不同之处。

四、实验原理

不同的调度算法,平均周转时间和平均带权周转时间有很大差别,应根据具体情况具体选择。

FIFO算法每次调度都选择最先进入就绪队列的进程调度,轮转法能够保证就绪队列总的所有进程在一给定的时间内,均能获得一个时间片的处理机执行时

五、源代码及实验结果

#include #include #include const int MAXPCB=200;

//定义最大进程数

//定义进程控制块PCB结构体类型 typedef struct PCB_Node{ char sName[20]; //进程名 int iStatus; //进程状态(1就绪 2等待 3运行) 当前程序中暂时全部默认为就绪处理 int iRunTime; //进程运行时间(纳秒) int iPriority; //进程优先数(数字越小优先级越高) int iBeFinished; //进程是否执行完成标志(1:已完成;0:末完成) int iWaitTime; //进程等待时间(纳秒) }PCB;

PCB pcbs[MAXPCB]; //PCB数组队列 int iPCBNum; //实际进程数 char sFileName[20]; //进程流文件名 void InitPCB(); int ReadPCBFile(); void ReSetPCB(); void FIFO(); void RR(); void Hint();

void InitPCB() {

int i; for(i=0;i

int ReadPCBFile() //读进程流文件数据,存入PCB数组队列pcbs,并输出 { FILE *fp; int i; char cHead; cout<<\请输入要打开的进程流(文本)文件名(注意:包括路径名和后缀名): \ cin>>sFileName; if((fp=fopen(sFileName,\ { cout<<\错误:进程流文件 \打不开,请检查文件名和路径!!\ return -1; } else { cHead=fgetc(fp); while(cHead==' '||cHead==10||cHead==9) cHead=fgetc(fp); } if(cHead==EOF) { printf(\错误:进程流文件:%s 为空!!\\n\ return -1; } else { fseek( fp, -1, SEEK_CUR); while(!feof(fp)) {

fscanf(fp,\s[iPCBNum ].iPriority); iPCBNum++; } //输出所读入的进程数据 cout<

}

void ReSetPCB() //重置PCB完成标志、等待时间,以供另一个调度算法使用,并输出所读入的进程数据 { int i; //输出所读入的进程数据 cout<

void FIFO() //先进先出调度算法 { int i,j; int iSum; //总等待时间 //输出先进先出调度算法执行流 cout<

void RR() //时间片轮转调度算法 { int i; int iNotEnded=1; //循环控制标志:不是所有进程都已经获得足够时间片运行完成,需要继续轮转。 int iNum; //到目前为止末执行完的进程数 int iRound=0; //轮转周期数 int iSum=0; //总时间片数 float fBlockTime=10; //时间片的长度(纳秒) cout<

cin>>fBlockTime; cout<0) { iNotEnded=1; iRound++; //累加轮转周期数 cout<

void Hint() { cout<<\二、本程序包括:FIFO,优先级调度算法(静态优先级),时间片轮转调度算法,。\ cout<<\输入:进程流文件(文本文件),其中存储的是一系列要执行的进程,每个进程包括四个数据项: \ cout<<\进程名 进程状态(1就绪 2等待 3运行) 所需时间 优先级(0级最高) \ cout<<\输出:进程执行流 等待时间 平均等待时间 \ cout<<\ \ cout<<\━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ \ cout<

void main() { int iInput; //用户输入的整数以选择算法 bool bGoOn; //是否继续进程调度算法模拟的标志 char sGoOn[1]; //用户输入是否继续进程调度算法模拟的字母:y、Y、N、n Hint();


操作系统实验1.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2011届高三复习全国100所名校物理试题精选(十七)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: