操作系统。实。验。
报。告。
学院:计算机科学与技术学院。
班级:计091
学号:0913022032
姓名:曹恒楼。
时间:2011/1/3
1.主界面3
2.设计说明3
3.子功能详细设计5
3.1 作业调度算法5
3.2 银行家算法13
3.3 页面调度算法20
3.4 驱动调度算法30
4.附录(算法源**38
设计内容:将四次实验的内容整合起来,封装成一个可执行文件。
使用说明:须将整个文件直接放在d盘下,不可放在其他盘符,不可放在d盘子文件夹下。
利用mfc完成,每次选择一项完成,若没有,则可选择关闭退出。每一个子功能都是前面的算法,没有作多少补充。
功能一:作业调度算法。
一、实验名称:
用c++实现作业调度算法。
二、实验目的:
通过自己编程来实现各个调度算法,进一步理解进程调度各种算法的概念及含义,提高对算法的认识,同时提高自己的动手实践能力。
三、实验内容:
利用c++,实现进程调度算法,有先来先服务、优先级调度、短作业优先、响应比高优先,这四个算法。
四、实验要求:
1.至少完成三个进程调度算法的设计。
2.分别计算出算法实现的平均作业周转时间、平均带权作业周转时间。
五、实验环境:
win-7系统。
visual c++ 6.0
六、实验设计:
1.数据结构设计。
定义结构体:(对不同算法,均按此结构定义)
struct task_struct定义结构体
char name[10进程名称。
float come_time到达时间。
float run_begin_time; /开始运行时间。
float run_time运行时间。
float run_end_time; /运行结束时间。
int priority优先级。
int order运行次序。
int run_flag调度标志。
2.算法设计。
1)fcfs算法。
先来先服务,利用冒泡排序,按照进程到达时间进行排序。
void bubble(float aa,int counter用来对fcfs采用冒泡排序。
float t;
for(int a=1;a for(int b=0;b
计算周转时间。
int fcfs() 先来先服务。
float time_temp=0临时时间。
float *aa=new float[counter为冒泡排序的实现,创建一个新的数组。
int i;
int number_schedul;
time_temp=tasks[0].come_time;
for(int c=0;c
bubble(aa, counter调用冒泡函数进行排序。
for(int d=0;d for(int e=0;e
for(i=0;i
return 0;
2)sjf算法。
int sjf() 短作业优先。
float temp_time=0;
int i=0,j;
int number_schedul,temp_counter;
float run_time;
run_time=tasks[i].run_time初始化运行时间。
j=1;while ((j
j++;查找第一个被调度的进程。
//对第一个被调度的进程求相应的参数。
number_schedul=i;
tasks[number_schedul].run_begin_time=tasks[number_schedul].come_time;
tasks[number_schedul].run_end_time=tasks[number_schedul].run_begin_time+tasks[number_schedul].
run_time;
tasks[number_schedul].run_flag=1;
temp_time=tasks[number_schedul].run_end_time;
tasks[number_schedul].order=1;
temp_counter=1;
while (temp_counter
for(j=0;j
if((tasks[j].come_time<=temp_time)&&tasks[j].run_flag))
if(tasks[j].run_time
run_time=tasks[j].run_time;
number_schedul=j;
查找下一个被调度的进程。
对找到的下一个被调度的进程求相应的参数。
tasks[number_schedul].run_begin_time=temp_time;
tasks[number_schedul].run_end_time=tasks[number_schedul].run_begin_time+tasks[number_schedul].
run_time;
tasks[number_schedul].run_flag=1;
temp_time=tasks[number_schedul].run_end_time;
temp_counter++;对找到的下一个被调度的进程求相应的参数。
tasks[number_schedul].order=temp_counter;
return 0;
3)hrrn算法。
int hrrn() 响应比高优先。
int j,number_schedul,temp_counter;
float temp_time,respond_rate,max_respond_rate;
//第一个进程被调度。
tasks[0].run_begin_time=tasks[0].come_time;
tasks[0].run_end_time=tasks[0].run_begin_time+tasks[0].run_time;
temp_time=tasks[0].run_end_time;
tasks[0].run_flag=1;
tasks[0].order=1;
temp_counter=1;
//调度其他进程。
while(temp_counter {
max_respond_rate=0;
for(j=1;j {
if((tasks[j].come_time<=temp_time)&&tasks[j].run_flag))
respond_rate=(temp_time-tasks[j].come_time)/tasks[j].run_time;
if (respond_rate>max_respond_rate)
max_respond_rate=respond_rate;
number_schedul=j;
找响应比高的进程。
tasks[number_schedul].run_begin_time=temp_time;
tasks[number_schedul].run_end_time=tasks[number_schedul].run_begin_time+tasks[number_schedul].
run_time;
temp_time=tasks[number_schedul].run_end_time;
tasks[number_schedul].run_flag=1;
操作系统课程设计报告
西安郵電大學。院系名称 计算机学院。专业名称 软件工程。班级 1104 学生姓名 赵大伟。学号 8位 04113124 指导教师 舒新峰。设计起止时间 2013.11.10 2013.11.20 1 通过观察 分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在posix 规范中...
操作系统课程设计报告
课程设计。课程名称操作系统。题目名称多级文件系统 2 学生学院计算机学院 专业班级。学号。学生姓名。指导教师。年月日。目录。一 课程设计 6 二 开发工具及环境 6 三 设计内容 6 四 结构图 8 五 部分 9 六 运行截图 11 七 参考文献 15 八 心得体会 15 本课程设计要求设计一个模拟...
操作系统课程设计报告
实验一进程管理。一 实验目的。1 开发一个函数,建立进程控制块和资源控制块结构,并实现相关数据结构的初始化。2 开发一系列操作,由进程调用这些操作,达到控制进程申请或释放各种资源的目的。通过实验理解进程的概念,进程的组成 pcb结构 进程的并发执行和操作系统进行进程管理的相关原语 主要是进程的创建 ...