进程调度算法设计

西安文理学院 计算机科学系

课程设计报告

设计名称: 进程调度算法设计 设计题目: 进程调度算法设计 学生学号: [1**********] 专业班级: 软件工程一班 学生姓名: 张兴华 学生成绩: 课题工作时间:

计算机科学系课程设计任务书

指导教师: 孙少波 系主任:

日 期:2012年05月29日

——1——

一、设计题目

进程调度算法的设计

二、主要内容

1、设计进程控制块PCB表结构,分别适用于优先数调度算法和循环轮转调度算法。

2、建立进程就绪队列。对两种不同算法编制入链子程序。 3、编制两种进程调度算法:1)优先数调度;2)循环轮转调度

开发环境:VC++语言的编程环境

三、具体要求

1、本程序用两种算法对五个进程进行调度,每个进程可有三个状态,并假设初始状态为就绪状态。

2、为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户给定。

3、在优先数算法中,优先数的值为50与运行时间的差值,即

P_TIME-process->needtime。进程每执行一次,优先数减3,CPU时间片数加1,进程还需要的时间片数减1。在轮转算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了2个单位),这时,CPU时间片数加2,进程还需要的时间片数减2,并排列到就绪队列的尾上。

4、对于遇到优先数一致的情况,采用FIFO策略解决。

开发环境:不限

四、进度安排

1、资料查找、系统分析,数据流程分析,概要设计。

2、系统详细设计、功能设计。 3、算法实现、编程调试。

4、资料整理、课程设计说明书编写。

五、完成后应上交的材料

——2——

1、课程设计说明书 2、相关源程序文件

六、总评成绩

指导教师 签名日期 年 月 日

系 主 任 审核日期 年 月 日

——3——

目 录

一.设计目的................................................................................................................... 5 二.设计内容................................................................................................................... 5 三.设计原理................................................................................................................... 6

.............................................................................................. 6 .......................................................................................... 6 四.设计步骤................................................................................................................ 6

.......................................................................................................... 6 .......................................................................................................... 7 .......................................................................................................... 7 ………………………………………………………………………..8 4.5源程序………………………………………………………………………...8 ………………………………………...………….....16

.................................................................................... 16 ................................ 16 4.6.3 运用循环轮转调度算法的执行结果(如下图)............................ 19

五.设计总结................................................................................................................. 21 六.参考文献................................................................................................................. 21

——4——

一.设计目的

通过这次课程设计,加深理解有关进程控制块、进程队列的概念,并体会和了解优先数和循环轮转调度算法的具体实施办法。培养程序设计的方法和技巧,提高编制清晰、合理、可读性好的系统程序的能力,同时加深对操作系统课程的理解。

二.设计内容

1.用语言来实现对n个进程采用不同调度算法的进程调度。

2.每个用来标识进程的进程控制块PCB用结构来描述,包括以下字段: (1)进程优先数ID,其中0为闲逛进程,用户进程的标识数为1,2,3…。 (2)进程优先级Priority,闲逛进程(idle)的优先级为0,用户进程的

优先级大于0,且随机产生,优先数越大,优先级越高。

(3)进程占用的CPU时间CPUtime,进程每运行一次,累计值等于4。 (4)进程总共需要运行时间Alltime,利用随机函数产生。 (5)进程状态,0:就绪态;1:运行态;2:阻塞态。

(6)队列指针next,用来将多个进程控制块PCB链接为队列。 3.优先数改变的原则

(1)进程在就绪队列中每呆一个时间片,优先数增加1。 (2)进程每运行一个时间片,优先数减3。

4.在调度前,系统中拥有的进程数PCB_number由键盘输入,经初始化后,

所有的进程控制块PCB链接成就绪队列。

三.设计原理

3.1 优先数调度算法

对每个进程确定一个优先数,该算法总是让优先数最高的进程先使用处理器。对具有相同优先数的进程,再来采用先来先服务的次序分配处理器。系统常与任务的紧迫性和系统效率等因素确定进程的优先数。进程的优先数可以固定的,也可随进程执行过程动态变化。一个高优先数进程占用处理器后,系统处理该进程时有两种算法,一是“非抢占式”,另一种是“可抢占式”。前者是次进程占用处理器后一直运行到结束,除非本身主动让出处理器;后者则是严格保证在任何时刻总是让优先数最高的进程在处理器上运行。

