实验报告1
课程 计算机操作系统 实验名称 进程调度 第 1 页
班级 11计本 学号 105032011130 姓名 风律澈
实验日期:2013年10月4日 报告退发 (订正 、 重做)
一、实验目的:
多道系统中,当就绪进程数大于处理机数时,必须按照某种策略决定选取哪些进程占用处理器。本实验模拟实现处理器调度,进一步加深对处理器调度算法的理解。
二、实验内容:
选择某种调度算法,设计一个实现处理器调度的程序。
三、实验环境:
VS2008,window7操作系统
四、实验步骤:
1、设计一个有N个进程并发的处理器调度程序,每个进程由一个PCB表示,PCB包含以下信息:进程名、优先数、要求服务时间、进程状态。
2、可分别用链表表示就绪队列,用队列中的结构体结点表示进程。
3、已知各进程的的到达时间等如下:
进程名到达时间服务时间优先数A0312B1531C2221D34104、分别实现下面两种调度算法
(按FCFS调度算法实现处理器调度;
(按优先数调度算法实现处理器调度。
实验程序:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~链表队列~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
此部分头文件名:link.h
#include
using namespace std;
// //
// 修改部分 //
// //
//节点定义
typedef struct listnode{
listnode *prior;
char name;//进程名
int serve_time;//服务时间
int priors;//优先权
int arrival_time;//到达时间
float start_time;//开始时间
float finish_time;//结束时间
float turnover_time;//周转时间
float t_t_s;//带权重周转时间
int state;
listnode *next;
}progress;
//表头定义
typedef struct{
listnode *head;
int length;
}listlead,list;
//输出函数
void coutdata(listnode *p){
cout<name<
cout<serve_time<
cout<priors<
cout<arrival_time<
cout<start_time<
cout<finish_time <
cout<turnover_time<
cout<t_t_s<
}
//输入函数
void cindata(listnode &e,char n,int s,int p,int time){
e.name=n;
e.serve_time=s;
e.priors=p;
e.arrival_time=time;
}
void cindata(listnode &e){
cout<>e.name;
cout<>e.serve_time;
cout<>e.priors;
}
//初始化
void initilead(listlead &L){
L.head=NULL;
L.length=0;
}
void initinode(listnode &e,char n,int s,int p,int time){
e.prior=NULL;
e.next=NULL;
e.finish_time=0;
e.start_time=0;
e.state=0;
e.turnover_ti