实验一:进程调度实验报告书_第1页
实验一:进程调度实验报告书_第2页
实验一:进程调度实验报告书_第3页
实验一:进程调度实验报告书_第4页
实验一:进程调度实验报告书_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、淮海工学院计算机科学系实验报告书课程名:操作系统原理a 题 目: 进程调度 班 级: 软件1 学 号: 201112258 姓 名: 评语:成绩: 指导教师: 批阅时间: 年 月 日 操作系统原理a 实验报告 - 13 -操作系统原理实验进程调度实验报告一、目的与要求1)进程是操作系统最重要的概念之一,进程调度是操作系统内核的重要功能,本实验要求用c语言编写一个进程调度模拟程序,使用优先级或时间片轮转法实现进程调度。本实验可加深对进程调度算法的理解。2)按照实验题目要求独立正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果)3)于2013年10月22日以前提交本次实

2、验报告(含电子和纸质报告,由学习委员以班为单位统一打包提交)。2 实验内容或题目1)设计有5个进程并发执行的模拟调度程序,每个程序由一个pcb表示。2)模拟调度程序可任选两种调度算法之一实现(有能力的同学可同时实现两个调度算法)。3)程序执行中应能在屏幕上显示出各进程的状态变化,以便于观察调度的整个过程。4)本次实验内容(项目)的详细说明以及要求请参见实验指导书。 3 实验步骤与源程序 1.pcb的结构:idspanusedneedstatusnext优先级算法中,设pcb的结构如右图所示,其中各数据项的含义如下:id:进程标识符号,取值15。prior:优先级,随机产生,范围15。used:

3、目前已占用的cpu时间数,初值为0;当该进程被调用执行时,每执行一个时间片,used加1。need:进程尚需的cpu时间数,初值表示该进程需要运行的总时间,取值范围为510。并随机产生,每运行一个时间片need减1;need为0则进程结束。status:进程状态r(运行),j(就绪),f(完成);初始时都处于就绪状态。next:指向就绪队列中下一个进程的pcb的指针。2.初始状态及就绪队列组织:5个进程初始都处于就绪状态,进程标识15,used初值都为0。各进程的优先级随机产生,范围15。处于就绪状态的进程,用队列加以组织,队列按优先级由高到低依次排列,队首指针设为head,队尾指针设为tai

4、l。3.调度原则以及运行时间的处理:正在执行的进程每执行一个时间片,其优先级减1(允许优先级为负)。进程调度将在以下情况发生:当正在运行的程序其优先级小于就绪队列队首进程的优先级时。程序中进程的运行时间以逻辑时间片为单位。4.流程图: 5.源程序: #include <string>#include <iomanip>#include <iostream>#define n 5using namespace std;struct gzuochar id; int arrtime; int sevtime; int fintime; int runtime;

5、float wtime;gzuo joblinen;void menu()cout<<""<<endl; cout<<" 作业调度程序 "<<endl; cout<<""<<endl; cout<<" a.数据输入 "<<endl; cout<<" b.fcfs算法 "<<endl; cout<<" c.sjf 算法 "<<endl;

6、 cout<<" d.退出 "<<endl; cout<<""<<endl; cout<<"请输入操作序号a-d:"void input()for(int b=0;b<n;b+)cout<<"作业编号(0-4):" cin>>joblineb.id; cout<<"到达时间(单位为分钟):" cin>>joblineb.arrtime; cout<<"服务时间(

7、单位为分钟):" cin>>joblineb.sevtime;void fcfs()int b,j,i; float t=0; float time1=0.00,time2=0.00; int temp; int temparr,tempsev;for(b=0;b<n;b+)for(j=0;j<b;j+)if(joblineb.arrtime<joblinej.arrtime)temp=joblinej.id; joblinej.id=joblineb.id; joblineb.id=temp; temparr=joblinej.arrtime; job

8、linej.arrtime=joblineb.arrtime; joblineb.arrtime=temparr; tempsev=joblinej.sevtime; joblinej.sevtime=joblineb.sevtime; joblineb.sevtime=tempsev;cout<<""<<endl; cout<<"fcfs运行顺序"<<" "<<""for( b=0;b<n;b+)cout<<setw(8)<<