3.2 循环轮转调度算法

——5——

循环轮转调度算法的具体原理是:每个进程被分配一个时间片,即该进程允许运行的时间。就绪的进程都存放在一个就绪链表中,队首的进程将获得时间片。如果在时间片结束时进程还在运行,则CPU将剥夺并分配给下一个进程。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。

四.设计步骤

4.1 任务分析

(1)PCB结构通常包括以下信息:进程名,进程优先数,轮转时间片,进程已占用的CPU时间,进程还需要的CPU时间,进程的状态,当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删

(2)本程序用两种算法对五个进程进行调度,每个进程可有三个状态:就绪、执行、完成。并假设初始状态为就绪状态。

(3)为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户给定。

(4)在优先数算法中,优先数可以先取值为一个常数减去进程所需要的时间片数目,进程每执行一次,优先数减3,CPU时间片数加1,进程还需要的时间片数减1。在轮转算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了2个单位),这时,CPU时间片数加2,进程还需要的时间片数减2,并排列到就绪队列的尾上。

(5)对于遇到优先数一致的情况,采用FIFO策略解决。

4.2 概要设计

1.本程序用两种算法对五个进程进行调度,每个进程可有三个状态,并假设初始状态为就绪状态。

2.为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户给定。

3.在优先数算法中,优先数的值为50与运行时间的差值,即P_TIME-process->needtime。进程每执行一次,优先数减3,CPU时间片数加1,进程还需要的时间片数减1。在轮转算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了2个单位),这时,CPU时间片数加2,进程还需要的时间片数减2,并排列到就绪队列的尾上。

4.对于遇到优先数一致的情况,采用FIFO策略解决。

4.3 详细设计

1.struct pcb() 定义pcb块

2.Void display() 显示结果信息函数

——6——

3.int process_finish(pcb *q) 进程完成标示

4.void display_round() 显示循环轮转调度算法运行结果 5.priority_cal() 优先数调度算法

6.void cpu_round()处理器的工作状态

4.4 流程图

——7——

4.5 源程序

源程序如下: #include #include #include #include #include #define P_NUM 5 #define P_TIME 50 enum state{ ready, execute, block, finish };

struct pcb{ char name[4]; int priority; int cputime; int needtime; int count; int round; state process; pcb * next; };

pcb * get_process(); pcb * get_process(){ pcb *q;

——8——

pcb *t; pcb *p; int i=0;

cout

while (i

q=(struct pcb *)malloc(sizeof(pcb)); cin>>q->name; cin>>q->needtime; q->cputime=0;

q->priority=P_TIME-q->needtime; q->process=ready; q->next=NULL; if (i==0){ p=q; t=q; } else{

t->next=q; t=q; } i++; } //while return p; }

void display(pcb *p){

cout

——9——

"

coutname;

cout

coutcputime;

cout

coutneedtime;

cout

coutpriority;

cout

switch(p->process){

case ready:cout

case execute:cout

case block:cout

case finish:cout

}

p=p->next;

}

}

int process_finish(pcb *q){

int bl=1;

while(bl&&q){

bl=bl&&q->needtime==0;

q=q->next;

}

return bl;

}

void cpuexe(pcb *q){

pcb *t=q;

int tp=0;

——10——

while(q){

if (q->process!=finish){

q->process=ready;

if(q->needtime==0){

q->process=finish;

}

}

if(tppriority&&q->process!=finish){

tp=q->priority;

t=q;

}

q=q->next;

}

if(t->needtime!=0){

t->priority-=3;

t->needtime--;

t->process=execute;

t->cputime++;

}

}

void priority_cal(){

pcb * p;

p=get_process();

int cpu=0;

while(!process_finish(p)){

cpu++;

cout

cpuexe(p);

display(p);

——11——

}

printf("All processes have finished,press any key to exit"); getch();

}

void display_menu(){

cout

cout

cout

cout

}

pcb * get_process_round(){

pcb *q;

pcb *t;

pcb *p;

int i=0;

cout

while (i

q=(struct pcb *)malloc(sizeof(pcb));

cin>>q->name;

cin>>q->needtime;

q->cputime=0;

q->round=0;

q->count=0;

q->process=ready;

q->next=NULL;

if (i==0){

p=q;

t=q;

——12——

}

else{

t->next=q;

t=q;

}

i++;

} //while

return p;

}

