![殷晓波2013122834_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/77c33b22-e5e8-4621-a77b-7dd2f4e40739/77c33b22-e5e8-4621-a77b-7dd2f4e407391.gif)
![殷晓波2013122834_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/77c33b22-e5e8-4621-a77b-7dd2f4e40739/77c33b22-e5e8-4621-a77b-7dd2f4e407392.gif)
![殷晓波2013122834_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/77c33b22-e5e8-4621-a77b-7dd2f4e40739/77c33b22-e5e8-4621-a77b-7dd2f4e407393.gif)
![殷晓波2013122834_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/77c33b22-e5e8-4621-a77b-7dd2f4e40739/77c33b22-e5e8-4621-a77b-7dd2f4e407394.gif)
![殷晓波2013122834_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/77c33b22-e5e8-4621-a77b-7dd2f4e40739/77c33b22-e5e8-4621-a77b-7dd2f4e407395.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、淮海工学院计算机工程学院实验报告书课程名: 操作系统原理A 题 目: 进程调度 班 级: 网络132 学 号: 2013122834 姓 名: 殷晓波 评语:成绩: 指导教师: 批阅时间: 年 月 日 操作系统原理A实验报告 - 10 -1、 目的与要求进程是操作系统最重要的概念之一,进程调度是操作系统内核的重要功能,本实验要求用Java或C/C+语言编写一个进程调度模拟程序,至少使用先来先服务、短进程优先、最高优先权优先或时间片轮转法四种算法中的两种算法来实现进程调度。通过本实验可加深对进程调度算法的理解。实验环境Turbo C 2.0/3.0或VC+6.0或Java语言2、 实验内容1、设
2、计有5个进程并发执行的模拟调度程序,每个程序由一个PCB表示。2、模拟调度程序至少使用先来先服务、短进程优先、最高优先权优先或时间片轮转法四种算法中的两种算法来实现进程调度。3、程序执行中应能在屏幕上显示出各进程的状态变化,以便于观察调度的整个过程。3、 实验步骤1、 理解本实验中有关调度算法的说明。2、 根据调度算法的说明,画出相应的程序流程图。3、 按照程序流程图,用Java/C/C+语言编程并实现。N开始初始化PCB输入进程信息各进程按先来先服务的顺序进入就绪队列就绪队列空?运行运行进程需要CPU时间撤销进程结束流程图:先来先服务时间片轮转:N开始初始化PCB输入进程信息各进程按顺序进入
3、就绪队列就绪队列空?就绪队列第一个投入运行时间片到,计数器+1,占用时间+1,所需时间+1结束达到所需运行时间进程完成,撤销该进程插入到就绪队列尾部已达到未达到四、测试数据与实验结果(可以抓图粘贴)主界面:先来先服务:输入信息:结果:时间片:结果:五、结果分析与实验体会附源代码#include<stdio.h> #include<string.h> #include<stdlib.h> / 这是先来先服务的程序 struct fcfs/定义先来先服务结构体、参数char name10;float daodatime;/到达时间float fuwutime;/
4、服务时间float kaishitime;/开始时间float wanchengtime;/完成时间float zhouztime;/周转时间float daiquantime;/带权周转时间;fcfs a100;void input(fcfs *p,int N) /构造一个输入进程的信息的函数,定义结构体指针 int i; for(i=0;i<=N-1;i+) printf("输入第%d个进程的名字、到达时间、服务时间:n",i+1); scanf("%s%f%f",&,&pi.daodatime,&pi.f
5、uwutime);/把输入的信息保存到结构体指针所对应的内存中 /构造一个输出函数void Print(fcfs *p,float daodatime,float fuwutime,float kaishitime,float wanchengtime,float zhouztime,float daiquantime,int N)int k;freopen("file.txt","w",stdout); printf("执行顺序:n"); printf("%s",); for(k=1;k<N;
6、k+)printf("->%s",); printf("n进程的相关信息如下:n"); printf("n名字t到达t服务t开始t完成t周转t带权周转n"); for(k=0;k<=N-1;k+) printf("%st%-.2ft%-.2ft%-.2ft%-.2ft%-.2ft%-.2ftn",,pk.daodatime,pk.fuwutime,pk.kaishitime,pk.wanchengtime,pk.zhouztime,pk.daiquantime); /题目中加
7、入-.2是保留双精度的两位。一般f默认保留六位小数的。 freopen("CON","w",stdout); void sort(fcfs *p,int N)/进程根据到达时间进行排序 for(int i=0;i<=N-1;i+) for(int j=0;j<=i;j+) if(pi.daodatime<pj.daodatime)/如果i的时间到达时间小于j的到达时间,就交换 fcfs temp;/在结构体中定义第三个变量进行交换 temp=pi; pi=pj; pj=temp; /核心的运行阶段void deal(fcfs *p, f
8、loat daodatime,float fuwutime,float kaishitime,float wanchengtime,float zhouztime,float daiquantime,int N) int k; for(k=0;k<=N-1;k+) if(k=0)/K=0,表示第一个进程到达 pk.kaishitime=pk.daodatime;/那么开始时间=到达时间 pk.wanchengtime=pk.daodatime+pk.fuwutime;/完成时间=到达时间+服务时间 else pk.kaishitime=pk-1.wanchengtime;/下一个进程的开
9、始时间=上一个进程的完成时间 pk.wanchengtime=pk-1.wanchengtime+pk.fuwutime;/完成时间=上一个进程的完成时间+服务时间 for(k=0;k<=N-1;k+)/计算周转时间和带权周转时间 pk.zhouztime=pk.wanchengtime-pk.daodatime;/周转时间=完成时间-到达时间 pk.daiquantime=pk.zhouztime/pk.fuwutime;/带权周转时间=周转时间/服务时间 void FCFS(fcfs *p,int N)/定义先来先服务函数 float daodatime=0,fuwutime=0,k
10、aishitime=0,wanchengtime=0,zhouztime=0,daiquantime=0;/初始化变量为0 sort(p,N);/声明排序函数 deal(p,daodatime,fuwutime,kaishitime,wanchengtime,zhouztime,daiquantime,N);/声明运行函数 Print(p,daodatime,fuwutime,kaishitime,wanchengtime,zhouztime,daiquantime,N); /声明输出函数/这是算法时间片轮转法的代码struct shijian /定义时间片的结构体char name; /定义
11、进程名 int daodatime;/ 到达时间 int fuwutime; /服务时间 int shengyutime;/剩余时间char *state;/所处状态struct shijian *next;struct shijian *time()int a,i;struct shijian *head, *rear,*p,*q,*t;/定义队首、队尾、P是队尾指针、Q是队首指针和执行时间head=rear=NULL;/初始化队首和队尾为空 printf("请输入进程数目:"); scanf("%d",&a); for(i=0;i<a;
12、i+)p=(struct shijian*)malloc(sizeof(struct shijian); /初始化一个空间给进程进入printf("输入第%d个进程的名字、到达时间、服务时间:n",i+1); scanf("%s%d%d",&p->name,&p->daodatime,&p->fuwutime); p->shengyutime=p->fuwutime; p->state="就绪" if(rear=NULL) /当输入结束时,把P的数据放到队首,以便执行下一步h
13、ead=p; p->next=NULL; rear=p; else /否则执行时间就为空,队首变成Qt=NULL; q=head;while(q&&q->daodatime<p->daodatime)/当Q和Q的到达时间小于P的到达时间时,把执行时间给Qt=q; q=q->next;if(q=head) /而当Q是队首时,则下一个队首变成P,以便每个进程都能够得到时间片p->next=head; head=p;else if(t=rear) /当执行时间片到达队尾时(执行完时),返回给队首Prear->next=p; p->nex
14、t=NULL; rear=p;else /否则给队首P占用执行时间,P执行完后到Qt->next=p; p->next=q; return head;/返回队首void output(struct shijian *head)/定义输出函数struct shijian *p,*t,*r; int num; printf("请输入时间片:"); scanf("%d",&num);while(head!=NULL) /当队首不为空时,把P给队首r=p=head;while(p!=NULL) /把执行时间给队首t=head; p->s
15、hengyutime=p->shengyutime-num; /P的剩余时间=剩余时间-时间片 p->state="运行" /状态变成运行态 if(p->shengyutime<0) /当P运行完,即剩余时间小于0时,仍然把它当做0处理 p->shengyutime=0;freopen("file.txt","w",stdout); printf("n*程序开始运行*n"); printf("进程 到达时间 服务时间 剩余时间 当前状态n");while(t!=NU
16、LL) /时间不为空时,输出当前进程的信息,并把时间片交给下一个进程printf("%2c%8d%8d%14d%10sn",t->name,t->daodatime,t->fuwutime,t->shengyutime,t->state); t=t->next;freopen("CON","w",stdout);getchar(); /按住回车键观看if(p->shengyutime=0)/当队首的剩余时间为0时,先把队首改成P的下一个,然后释放内存,删除队首节点if(p=head)head=
17、p->next; free(p); p=head;else /否则返回执行,把队尾的下一个指针变成P的下一个指针,队尾的位置移动到队首r->next=p->next; p=r->next; r=p; else /否则把队首的位置给队尾,把队首的状态显示为“就绪”状态r=p;p->state="就绪" p=p->next; void main() int N; int number; char Tishikuang;/提示框 do printf(" *n");printf(" * 【进程调度算法】 *n&quo
18、t;);printf(" *n"); printf(" * 输入 1先来先服务 *n"); printf(" * 输入 2时间片轮转法 *n"); printf(" * 输入 0退出该程序 *n"); printf(" *n"); printf("n提示:请根据自己的需求选择相应的操作数:n"); scanf("%d",&number);/*提示输入字母,用switch语句存入到case中,最后增加提示框是否继续*/ switch(number) case 0: break; case 1: printf("n您选择的是“先来先服务项目”nn"); printf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现代办公室空间的灵活性与可变性设计
- 现代物流人才培养与教育创新
- 学校记者团国庆节活动方案
- 现代企业的办公自动化与多维度管理培训体系构建研究
- 现代企业家的自我管理与时间管理策略
- 现代汽车制造工艺的变革与教育新模式
- 现代企业决策中的核心能力体现
- 国庆节主题活动方案早教
- 2023三年级数学下册 四 绿色生态园-解决问题第3课时说课稿 青岛版六三制001
- 2024-2025学年高中历史 专题八 当今世界经济的全球化趋势 二 当今世界经济的全球化趋势(3)教学说课稿 人民版必修2
- 2024年长沙市中考数学真题试卷及答案
- 2024年贵州省中考理科综合试卷(含答案)
- 无人机技术与遥感
- 燃煤电厂超低排放烟气治理工程技术规范(HJ 2053-2018)
- TSG-T7001-2023电梯监督检验和定期检验规则宣贯解读
- 冠脉介入进修汇报
- 护理病例讨论制度课件
- 养阴清肺膏的临床应用研究
- 恩施自治州建始东升煤矿有限责任公司东升煤矿矿产资源开发利用与生态复绿方案
- PDCA提高卧床患者踝泵运动的执行率
- 蒋诗萌小品《谁杀死了周日》台词完整版
评论
0/150
提交评论