版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖南工业职业技术学院湖南工业职业技术学院 操作系统实训报告操作系统实训报告 题目:题目:模拟操作系统五大功能模拟操作系统五大功能 专业:专业: 软件软件 实训老师:实训老师: 完成时间:完成时间: 2007-12-27 参与人员参与人员: 2 目目 录录 一,设计思想和算法说明一,设计思想和算法说明-3 1、 进程管理-3 2、 内存管理-3 3、 文件管理-3 4、 文件管理-4 5、 设备管理-5 二,总功能模块图二,总功能模块图-5 三,流程图三,流程图-6 cpu 管理:-6 内存管理: -6 文件管理: -7 4)设备管理:-7 5)作业管理:-8 四,使用说明四,使用说明-8 五,
2、程序清单五,程序清单-8 六,结果分析和调试六,结果分析和调试 -19 cpu 管理:-19 内存管理: -19 文件管理: -19 设备管理:-20 作业管理:-20 七,资料来源及参考书七,资料来源及参考书 -20 一,设计思想和算法说明一,设计思想和算法说明 1、 进程管理进程管理 进程调度算法有 fifo,优先数调度算法,时间片轮转调度算法,分级调度算法,目前主要 3 是考 fifo 和优先数调度算法(静态优先级) 。 输入输入:进程流文件”jincheng.txt” ,其中存储的是一系列要执行的进程, 每个作业包括五个数据项:每个作业包括五个数据项: 进程名 进程状态(1 就绪 2
3、等待 3 运行) 所需时间 优先数(0 级最高) 进程所占 cpu 的资 源数。 输出输出: : 进程执行流 和等待时间 平均等待时间 cpu 的使用率。 本程序包括本程序包括: :fifo,优先数调度算法,时间片轮转调度算法 2、 内存管理内存管理 内存调度算法有内存调度算法有:最先适应分配算法,最优适应分配算法,最坏适应算法 用户提出内存空间的申请;系统根据申请者的要求,按照一定的分配策略分析内存空间的 使用情况,找出能 满足请求的空闲区,分给申请者;当程序执行完毕或主动归还内存资源时,系统要收回它 所占用的内存空间 或它归还的部分内存空间。 1) 程序运行时首先接收输入:空闲区数据文件”
4、fqu.txt” ,包括若干行,每行有两个数 据项:起始地址、长度(均为整数) ,各数据项以逗号隔开。 2) 建立空闲区表并在屏幕上显示输出空闲区表内容,空闲区表中记录了内存中可供分配 的空闲区的始址和 长度,用标志位指出该分区是否是未分配的空闲区。 3 3) 从用户界面根据用户提示接收一个内存申请,格式为:作业名、申请空间的大小。 4) 按照最差(最坏)适配算法选择一个空闲区,分割并分配,修改相应的数据结构(空 闲区表) ,填写内 存已分配区表(起始地址、长度、标志位) ,其中标志位的一个作用是指出该区域分配给哪 个作业。 5) 重复 3) 、4) ,直到输入为特殊字符(0) 。 6) 在屏
5、幕上显示输出新的空闲区表和已分配区表的内容。 本程序包括本程序包括:fifo,最优适应分配算法,最坏适应算法 3、 文件管理文件管理 主要就是模拟操作系统中的 建立文件、打开文件、读文件、写文件、 、关闭文件、 、删除 文件、 、建立目录、 、 显示目录内容、显示文件内容、 、改变文件属性等操作。1 改变目录格式:cd目录名 功能:功能:工作目录转移到指定的目录下,只要求完成改变到当前目录的某一个子目录 下的功能,不要求实现相对目录以及绝对目录。 1 1)创建文件)创建文件 格式:create文件名 文件长度 功能:创立一个指定名字的新文件,即在目录中增加一项,不考虑文件内容,但必 须能输入文
6、件长度。 2 2)删除文件)删除文件 4 格式:del希望删除的文件名 功能:删除指定的文件 3 3)显示目录)显示目录 格式:lsall 功能:显示全部目录以及文件,输出时要求先输出接近根的目录,再输出子目录。 4 4)创建目录)创建目录 格式:md目录名 功能:在当前路径下创建指定的目录 5 5)删除目录)删除目录 格式:rd目录名 功能:删除当前目录下的指定目录,如果该目录为空,则可删除,否则应提示是否 作删除,删除操作将该目录下的全部文件和子目录都删除。 作业调度主要有 fifo,运算时间短的作业优先,优先数调度算法,响应比最高者优先调度 算法,均衡调度算法 4、 文件管理文件管理 1
7、 1)模拟作业调度算法)模拟作业调度算法 输入输入:作业流文件“zye.txt” ,其中存储的是一系列要执行的作业, 每个作业包括三个数据项: 作业号、作业进入系统的时间(用一整数表示,如 10:10,表示成 1010) 、估计执行时间 (单位分)优先级(0 级最高) 2 2)参数用空格隔开,下面是)参数用空格隔开,下面是 zye.txtzye.txt 文件里面存放的作业:文件里面存放的作业: 1 800 50 2 815 30 3 830 25 4 835 20 5 845 15 6 900 10 7 920 5 其中调度时刻为最后一个作业到达系统的时间! 输出作业号!进入内存的时间!每行输
8、出一个作业信息 本程序包括本程序包括:fifo,运算时间短的作业优先,优先数调度算法,响应比最高者优先调度算法 5、 设备管理设备管理 主要就是模拟操作系统中的设备分配,回收,显示三个功能。 定义四个设备类,设备总数量,空闲数量,分别是: input, 2 , 2 printer, 3, 3 disk, 4 , 4 tape 1, 1 分配一个设备,它的空闲数量就少一个,如果回收一个,它就加一个,如果全部分配出去, 5 你在申请的话,它就提示“占时无设备,请等待.” 。还加了一个输出设备表。 二,总功能模块图二,总功能模块图 模拟操作系统五大功能模拟操作系统五大功能 cpu 管理管理 内存管理
9、内存管理 文件管理文件管理 作业管理作业管理 设备管理设备管理 三,流程图三,流程图 cpu 管理:管理: 开始 打开文件 jincheng.txt 显示进程状态 结束 6 开始 选择 该变目录 创建文件 删除文件 显示目录 结束 创建目录 删除目录 输入 exit 内存管理:内存管理: 开始 选择 申请空间 撤销作业 显示 退出 打开文件 fqu.txt 结束 文件管理:文件管理: 否 是 7 4)设备管理:设备管理: 开始 选择 分配 回收 显示 退出 结束 5)作业管理:作业管理: 开始 打开文件 zye.txt 显示作业状态 结束 四,使用说明四,使用说明 1) 首先在 d 盘下建立三
10、张表,表名分别是:jincheng.txt,fqu.txt,zye.txt,它们分别存 放 cup 运行的进程,内存存储的作业,还有作业管理的作业。 (1)第一章表是进程信息表:为 jincheng.txt nameztaitimeyouxianzyuan a2505 b16010 . (2)第二章表内存分给作业表 fqu.txt addresslongztai 8 10032free . (3)第三章表作业分配表:zye.txt iddtimextimeyouxian 1800500 2815301 . 2)运行 cpu 管理首先要输入进程,所以首先输入 d 盘下的文件 jincheng.t
11、xt 文件。打开它,使数据进程 进入该系统里面运行。还有作业管理要输入 d 盘下的文件 zye.txt 文件。使作业数据进入系统里面,进行 计算。而内存管理侧是,系统一运行,它自动打开文件。使里面的数据读入系统里面来,不用输入文件。 另外文件管理就是自己在运行时,自己去创建和操作,修改。设备管理在程序里面以定义规定好,进行分 配和调用。 五,程序清单五,程序清单 #include#include #include#include #include#include #include#include #include#include #include#include /文件管理文件管理 / / *
12、目录和文件的结构定义目录和文件的结构定义* typedeftypedef structstruct filenodefilenode charchar name50;name50; /*/*目录或文件的名字目录或文件的名字*/*/ intint type;type; /*0/*0 代表目录,代表目录,1 1 代表普通文件代表普通文件*/*/ structstruct filenodefilenode *next;*next; /*/*指向下一个兄弟结点的指针指向下一个兄弟结点的指针*/*/ structstruct filenodefilenode *sub;*sub; /*/*指向第一个子结
13、点的指针指向第一个子结点的指针*/*/ structstruct filenodefilenode *father;*father; /*/*指向父结点的指针指向父结点的指针*/*/ charchar size10;size10; /*/*如果是文件则表示文件的大小如果是文件则表示文件的大小*/*/ dirfilenode;dirfilenode; dirfilenodedirfilenode *workdir;*workdir; /定义当前工作目录定义当前工作目录 dirfilenodedirfilenode root;root; /定义根目录定义根目录 charchar path100;p
14、ath100; /定义路径信息定义路径信息 /初始化函数初始化函数 voidvoid initial3()initial3() strcpy(,root);strcpy(,root); root.type=0;root.type=0; root.next=null;root.next=null; root.sub=null;root.sub=null; root.father=null;root.father=null; strcpy(root.size,strcpy(root.size,文档文档);); workdir=workdir= strcpy(pa
15、th,root);strcpy(path,root); /初始化新结点函数初始化新结点函数 dirfilenodedirfilenode *init5()*init5() dirfilenodedirfilenode *p;*p; p=newp=new dirfilenode;dirfilenode; strcpy(,);strcpy(,); root.type=0;root.type=0; root.next=null;root.next=null; root.sub=null;root.sub=null; root.father=null;root.fa
16、ther=null; strcpy(root.size,strcpy(root.size,存档存档);); returnreturn p;p; /1/1 改变目录改变目录 voidvoid cd(charcd(char dirname)dirname) dirfilenodedirfilenode *p;*p; intint flag=0;flag=0; p=workdir-sub;p=workdir-sub; if(p=null)if(p=null) coutcout错误错误,dirname,dirname子目录不存在子目录不存在 endl;type=0)if(p-type=0) if(!s
17、trcmp(p-name,dirname)if(!strcmp(p-name,dirname) flag=1;flag=1; break;break; p=p-next;p=p-next; if(flag=1)if(flag=1) workdir=p;workdir=p; strcat(path,strcat(path, );); strcat(path,p-name);strcat(path,p-name); coutcout工作目录已进入工作目录已进入dirnameendl;dirnameendl; elsecoutelsecout错误错误,dirname,dirname子目录不存在子目录
18、不存在endl;name,filename);strcpy(q-name,filename); q-sub=null;q-sub=null; q-type=1;q-type=1; q-next=null;q-next=null; q-father=workdir;q-father=workdir; strcpy(q-size,filesize);strcpy(q-size,filesize); p=workdir-sub;p=workdir-sub; 9 if(p=null)if(p=null) workdir-sub=q;workdir-sub=q; coutfilenamecoutfile
19、name文件创建成功文件创建成功endl;type=1)if(p-type=1) if(!strcmp(p-name,filename)if(!strcmp(p-name,filename) flag=1;flag=1; coutcout错误错误,filename,filename文件已存在文件已存在 endl;next;p=p-next; if(flag=0)if(flag=0) p=workdir-sub;p=workdir-sub; while(p-next)p=p-next;while(p-next)p=p-next; p-next=q;p-next=q; coutfilenameco
20、utfilename文件创建成功文件创建成功endl;sub;p=workdir-sub; if(p=null)if(p=null) coutcout错误错误,filename,filename文件不存在文件不存在endl;type=1)if(p-type=1) if(!strcmp(p-name,filename)if(!strcmp(p-name,filename) flag=1;flag=1; break;break; p=p-next;p=p-next; if(flag=1)if(flag=1) if(p=workdir-sub)if(p=workdir-sub) workdir-su
21、b=p-next;workdir-sub=p-next; elseelse q=workdir-sub;q=workdir-sub; while(q-next!=p)while(q-next!=p) q=q-next;q=q-next; q-next=p-next;q-next=p-next; deletedelete p;p; coutfilenamecoutfilename文件已删除文件已删除endl;endl; elseelse coutcout错误错误,filename,filename文件不存在文件不存在 endl;type=0)if(p-type=0) cout.setf(2);c
22、out.setf(2); coutsetw(14)p-coutsetw(14)namesetw(12)namesetw(12)endl; elseelse cout.setf(2);cout.setf(2); coutsetw(14)p-coutsetw(14)namesetw(12)setw(10)sizenamesetw(12)setw(10)sizenext;p=p-next; voidvoid dirs(dirfilenodedirs(dirfilenode *p,char*p,char str)/str)/显示显示 charchar newstr100;newstr100; dirf
23、ilenodedirfilenode *q;*q; coutstrcoutstr下子目录及文件下子目录及文件:endl;:endl; coutcout名称名称 类型类型 属性属性endl;sub)if(q-sub) strcpy(newstr,);strcpy(newstr,); strcat(newstr,str);strcat(newstr,str); strcat(newstr,);strcat(newstr,); strcat(newstr,q-name);strcat(newstr,q-name); dirs(q-sub,newstr);dirs(q-sub,newstr); q=p
24、;q=p; while(q-next)while(q-next) if(q-next-sub)if(q-next-sub) strcpy(newstr,);strcpy(newstr,); strcat(newstr,str);strcat(newstr,str); strcat(newstr,strcat(newstr, );); strcat(newstr,q-next-name);strcat(newstr,q-next-name); dirs(q-next-sub,newstr);dirs(q-next-sub,newstr); q=q-next;q=q-next; / 显示所有目录显
25、示所有目录 voidvoid lsall()lsall() dirfilenodedirfilenode *p;*p; coutcout显示所有目录结构显示所有目录结构endl-endl- -endl;-name,dirname);strcpy(q-name,dirname); q-sub=null;q-sub=null; q-type=0;q-type=0; q-next=null;q-next=null; q-father=workdir;q-father=workdir; strcpy(q-size,strcpy(q-size, );); p=workdir-sub;p=workdir-
26、sub; if(p=null)if(p=null) 10 workdir-sub=q;workdir-sub=q; coutdirnamecoutdirname子目录创建成功子目录创建成功endl;type=0)if(p-type=0) if(!strcmp(p-name,dirname)if(!strcmp(p-name,dirname) flag=1;flag=1; coutcout错误错误,dirname,dirname子目录已子目录已 存在存在endl;next;p=p-next; if(flag=0)if(flag=0) p=workdir-sub;p=workdir-sub; wh
27、ile(p-next)while(p-next) p=p-next;p=p-next; p-next=q;p-next=q; coutdirnamecoutdirname子目录创建成功子目录创建成功endl;sub;p=workdir-sub; if(p=null)if(p=null) coutcout错误错误,dirname,dirname子目录不存在子目录不存在endl;type=0)if(p-type=0) if(!strcmp(p-name,dirname)if(!strcmp(p-name,dirname) flag=1;flag=1; break;break; p=p-next;p
28、=p-next; if(flag=1)if(flag=1) if(p=workdir-sub)if(p=workdir-sub) workdir-sub=p-next;workdir-sub=p-next; elseelse q=workdir-sub;q=workdir-sub; while(q-next!=p)while(q-next!=p) q=q-next;q=q-next; q-next=p-next;q-next=p-next; deletedelete p;p; coutdirnamecoutdirname子目录已删除子目录已删除endl;endl; elseelse coutc
29、out错误错误,dirname,dirname子目录不存在子目录不存在 endl;endl; voidvoid fun5()fun5() intint len,flag,comm;len,flag,comm; charchar string50,filesize10;string50,filesize10; charchar command10;command10; charchar name40;name40; charchar *s;*s; initial3();initial3(); flag=1;flag=1; while(flag)while(flag) coutcout endl;
30、endl; coutcout 模拟文件管理模拟系统模拟文件管理模拟系统 endl;endl; coutcout endl;endl; coutcout cdcd 改变目录改变目录 createcreate 创建文件创建文件 deldel 删删 除文件除文件endl;endl; coutcout lsalllsall 显示目录显示目录 mdmd 创建目录创建目录 rdrd 删删 除目录除目录 endl;endl; coutcout 设计者设计者: : pengyingyipengyingyi endl;endl; coutcout endl;#,path);printf(%s:#,path);
31、gets(string);gets(string); len=strlen(string);len=strlen(string); if(len=0)if(len=0) strcpy(command,errer);strcpy(command,errer); elseelse /获得命令获得命令 s=null;s=null; s=strchr(string,s=strchr(string, );); if(s!=null)if(s!=null) *s=0;*s=0; strcpy(command,string);strcpy(command,string); /测试命令类型测试命令类型 if(
32、!strcmp(command,cd)|!strcmp(command,cd)if(!strcmp(command,cd)|!strcmp(command,cd) comm=1;comm=1; elseelse if(!strcmp(command,create)|!strcmp(command,create)if(!strcmp(command,create)|!strcmp(command,create) comm=2;comm=2; elseelse if(!strcmp(command,del)|!strcmp(command,del)if(!strcmp(command,del)|!
33、strcmp(command,del) comm=3;comm=3; elseelse if(!strcmp(command,lsall)|!strcmp(command,lsall)if(!strcmp(command,lsall)|!strcmp(command,lsall) comm=4;comm=4; elseelse if(!strcmp(command,md)|!strcmp(command,md)if(!strcmp(command,md)|!strcmp(command,md) 11 comm=5;comm=5; elseelse if(!strcmp(command,rd)|
34、!strcmp(command,rd)if(!strcmp(command,rd)|!strcmp(command,rd) comm=6;comm=6; elseelse if(!strcmp(command,exit)|!strcmp(command,exit)if(!strcmp(command,exit)|!strcmp(command,exit) comm=0;comm=0; elseelse comm=100;comm=100; switch(comm)switch(comm) casecase 1:1: /1/1 改变目录改变目录 coutcoutname;cinname; cd(
35、name);cd(name); break;break; casecase 2:2: /2/2 创建文件创建文件 coutcoutnamefilesize;cinnamefilesize; create(name,filesize);create(name,filesize); break;break; casecase 3:3: /3/3 删除文件删除文件 /strcpy(name,s+1);/strcpy(name,s+1); coutcoutname;cinname; del(name);del(name); break;break; casecase 4:4: /4/4 显示目录显示目
36、录 lsall();lsall(); break;break; casecase 5:5: /5/5 创建目录创建目录 coutcoutname;cinname; md(name);md(name); break;break; casecase 6:6: /6/6 删除目录删除目录 coutcoutname;cinname; rd(name);rd(name); break;break; casecase 0:0: /0/0 退出系统退出系统 flag=0;flag=0; break;break; default:default: coutcout命令错误命令错误endl;endl; /文件管
37、理文件管理 / /作业管理作业管理 / constconst intint maxjob1=50;maxjob1=50; /定义最大作业定义最大作业 /定义数据结构体定义数据结构体 typedeftypedef structstruct node2node2 intint number;number; intint reach_time;reach_time; intint reach_hour;reach_hour; intint reach_minite;reach_minite; intint need_time;need_time; intint privilege;privilege
38、; floatfloat excellent;excellent; intint start_time;start_time; intint wait_time;wait_time; intint visited;visited; job1;job1; job1job1 jobsmaxjob1;jobsmaxjob1; intint quantity;quantity; /初始化函数初始化函数 voidvoid initial2()initial2() intint i;i; for(i=0;imaxjob1;i+)for(i=0;imaxjob1;i+) jobsi.number=0;job
39、si.number=0; jobsi.reach_time=0;jobsi.reach_time=0; jobsi.reach_hour=0;jobsi.reach_hour=0; jobsi.reach_minite=0;jobsi.reach_minite=0; jobsi.privilege=0;jobsi.privilege=0; jobsi.excellent=0;jobsi.excellent=0; jobsi.start_time=0;jobsi.start_time=0; jobsi.wait_time=0;jobsi.wait_time=0; jobsi.visited=0;
40、jobsi.visited=0; quantity=0;quantity=0; /重置作业数据函数重置作业数据函数 voidvoid reset()reset() intint i;i; for(i=0;imaxjob1;i+)for(i=0;imaxjob1;i+) jobsi.start_time=0;jobsi.start_time=0; jobsi.wait_time=0;jobsi.wait_time=0; jobsi.visited=0;jobsi.visited=0; /读入作业数据函数读入作业数据函数 voidvoid readdata2()readdata2() filefi
41、le *fp;*fp; charchar fname20;fname20; intint i;i; coutcoutfname;cinfname; if(fp=fopen(d:zye.txt,r)=null)if(fp=fopen(d:zye.txt,r)=null) coutcout错误错误, ,文件打不开文件打不开, ,请检查文件名请检查文件名:)endl;:)endl; elseelse while(!feof(fp)while(!feof(fp) fscanf(fp,%dfscanf(fp,%d %d%d %d%d %d,quantity.need_time, 12 jobsquant
42、ity.reach_hour=jobsquantity.reach_time/100;jobsquantity.reach_hour=jobsquantity.reach_time/100; jobsquantity.reach_minite=jobsquantity.reach_time%100;jobsquantity.reach_minite=jobsquantity.reach_time%100; quantity+;quantity+; /输出初始作业数据输出初始作业数据 coutcout输出初始作业数据输出初始作业数据endl;endl; cout-cout- -endl;-end
43、l; cout.setf(2);cout.setf(2); coutsetw(10)coutsetw(10)作业号作业号setw(12)setw(12)到达时间到达时间 setw(14)setw(14) 所需时间所需时间( (分分)setw(14)setw(14)1)1)endl; for(i=0;iquantity;i+)for(i=0;iquantity;i+) coutsetw(10)jobsi.numbersetw(12)jobsi.reach_timecoutsetw(10)jobsi.numbersetw(12)jobsi.reach_time setw(14)jobsi.need
44、_timesetw(14)jobsi.privilegesetw(14)jobsi.need_timesetw(14)jobsi.privilege endl;endl; /fifo/fifo 算法算法 voidvoid fifo1()fifo1() intint i;i; intint current_hour;current_hour; intint current_minute;current_minute; intint total_time=0;total_time=0; /输出作业流输出作业流 coutendl;coutendl; coutendlfifocoutendlfifo
45、算法作业流算法作业流endl;endl; cout-cout- -endl;-endl; cout.setf(2);cout.setf(2); coutsetw(10)coutsetw(10)作业号作业号setw(12)setw(12)到达时间到达时间setw(12)setw(12) 开始时间开始时间setw(14)setw(14)周转时间周转时间( (分分)endl;)endl; current_hour=jobs0.reach_hour;current_hour=jobs0.reach_hour; current_minute=jobs0.reach_minite;current_minu
46、te=jobs0.reach_minite; for(i=0;iquantity;i+)for(i=0;iquantity;i+) jobsi.start_time=current_hour*100+current_minute;jobsi.start_time=current_hour*100+current_minute; jobsi.wait_time=(current_hour-jobsi.wait_time=(current_hour- jobsi.reach_hour)*60+(current_minute-jobsi.reach_hour)*60+(current_minute-
47、 jobsi.reach_minite)+jobsi.need_time;jobsi.reach_minite)+jobsi.need_time; coutsetw(10)jobsi.numbersetw(12)jobsi.reach_timecoutsetw(10)jobsi.numbersetw(12)jobsi.reach_time setw(12)jobsi.start_timesetw(14)jobsi.wait_timesetw(12)jobsi.start_timesetw(14)jobsi.wait_time endl;endl; current_hour=current_ho
48、ur+(jobsi.need_time+current_minute)current_hour=current_hour+(jobsi.need_time+current_minute) /60;/60; current_minute=(jobsi.need_time+current_minute)%60;current_minute=(jobsi.need_time+current_minute)%60; total_time+=jobsi.wait_time;total_time+=jobsi.wait_time; coutendlcoutendl总周转时间总周转时间:total_time
49、:total_time 平均周转时间平均周转时间: : total_time/quantityendl;total_time/quantityendl; /运算时间短的作业优先算法运算时间短的作业优先算法 voidvoid shorter()shorter() intint i,j,p;i,j,p; intint current_hour;current_hour; intint current_minute;current_minute; intint current_need_time;current_need_time; intint total_time=0;total_time=0;
50、 /输出作业流输出作业流 coutendl;coutendl; coutendlcoutendl时间短作业优先算法作业流时间短作业优先算法作业流( (开始调度时刻为最开始调度时刻为最 后一个作业到达系统的时间后一个作业到达系统的时间)endl;)endl; cout-cout- -endl;-endl; cout.setf(2);cout.setf(2); coutsetw(10)coutsetw(10)作业号作业号setw(12)setw(12)到达时间到达时间setw(14)setw(14) 所需时间所需时间( (分分)setw(12)setw(12)开始时间开始时间setw(14)set
51、w(14) 周转时间周转时间 ( (分分)endl;)endl; current_hour=jobsquantity-1.reach_hour;current_hour=jobsquantity-1.reach_hour; current_minute=jobsquantity-1.reach_minite;current_minute=jobsquantity-1.reach_minite; for(i=0;iquantity;i+)for(i=0;iquantity;i+) current_need_time=30000;current_need_time=30000; for(j=0;j
52、quantity;j+)for(j=0;jquantity;j+) if(jobsj.visited=0)p=j; current_need_time=jobsj.need_time;current_need_time=jobsj.need_time; jobsp.start_time=current_hour*100+current_minute;jobsp.start_time=current_hour*100+current_minute; jobsp.wait_time=(current_hour-jobsp.wait_time=(current_hour- jobsp.reach_h
53、our)*60+(current_minute-jobsp.reach_hour)*60+(current_minute- jobsp.reach_minite)+jobsp.need_time;jobsp.reach_minite)+jobsp.need_time; coutsetw(10)jobsp.numbersetw(12)jobsp.reach_timecoutsetw(10)jobsp.numbersetw(12)jobsp.reach_time setw(14)jobsp.need_timesetw(12)jobsp.start_timesetw(14)jobsp.need_ti
54、mesetw(12)jobsp.start_time setw(14)jobsp.wait_timeendl;setw(14)jobsp.wait_timeendl; current_hour=current_hour+(jobsp.need_time+current_minute)current_hour=current_hour+(jobsp.need_time+current_minute) /60;/60; current_minute=(jobsp.need_time+current_minute)%60;current_minute=(jobsp.need_time+current
55、_minute)%60; jobsp.visited=1;jobsp.visited=1; total_time+=jobsp.wait_time;total_time+=jobsp.wait_time; coutendlcoutendl总周转时间总周转时间:total_time:total_time 平均周转时间平均周转时间: : total_time/quantityendl;total_time/quantityendl; /优先数调度算法优先数调度算法 voidvoid privilege()privilege() intint i,j,p;i,j,p; intint current_
56、hour;current_hour; intint current_minute;current_minute; intint current_privilege;current_privilege; intint total_time=0;total_time=0; /输出作业流输出作业流 coutendl;coutendl; coutendlcoutendl优先数调度算法作业流优先数调度算法作业流( (开始调度时刻为最后一开始调度时刻为最后一 个作业到达系统的时间个作业到达系统的时间)endl;)endl; cout-cout- -endl;-endl; cout.setf(2);cout
57、.setf(2); coutsetw(10)coutsetw(10)作业号作业号setw(12)setw(12)到达时间到达时间setw(14)setw(14) 1)setw(12)1)setw(12)开始时间开始时间setw(14)setw(14)周转时间周转时间 ( (分分)endl;)endl; current_hour=jobsquantity-1.reach_hour;current_hour=jobsquantity-1.reach_hour; current_minute=jobsquantity-1.reach_minite;current_minute=jobsquantit
58、y-1.reach_minite; for(i=0;iquantity;i+)for(i=0;iquantity;i+) current_privilege=30000;current_privilege=30000; for(j=0;jquantity;j+)for(j=0;jquantity;j+) if(jobsj.visited=0)p=j; current_privilege=jobsj.privilege;current_privilege=jobsj.privilege; jobsp.start_time=current_hour*100+current_minute;jobsp
59、.start_time=current_hour*100+current_minute; jobsp.wait_time=(current_hour-jobsp.wait_time=(current_hour- jobsp.reach_hour)*60+(current_minute-jobsp.reach_hour)*60+(current_minute- jobsp.reach_minite)+jobsp.need_time;jobsp.reach_minite)+jobsp.need_time; coutsetw(10)jobsp.numbersetw(12)jobsp.reach_ti
60、mecoutsetw(10)jobsp.numbersetw(12)jobsp.reach_time setw(14)jobsp.privilegesetw(12)jobsp.start_timesetw(14)jobsp.privilegesetw(12)jobsp.start_time setw(14)jobsp.wait_timeendl;setw(14)jobsp.wait_timeendl; current_hour=current_hour+(jobsp.need_time+current_minute)current_hour=current_hour+(jobsp.need_t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 靶向治疗注意事项
- 证券估价课件教学课件
- 药剂科应急演练
- 慢性哮喘病人护理查房
- 积分奖励课件教学课件
- 第三章3.2金属材料课件-高一化学人教版2019必修第一册
- 骨科护士课件教学课件
- 吉林省2024七年级数学上册第2章整式及其加减全章整合与提升课件新版华东师大版
- 检修安全措施及注意事项
- 早幼粒细胞白血病
- 孕期焦虑测评
- 光伏电站施工组织设计
- 全人教版四年级英语上册期中考试知识点汇总-必背的重点
- XMT-7000温控仪使用说明书
- 2023年1月高三英语试题(浙江卷)+听力+答案+作文
- 汉字听写大赛汇总成语
- 主要动物疫病检疫-共患病检疫(动物防疫与检疫技术)
- 体位引流课件
- 媒介伦理及规范案例教学演示文稿
- 混凝土有限公司安全管理工作责任追究制度
- 人教版三年级数学上册“倍的认识”作业设计
评论
0/150
提交评论