void cpu_round(pcb *q){

q->cputime+=2;

q->needtime-=2;

if(q->needtime

q->needtime=0;

}

q->count++;

q->round++;

q->process=execute;

}

pcb * get_next(pcb * k,pcb * head){

pcb * t;

t=k;

do{

t=t->next;

}

while (t && t->process==finish);

——13——

if(t==NULL){

t=head;

while (t->next!=k && t->process==finish){ t=t->next;

}

}

return t;

}

void set_state(pcb *p){

while(p){

if (p->needtime==0){

p->process=finish;

}

if (p->process==execute){

p->process=ready;

}

p=p->next;

}

}

void display_round(pcb *p){

cout

coutname;

cout

coutcputime;

cout

coutneedtime;

——14——

"

cout

coutcount;

cout

coutround;

cout

switch(p->process){

case ready:cout

p=p->next;

}

}

void round_cal(){

pcb * p;

pcb * r;

p=get_process_round();

int cpu=0;

r=p;

while(!process_finish(p)){

cpu+=2;

cpu_round(r);

r=get_next(r,p);

cout

display_round(p);

set_state(p);

}

}

——15——

void main(){

display_menu();

int k;

scanf("%d",&k);

switch(k){

case 1:priority_cal();break; case 2:round_cal();break; case 3:break;

display_menu();

scanf("%d",&k);

}

}

4.6 程序测试数据及结果

4.6.1 程序测试数据

4.6.2 运用优先数调度算法的执行结果(如下图)

——16——

——17——

——18——

4.6.3 运用循环轮转调度算法的执行结果(如下图)

——19——

——20——

五.设计总结

经过这次课程设计,把课本中的理论知识转化为实践,在一定程度上加深了对优先级数调度和循环调度算法的理解,同时提高了我的动手编程能力。虽然在编程的过程中,遇到了很多的困难,但是经过我的努力,通过查参考书或者到网上搜索等途径,我所遇到的困难都被我一一的解决了。过程虽然很难,但是通过这次课程设计,结果还是让我受益匪浅。我始终相信:在前进的途中,所遇到的绊脚石,通过我的努力,它最终都会变成我脚下的垫脚石!

六.参考文献 《计算机操作系统》,汤小丹主编,西安电子科技大学出版社;

《C++语言基础教程》, 吕凤翥主编,清华大学出版社。

——21——

西安文理学院 计算机科学系

课程设计报告

设计名称: 进程调度算法设计 设计题目: 进程调度算法设计 学生学号: [1**********] 专业班级: 软件工程一班 学生姓名: 张兴华 学生成绩: 课题工作时间:

计算机科学系课程设计任务书

指导教师: 孙少波 系主任:

日 期:2012年05月29日

——1——

一、设计题目

进程调度算法的设计

二、主要内容

1、设计进程控制块PCB表结构,分别适用于优先数调度算法和循环轮转调度算法。

2、建立进程就绪队列。对两种不同算法编制入链子程序。 3、编制两种进程调度算法:1)优先数调度;2)循环轮转调度

开发环境:VC++语言的编程环境

三、具体要求

1、本程序用两种算法对五个进程进行调度,每个进程可有三个状态,并假设初始状态为就绪状态。

2、为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户给定。

3、在优先数算法中,优先数的值为50与运行时间的差值,即

P_TIME-process->needtime。进程每执行一次,优先数减3,CPU时间片数加1,进程还需要的时间片数减1。在轮转算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了2个单位),这时,CPU时间片数加2,进程还需要的时间片数减2,并排列到就绪队列的尾上。

4、对于遇到优先数一致的情况,采用FIFO策略解决。

开发环境:不限

四、进度安排

1、资料查找、系统分析,数据流程分析,概要设计。

2、系统详细设计、功能设计。 3、算法实现、编程调试。

4、资料整理、课程设计说明书编写。

五、完成后应上交的材料

——2——

1、课程设计说明书 2、相关源程序文件

六、总评成绩

指导教师 签名日期 年 月 日

系 主 任 审核日期 年 月 日

——3——

目 录