9、;joblineb.id<<"" cout<<endl;jobline0.fintime=jobline0.sevtime-jobline0.arrtime;for(b=1;b<n;b+)joblineb.fintime=joblineb-1.fintime+joblineb.sevtime;cout<<""<<endl; cout<<"完成时间分别"<<" "<<""for(b=0;b<n;b+)c

10、out<<setw(8)<<joblineb.fintime<<""cout<<endl;jobline0.runtime=jobline0.sevtime-jobline0.arrtime;for(b=1;b<n;b+)joblineb.runtime=joblineb-1.fintime+joblineb.sevtime-joblineb.arrtime;cout<<""<<endl;cout<<"周转时间分别"<<"

11、"<<""for(b=0;b<n;b+)cout<<setw(8)<<joblineb.runtime<<""cout<<endl;for(b=0;b<n;b+)joblineb.wtime=(float)joblineb.runtime/(float)joblineb.sevtime;cout<<""<<endl;cout<<"带权周转时间"<<" "<<

12、;""for(b=0;b<n;b+)cout<<setw(8)<<joblineb.wtime<<""cout<<endl; cout<<""<<endl;for(b=0;b<n;b+)time1+=joblineb.runtime; time2+=joblineb.wtime;cout<<"平均周转时间 "<<" "<<setw(8)<<time1<<

13、" "<<endl;cout<<""<<endl; cout<<"平均带权周转时间"<<" "<<setw(8)<<time2<<" "<<endl; cout<<""<<endl;void sjf()int b,j,i; float t=0; float time1=0.00,time2=0.00; int temp; int temparr,

14、tempsev;for(b=0;b<n;b+)for(j=0;j<b;j+) if(joblineb.arrtime<joblinej.arrtime)temp=joblinej.id; joblinej.id=joblineb.id; joblineb.id=temp; temparr=joblinej.arrtime; joblinej.arrtime=joblineb.arrtime; joblineb.arrtime=temparr; tempsev=joblinej.sevtime; joblinej.sevtime=joblineb.sevtime; joblin

15、eb.sevtime=tempsev;for(b=1;b<n;b+)for(j=1;j<b;j+)int temp; if(joblineb.sevtime<joblinej.sevtime)temp=joblineb.id; joblineb.id=joblinej.id; joblinej.id=temp; temp=joblineb.arrtime; joblineb.arrtime=joblinej.arrtime; joblinej.arrtime=temp; temp=joblineb.sevtime; joblineb.sevtime=joblinej.sevt

16、ime; joblinej.sevtime=temp;cout<<""<<endl;cout<<"sjf运行顺序"<<" "<<""for( b=0;b<n;b+)cout<<setw(8)<<joblineb.id<<""cout<<endl; jobline0.fintime=jobline0.sevtime-jobline0.arrtime; for(b=1;b<n;b+

17、)joblineb.fintime=joblineb-1.fintime+joblineb.sevtime;cout<<""<<endl;cout<<"完成时间"<<" "<<""for(b=0;b<n;b+)cout<<setw(8)<<joblineb.fintime<<""cout<<endl;jobline0.runtime=jobline0.sevtime-jobline0

18、.arrtime;for(b=1;b<n;b+)joblineb.runtime=joblineb-1.fintime+joblineb.sevtime-joblineb.arrtime;cout<<""<<endl; cout<<"周转时间"<<" "<<""for(b=0;b<n;b+)cout<<setw(8)<<joblineb.runtime<<""cout<<end

19、l;for(b=0;b<n;b+)joblineb.wtime=(float)joblineb.runtime/(float)joblineb.sevtime;cout<<""<<endl; cout<<"带权周转时间"<<" "<<"" for(b=0;b<n;b+)cout<<setw(8)<<joblineb.wtime<<""cout<<endl; for(b=0;b<n;b+)time1+=joblineb.runtime; time2+=joblineb.wtime;cout<<""<<endl; cout<<"平均周转时间 "<<" "<<setw(8)<<time1<<"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论