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

下载本文档

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

文档简介

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

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

3、初值为0;当该进程被调用执行时,每执行一个时间片, Used加1。Need:进程尚需的 CPU时间数,初值表示该进程需要运行的总时间,取值范围为510。并随机产生,每运行一个时间片 need减1 ; need为0则进程结束。Status :进程状态R (运行),W(就绪),F (完成);初始时都处于就绪状态。Next :指向就绪队列中下一个进程的PCB的指针。2)初始状态及就绪队列组织:5个进程初始都处于就绪状态,进程标识1 5,used初值都为0。各进程的优先级随机产生,范围1 5。处于就绪状态的进程,用队列加以组织,队列按优先级由高到低依次排列,队首指针设为head,队尾指针为tail 。

4、3)调度原则以及运行时间的处理:正在执行的进程每执行一个时间片,其优先级减1 (允许优先级为负)。进程调度将在以下情况发生:当正在运行的程序其优先级小于就绪队列队首进程的优先级时。程序中进程的运行时间以逻辑 时间片为单位。操作系统原理A实验报告-8 -RUN -当前运行进程指针;HEAD就绪进程队列的PCB链链首指针;TAIL 就绪进程队列的PCB链链尾指针;(3) 源程序#in clude"stdio.h"#i nclude"c on io.h"#in clude"stdlib.h"#in clude<ctime>typ

5、edef struct pcbint id;/ 进程 IDin t prior;/ 进程优先级int used;/ 已使用的时间片int need;/ 还需要的时间片char status;/ 进程状态PCB;PCB *head,p5;/打印显示void prin t()printf(”n");printf("进程IDt优先级t已使用时间片t所需时间片t状态n");for(i nt j = 0; j < 5; j+)if(pj.id>pj+1.id)int temp1;temp1=pj.id;pj.id=pj+1.id;pj+1.id=temp1;pr

6、in tf("%dt %dt %dtt %dtt%c n",pj.id,p|j.prior,p|j.used,pj. need,pj.status);/用冒泡算法,按优先级排序void sort()for(int i = 0; i < 5; i+)for(i nt j = 0; j < 4 - i; j+)if(pj.prior < pj+1.prior)PCB temp = pj;pj = pj+1;pj+1 = temp;/初始化进程队列void in putprocess()sran d(time(0);/为随机数产生种子/依次为每个Pi初始化for

7、(i nt i=0; i<5; i+)pi.id = i + 1;pi.prior = 5-i;/为优先级随机产生1 - 5 的整数pi.used = 0;为总的时间片产生 5 - 10 的整数pi.status = W;/各个进程的初始状态为就绪sort();/按优先级排序pi. need = 5 + ran d()%6;/head = p;printf(”开始进程的状态:n");prin t();/打印进程状态/按最高优先级优先调用进程队列void run process()PCB *p1 = NULL;dopl = head;head = p+1;/根据优先级调度原则,判

8、断队列队首进程是否能运行while(p1- >n eed > 0) && (p1->prior >= head->prior)p1- >n eed-;p1->prior-;p1->status = 'R'p1->used+;prin t();/打印进程状态/如果进程总的时间片已经用完,一律将其进程优先级置为-20,状态为完成if(p1- >n eed = 0)p1->prior = -20;p1->status = 'F'elsep1->status = 'W;sort();/再次排序为下一次的运行做好准备head = p;while(head->prior != -20);prin t();/ 显示最后各个进程的状态printf(”n");prin tf("所有进程已全部完成.");int mai n()in putprocess();调用初始化进程自定义函数run process();/调用调度进程的函数return(1);四、测试数据与实验结果(可以抓图粘贴)五、结果分析与实验体会虽然实验原理很简单,但是在编写代码的过程中遇到了不少的问题,在两个小时之内已经完成的大体代码的编写,但是之中存在

温馨提示

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

最新文档

评论

0/150

提交评论