一.设计目的................................................................................................................... 5 二.设计内容................................................................................................................... 5 三.设计原理................................................................................................................... 6

.............................................................................................. 6 .......................................................................................... 6 四.设计步骤................................................................................................................ 6

.......................................................................................................... 6 .......................................................................................................... 7 .......................................................................................................... 7 ………………………………………………………………………..8 4.5源程序………………………………………………………………………...8 ………………………………………...………….....16

.................................................................................... 16 ................................ 16 4.6.3 运用循环轮转调度算法的执行结果(如下图)............................ 19

五.设计总结................................................................................................................. 21 六.参考文献................................................................................................................. 21

——4——

一.设计目的

通过这次课程设计,加深理解有关进程控制块、进程队列的概念,并体会和了解优先数和循环轮转调度算法的具体实施办法。培养程序设计的方法和技巧,提高编制清晰、合理、可读性好的系统程序的能力,同时加深对操作系统课程的理解。

二.设计内容

1.用语言来实现对n个进程采用不同调度算法的进程调度。

2.每个用来标识进程的进程控制块PCB用结构来描述,包括以下字段: (1)进程优先数ID,其中0为闲逛进程,用户进程的标识数为1,2,3…。 (2)进程优先级Priority,闲逛进程(idle)的优先级为0,用户进程的

优先级大于0,且随机产生,优先数越大,优先级越高。

(3)进程占用的CPU时间CPUtime,进程每运行一次,累计值等于4。 (4)进程总共需要运行时间Alltime,利用随机函数产生。 (5)进程状态,0:就绪态;1:运行态;2:阻塞态。

(6)队列指针next,用来将多个进程控制块PCB链接为队列。 3.优先数改变的原则

(1)进程在就绪队列中每呆一个时间片,优先数增加1。 (2)进程每运行一个时间片,优先数减3。

4.在调度前,系统中拥有的进程数PCB_number由键盘输入,经初始化后,

所有的进程控制块PCB链接成就绪队列。

三.设计原理

3.1 优先数调度算法

对每个进程确定一个优先数,该算法总是让优先数最高的进程先使用处理器。对具有相同优先数的进程,再来采用先来先服务的次序分配处理器。系统常与任务的紧迫性和系统效率等因素确定进程的优先数。进程的优先数可以固定的,也可随进程执行过程动态变化。一个高优先数进程占用处理器后,系统处理该进程时有两种算法,一是“非抢占式”,另一种是“可抢占式”。前者是次进程占用处理器后一直运行到结束,除非本身主动让出处理器;后者则是严格保证在任何时刻总是让优先数最高的进程在处理器上运行。

3.2 循环轮转调度算法

——5——

循环轮转调度算法的具体原理是:每个进程被分配一个时间片,即该进程允许运行的时间。就绪的进程都存放在一个就绪链表中,队首的进程将获得时间片。如果在时间片结束时进程还在运行,则CPU将剥夺并分配给下一个进程。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。

四.设计步骤

4.1 任务分析

(1)PCB结构通常包括以下信息:进程名,进程优先数,轮转时间片,进程已占用的CPU时间,进程还需要的CPU时间,进程的状态,当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删

(2)本程序用两种算法对五个进程进行调度,每个进程可有三个状态:就绪、执行、完成。并假设初始状态为就绪状态。

(3)为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户给定。

(4)在优先数算法中,优先数可以先取值为一个常数减去进程所需要的时间片数目,进程每执行一次,优先数减3,CPU时间片数加1,进程还需要的时间片数减1。在轮转算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了2个单位),这时,CPU时间片数加2,进程还需要的时间片数减2,并排列到就绪队列的尾上。

(5)对于遇到优先数一致的情况,采用FIFO策略解决。

4.2 概要设计

1.本程序用两种算法对五个进程进行调度,每个进程可有三个状态,并假设初始状态为就绪状态。

2.为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户给定。

3.在优先数算法中,优先数的值为50与运行时间的差值,即P_TIME-process->needtime。进程每执行一次,优先数减3,CPU时间片数加1,进程还需要的时间片数减1。在轮转算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了2个单位),这时,CPU时间片数加2,进程还需要的时间片数减2,并排列到就绪队列的尾上。

4.对于遇到优先数一致的情况,采用FIFO策略解决。

4.3 详细设计

