预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共14页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

本科实验报告课程名称:操作系统B实验项目:进程调度实验设计实验地点:逸夫楼504专业班级:软件1006班学号:2010004502学生姓名:白双元指导教师:方昀2012年11月28日实验题目进程调度试验设计实验目的和要求目的进程是操作系统最重要的概念之一,进程调度是操作系统的主要内容,本实验要求学生独立地用高级语言编写一个进程调度程序,调度算法可任意选择或自行设计,本实验可使学生加深对进程调度和各种调度算法的理解。要求设计一个有几个进程并发执行的进程调度程序,每个进程由一个进程控制块(PCB)表示,进程控制块通常应包括下述信息:进程名,进程优先数,进程需要运行的时间,占用CPU的时间以及进程的状态等,且可按照调度算法的不同而增删。调度程序应包含2—3种不同的调度算法,运行时可以任选一种,以利于各种方法的分析和比较。系统应能显示或打印各进程状态和参数的变化情况,便于观察。实验内容及原理题目本程序可选用优先数法或简单轮转法对五个进程进行调度。每个进程处于运行R(run)、就绪W(wait)和完成F(finish)三种状态之一,并假定起始状态都是就绪状态W。为了便于处理,程序中进程的运行时间以时间片为单位计算。各进程的优先数或轮转时间片数、以及进程需要运行的时间片数,均由伪随机数发生器产生。进程控制块结构如表2-1所示:表2-1PCB进程标识符链指针优先数/轮转时间片数占用CPU时间片数进程所需时间片数进程状态进程控制块链结构如图2-1所示:RUNHEADTAIL1┇R3┇W5┇WW0┇2…图2-1进程控制块链结构其中:RUN—当前运行进程指针;HEAD—进程就绪链链首指针;TAIL—进程就绪链链尾指针。2.算法与框图程序框图如图2-2所示。priority是输入调度算法alog开始alog=priority/roundrobin?生成并按优先数大小排列进程控制块链进程时间片数为0?从链首取一个进程投入运行生成并按进入次序排列进程控制块链链首进程投入运行时间片到,进程时间片数减1,优先数减3运行进程退出,排到进程链尾部撤消该进程链首进程投入运行时间片到,进程时间片数减1,占用CPU时间加1优先数大于链首进程?进程时间片数为0?撤消该进程运行进程退出,按优先数插入进程链从链首取一个进程投入运行结束结束进程队列空?进程队列空?是是是否否否否否是roundrobin占用处理机时间片到?否是图2-2进程调度框图(1)优先数法。进程就绪链按优先数大小从大到小排列,链首进程首先投入运行。每过一个时间片,运行进程所需运行的时间片数减1,说明它已运行了一个时间片,优先数也减3。理由是该进程如果在一个时间片中完成不了,优先级应降低一级。接着比较现行进程和就绪链链首进程的优先数,如果仍是现行进程高或者相同,就让现行进程继续运行,否则,调度就绪链链首进程投入运行。原运行进程再按其优先数大小插入就绪链,且改变它们对应的进程状态,直至所有进程都运行完各自的时间片数。(2)简单轮转法。进程就绪链按各进程进入的先后次序排列,链首进程首先投入运行。进程每次占用处理机的轮转时间按其重要程度登入进程控制块中的轮转时间片数记录项(相应于优先数法的优先数记录项位置)。每过一个时间片,运行进程占用处理机的时间片数加1,然后比较占用处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运行进程排到就绪链末尾,调度链首进程占用处理机,且改变它们的进程状态,直至所有进程完成各自的时间片。主要仪器设备硬件:笔记本电脑软件:VisualStudio2010操作方法与实验步骤源代码:#include<stdio.h>#include<stdlib.h>#definefurthest5structprocess/*PCBSTRUCTURE*/{intid;intpriority;intcputime;intalltime;charstate;intnext;}prochain[furthest-1];intprocnum;intrand();intalgo;intrun,head,tail,j;voidprint();voidinsert(intq);voidinit();voidprisch();voidtimesch();main()/*MAINPROGRAM*/{agan:printf("typethealgorithmis(1:RR,2:PRIO):");scan