操作系统作业调度

发布 2021-05-05 17:59:28 阅读 1664

#include <>

#include <>

#include<>

#include <>

#define max 9999999

enum state

unhand,ready,finished}; 状态联合体,unhand未提交,ready就绪,finished已完成。

struct time //自定义结构体变量时间time

int hour; /小时。

int minite; /分钟。

time &operator =(const int n)

struct pcb //自定义结构体,作业的pcb,每个对象代表一个作业。

char name[15]; 作业的名字。

time b_time; /作业开始执行的时间。

time r_time; /作业执行时间。

time e_time; /作业结束的时间。

time n_time; /作业还需要执行的时间。

time w_time; /作业等待的时间。

int priority; /作业的优先级,越小优先级别越高。

state state; /作业当前的状态。

/下面是对时间的运算符重载,便与在程序中直接使用time的对象,也便与理解程序。

time &operator++(time &time)

if(return time;

time &operator--(time &time)

if(return time;

int operator <(time &time1,time &time2)

if(< 1;

else if(< 1;

else return 0;

time operator-(time &time1,time &time2)

time temp;

if(<0)

return temp;

time operator+(time &time1,time &time2)

time temp;

if(>59)

return temp;

float operator/(time &time1,time &time2)

float temp;

temp=(float)(

return temp;

time operator/(time &time1,int &n)

time temp;

return temp;

ostream & operator<<(ostream &out,time &time)

if(<10)cout<<0;

cout<<<

if(<10)cout<<0;

cout<<

return out;

istream & operator>>(istream &in,time &time)

in>>>

while(<0||>24||<0||>60)

return in;

int operator==(time &time1,time &time2)

if(return 1;

else return 0;

/全局变量的声明。

pcb *works=null; /作业的数组,里面是以提交的时间先后排序的。

int count计数结束的作业的个数。

int size作业的个数。

time cputimecpu的当前时间。

int beginrun当前cpu时间最后一个提交的作业,在轮转法中用到。

/下面是与作业调度相关的一些函数。

int run(int i让cpu运行第i个作业1分钟。

++cputimecpu时间+1

for(int j=0;j

else return 0返回0表示作业还没结束。

void runtime(int i,time time) /把作业i在cpu上运行time时间。

time j;

j=0;while(j run(i);j;

if(cputime

void sort用选择排序给作业们按提交的顺序排序。

pcb min;

int num;

for(int i=0;i

void init初始化所有作业。

beginrun=-1;

count=0;

cputime=works[0].b_time; /把cpu时间的初始点设置为最先提交的作业的提交时间。

for(int i=0;i

works[i].n_time=works[i].r_time; /需要执行的时间设置为运行的时间。

works[i].w_time=0等待时间设置为0

if(works[i].b_time==cputime)works[i].state=ready把跟cputime相等的作业的状态设置为ready

else works[i].state=unhand把其他作业的状态设置为unhand

void show()

time t,t,att是每一个作业的周转时间,t是总的周转时间,at是平均周转时间。

t=0;float w,w=0,aww是每一个作业的带权周转时间,w是总的带权周转时间aw是平均带权周转时间。

cout<<"作业名"<

cout< t=works[i].e_time-works[i].b_time;

w=t/works[i].r_time;

cout<<"t<<"w<

操作系统 作业调度

一 各作业情况如下 优先级为小值优先,求平均周转时间和带权平均周转时间?1.先来先服务 2.短作业优先 3.静态优先。答 1.先来先服务。0时刻只有作业1到达,所以先执行1 2时刻作业2和3都到达,2先到所以执行2 7时刻作业3和作业4都到达,3先所以执行3,再执行4 平均周转时间 2 0 7 1 ...

操作系统作业调度

操作系统。实。验。报。告。学院 计算机科学与技术学院。班级 计091 学号 0913022032 姓名 曹恒楼。时间 2011 11 28 目录。1.实验名称3 2.实验目的3 3.实验内容3 4.实验要求3 5.实验环境3 6.实验设计3 6.1数据结构设计3 6.2算法设计4 6.3功能模块设计...

操作系统作业调度实验

实验一进程。2011210549 崔晶。1.本实验实现的功能有 创建一个进程,撤销一个进程,挂起一个进程。2.本实验初始化的进程块状态如图所示 自定义 p表示正在运行,r表示就绪,w表示等待。3.程序如下 include include 进程块的数据结构。struct pcb struct 插入等待...