1.struct pcb() 定义pcb块

2.Void display() 显示结果信息函数

——6——

3.int process_finish(pcb *q) 进程完成标示

4.void display_round() 显示循环轮转调度算法运行结果 5.priority_cal() 优先数调度算法

6.void cpu_round()处理器的工作状态

4.4 流程图

——7——

4.5 源程序

源程序如下: #include #include #include #include #include #define P_NUM 5 #define P_TIME 50 enum state{ ready, execute, block, finish };

struct pcb{ char name[4]; int priority; int cputime; int needtime; int count; int round; state process; pcb * next; };

pcb * get_process(); pcb * get_process(){ pcb *q;

——8——

pcb *t; pcb *p; int i=0;

cout

while (i

q=(struct pcb *)malloc(sizeof(pcb)); cin>>q->name; cin>>q->needtime; q->cputime=0;

q->priority=P_TIME-q->needtime; q->process=ready; q->next=NULL; if (i==0){ p=q; t=q; } else{

t->next=q; t=q; } i++; } //while return p; }

void display(pcb *p){

cout

——9——

"

coutname;

cout

coutcputime;

cout

coutneedtime;

cout

coutpriority;

cout

switch(p->process){

case ready:cout

case execute:cout

case block:cout

case finish:cout

}

p=p->next;

}

}

int process_finish(pcb *q){

int bl=1;

while(bl&&q){

bl=bl&&q->needtime==0;

q=q->next;

}

return bl;

}

void cpuexe(pcb *q){

pcb *t=q;

int tp=0;

——10——

while(q){

if (q->process!=finish){

q->process=ready;

if(q->needtime==0){

q->process=finish;

}

}

if(tppriority&&q->process!=finish){

tp=q->priority;

t=q;

}

q=q->next;

}

if(t->needtime!=0){

t->priority-=3;

t->needtime--;

t->process=execute;

t->cputime++;

}

}

void priority_cal(){

pcb * p;

p=get_process();

int cpu=0;

while(!process_finish(p)){

cpu++;

cout

cpuexe(p);

display(p);

——11——

}

printf("All processes have finished,press any key to exit"); getch();

}

void display_menu(){

cout

cout

cout

cout

}

pcb * get_process_round(){

pcb *q;

pcb *t;

pcb *p;

int i=0;

cout

while (i

q=(struct pcb *)malloc(sizeof(pcb));

cin>>q->name;

cin>>q->needtime;

q->cputime=0;

q->round=0;

q->count=0;

q->process=ready;

q->next=NULL;

if (i==0){

p=q;

t=q;

——12——

}

else{

t->next=q;

t=q;

}

i++;

} //while

return p;

}

void cpu_round(pcb *q){

q->cputime+=2;

q->needtime-=2;

if(q->needtime

q->needtime=0;

}

q->count++;

q->round++;

q->process=execute;

}

pcb * get_next(pcb * k,pcb * head){

pcb * t;

t=k;

do{

t=t->next;

}

while (t && t->process==finish);

——13——

if(t==NULL){

t=head;

while (t->next!=k && t->process==finish){ t=t->next;

}

}

return t;

}

void set_state(pcb *p){

while(p){

if (p->needtime==0){

p->process=finish;

}

if (p->process==execute){

p->process=ready;

}

p=p->next;

}

}

void display_round(pcb *p){

cout

coutname;

cout

coutcputime;

cout

coutneedtime;

——14——

"

cout

coutcount;

cout

coutround;

cout

switch(p->process){

case ready:cout

p=p->next;

}

}

void round_cal(){

pcb * p;

pcb * r;

p=get_process_round();

int cpu=0;

r=p;

while(!process_finish(p)){

cpu+=2;

cpu_round(r);

r=get_next(r,p);

cout

display_round(p);

set_state(p);

}

}

——15——

void main(){

display_menu();

int k;

scanf("%d",&k);

switch(k){

case 1:priority_cal();break; case 2:round_cal();break; case 3:break;

display_menu();

scanf("%d",&k);

}

}

4.6 程序测试数据及结果

4.6.1 程序测试数据

4.6.2 运用优先数调度算法的执行结果(如下图)

——16——

——17——

——18——

4.6.3 运用循环轮转调度算法的执行结果(如下图)

——19——

——20——

五.设计总结

经过这次课程设计,把课本中的理论知识转化为实践,在一定程度上加深了对优先级数调度和循环调度算法的理解,同时提高了我的动手编程能力。虽然在编程的过程中,遇到了很多的困难,但是经过我的努力,通过查参考书或者到网上搜索等途径,我所遇到的困难都被我一一的解决了。过程虽然很难,但是通过这次课程设计,结果还是让我受益匪浅。我始终相信:在前进的途中,所遇到的绊脚石,通过我的努力,它最终都会变成我脚下的垫脚石!

六.参考文献 《计算机操作系统》,汤小丹主编,西安电子科技大学出版社;

《C++语言基础教程》, 吕凤翥主编,清华大学出版社。

——21——


相关内容

  • 操作系统课程设计--进程调度算法
  • 计算机科学与应用系 操作系统原理 课程设计报告 题目 进程调度算法 学号 班级 姓名 专业 计算机科学与技术 指导教师 完成日期 进程调度算法 一.实验目的 通过优先权法与轮转调度算法的模拟加深对进程概念和进程调度过程的理解,掌握进程状态之间的切换,同时掌握进程调度算法的实现方法和技巧. 二.实验内 ...

  • 操作系统实习报告样本
  • 1 操作系统实习报告内容(1) 基本信息:完成人姓名、学号、报告日期(2) 实习内容(3) 实习目的(4) 实习题目(5) 设计思路和流程图(6) 主要数据结构及其说明(7) 源程序并附上注释(8) 程序运行时的初值和运行结果(9) 实习体会:实习中遇到的问题及解决过程、实习中产生的错误及原因分析、 ...

  • 进程调度算法课程设计报告
  • 函数原型: void firstin(void) 函数参数: void 函数返回值:void */ void firstin(void) { if(ready!=NULL) { run=ready; ready=ready->next; run->state='R'; run->n ...

  • 进程调度算法简介
  • 姓名:王思文 物电学院通信一班 学号:[**************]5 进程调度算法简介 进程调度算法就进程来分,分为三类:批处理.交互式.实时.下面将分别进行描述. 批处理系统 先到先服务 这种调度算法属于非抢占式,只有当前进程主动放弃处理器别的进程才会有机会运行.这个算法只有一个运行队列,一个 ...

  • 经典调度算法的实现
  • 经典调度算法的实现 学 号: 姓 名: 专 业: 指导教师: 日 期: 目录 一. 课设简介 . ....................................... 3 1. 课程设计题目 .................................. 3 2. 课程设计目的 .. ...

  • 短作业优先调度算法
  • 青岛理工大学 操作系统课程设计报告 院(系): 计算机工程学院 专业: 计算机科学与技术专业 学生姓名: 班级:__ 学号: 题目: 短作业优先调度算法的进程调度程序_ 起迄日期: ___ _ ____ 设计地点: 指 导 教 师: 2011-2012年度 第 1 学期 完成日期: 2012 年 1 ...

  • 广工操作系统2015实验报告
  • 实 验 报 告 课程名称操作系统实验 学生学院计算机学院 专业班级计算机科学与技术 学 号 学生姓名 指导教师 孙为军 2015 年12月30日 实验一 进程调度 一.实验目的 编写并调试一个模拟的进程调度程序,以加深对进程的概念及进程调度算法的理解. 二.实验内容 1. 采用"短进程优先 ...

  • Linux进程调度:CFS调度器的设计框架
  • 1. 概述 对于分时操作系统而言,表面上看起来是多个进程同时在执行,而在系统内部则进行着从一个进程到另一个进程的切换动作.这样的进程并发执行涉及到进程切换(process switch)和进程调度(process scheduling)两大问题.其中进程调度是操作系统的核心功能,它是一个非常复杂的过 ...

  • 磁盘移臂调度过程模拟设计-电梯算法,最短寻道时间优先
  • 课 程 设 计 题 目 学 院 专 业 班 级 姓 名 指导教师 磁盘移臂调度过程模拟设计 --电梯算法.最短寻道时间优先算法 计算机科学与技术学院 计算机科学与技术 2011 年 1 月 20 日 课程设计任务书 学生姓名: 专业班级: 计算机科学与技术班 指导教师: 工作单位: 计算机科学与技术 ...