操作系统实验报告
学 院___计算机学院____
专 业___软件工程 _
班 级 06 级 3 班
学 号 3206007034
姓 名 陈晓梨
指导教师 胡欣如
(200 8 年 12 月)
计算机 学院 软件工程 专业 06 级 3 班 学号: 3206007034
姓名: 陈晓梨 协作者:________ 教师评定:
程序运行情况
实验技能
创新精神
实验报告
设计文档
第 周星期
第 周星期
第 周星期
第 周星期
考勤情况
实验
实验
实验
实验
程序质量
题目
题目
题目
题目
(宋体 5 号字)
1、 计算机及操作系统:Windows xp
2、 编程环境:vc++ 6
实验一:1.cpp;1.exe(宋体 5 号字)
实验二:2.cpp,2.exe
实验三(综合性):3.cpp,3.exe
实验四:4.cpp,4.exe
(宋体 5 号字)
学号: 3206007034 姓名: 陈晓梨 协作者:________
进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过
本实验可以加深理解有关进程控制块、进程队列的概念,并体会和了解优先数和时间片轮转
调度算法的具体实施办法。
设计一个有 N 个进程共行的进程调度程序。
进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和
先来先服务算法。
每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、优先数、
到达时间、需要运行时间、已用 CPU 时间、进程状态等等。
进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达
时间为进程输入的时间。
进程的运行时间以时间片为单位进行计算。
每个进程的状态可以是就绪 W(Wait)、运行 R(Run)、或完成 F(Finish)三种状态之一。
就绪进程获得 CPU 后都只能运行一个时间片。用已占用 CPU 时间加 1 来表示。
如果运行一个时间片后,进程的已占用 CPU 时间已达到所需要的运行时间,则撤消该进程,
如果运行一个时间片后进程的已占用 CPU 时间还未达所需要的运行时间,也就是进程还需要
继续运行,此时应将进程的优先数减 1(即降低一级),然后把它插入就绪队列等待 CPU。每
进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。
重复以上过程,直到所要进程都完成为止。
实验环境
硬件环境:IBM-PC 或兼容机
软件环境:VC++6 编程环境
1、实验原理;
假设系统有 5 个进程,每个进程用一个进程控制块 PCB 来代表。
为每个进程任意确定一个要求运行时间和到达时间。
按照进程到达的先后顺序排成一个循环队列。再设一个队首指针指向第一个到达进程的
首址。
执行处理机调度时,开始选择队首的第一个进程运行。另外,再设一个当前运行进程的
指针,指向当前正在运行的进程。
进程运行一次后,估计运行时间减一,输出当前运行进程的名字
进程运行一次后,以后的调度则将当前指针依此下移一个位置,指向下一个进程,即调
整当前运行指针指向该进程的链接指针所指进程,以指示应运行进程。同时还应判断该
进程的剩余运行时间是否为零。若不为零,则等待下一轮的运行,若该进程的剩余运行
时间为零,则将该进程的状态置为完成态 C,并退出循环队列。
若就绪队列不空,则重复上述的(5)和(6)步骤直到所有的进程都运行完为止。
在所设计的调度程序中,应包含显示或打印语句。显示或打印每次选中的进程的名称及
运行一次后队列的变化情况。
2、设计方案
(1)设计一个有 N 个进程共行的进程调度程序。每个进程由一个进程控制块
PCB 表示。进程控制块包括以下信息:进程名,进程优先数,进程需要运行的时间,占用 CPU
的时间以及进程的状态等。
(2)本调度程序用时间片轮转算法。
(3)编写程序并调试运行。
3、相关数据结构的说明
本程序采用优先数算法对 N 个进程进行调度。每个进程处于 R,就绪 W 和完成 F 三种状态之
一,并假定起始状态就是就绪状态 W。
struct pcb/*创建 PCB*/
{ char name[10]; /*进程标识*/
char state; /*进程状态*/
int ntime; /*进程运行时间*/
int rtime;
struct pcb*link; /*链指针*/
}*ready=NULL,*p;
typedef struct pcb PCB;
4、程序流程图
5、实验的核心代码( ),并附有注释,代码部分分成两栏(字号小五)
/***********************插入进程队列***********************/
void initp()
{ PCB *first,*second;
}
}
if(ready==NULL)
/********************* 建 立 进 程 就 绪 函 数
{
}
p->link=ready;
ready=p;
else
{ first=ready;
second=first->link;
while(second!=NULL)
{
}
***************************/
void running(int tpit)
{
int k=0;
while((k
rtimentime))
{
}
(p->rtime)++;
k++;
first=first->link;
if(p->rtime==p->ntime)
second=second->link;
destroy();
else{p->state='W';
first->link=p;
initp();}}
1、运行结果(要求截图)(能动态说明执行结果)
简单轮转法
2、实验结果的分析及说明
在操作系统中,由于进程总数多于处理机,它们必然竞争处理机。进程调度的功能就是按一
定策略、动态地把处理机分配给处于就绪队列中的某一进程并使之执行。根据不同的系统设
计目标,可有多种选择某一进程的策略。例如系统开销较少的静态优先数法,适合于分时系
统的轮轮法以及 UNIX 采用的动态优先数反馈法等。本实验是采用优先数法进程调度算法来
模拟演示进程调度,编程语言为 C 语言。
先模拟建立进程就绪链表----置所有进程的到达时间均为 0,依 PCB 链接顺序从第一个进程
PCB 开始,使进程编号依次为 0,1,2,3,4„„;就绪链表中进程的数量,由常量 num 控制;
再 模拟建立调度函数--------取表头 PCB,修改进程执行时间,得到的新时间,即为剩余
执行时间,当剩余时间小于或等于 0 时,将此进程的 PCB 取出,依完成的先后次序链到完成
链表中,记录当前完成进程的完成时间,同时修改就绪链表表头;最后 计算和打印里程调
度信息-----计算出各进程周转时间及所有进程的平均周转时间。
由于网上给出了最高优先数优先的算法,所以照猫画虎,写轮转法起来也很容易
不同的算法原理不同,但实现起来确是很像的
实验难点主要在于对于算法原理的理解,理解了原理做起程序来很快
第一次实验比较简单,没什么好说的。
1、 分析不同调度算法的调度策略,比较不同调度算法的优缺点,总结它们的适用范围。
先提交的作业先运行,运行一个之后再轮到下一个
这种算法实现简单,但是响应不及时,适用于交互性要求不高的系统
轮转法规定由各个准备就绪进程顺次轮流使用 CPU,而且每一次使用的时间一般规定为一定
值
当时间片结束时,就强迫一个现行进程出让 CPU。
轮转法实现也较简单,而可以保证不会有进程长期得不到响应,缺点是无法照顾到一些特殊
进程,早期分时系统采用的就是简单轮转法。
为每一个进程设置一个优先数,CPU 调度时每次选择就绪进程中优先数最大者,让它占
用 CPU 运行。优先数法可划分成静态优先数法和动态优先数法两种:静态优先数法在创建进
程时就已确定了该进程的优先数,并且在进程运行的整个过程中该优先数不再动态地改变,
那么这种优先数的确定方法便称为静态优先数法。采用静态优先数法简单,而且实现比较容
易,但太死板,且适用范围也较小。另外,采用静态优先数法可能会使某些低优先数的进程
无限期地等待 CPU,不能准确地反映出系统以及进程在运行过程中不断变化的特性。随着进
程的推进,进程的许多与优先数确定相关的因素也都将随之发生变化。动态优先数法按照变
化着的情况对各个进程的优先数不断适时地做出调整。
从以上可以看出该算法优点是即保证了不会有进程长期等待,也能照顾到特殊进程,缺点是
每次需重新计算进程优先级,占用较多资源。适用于性能较好的分时系统。
学号:
姓名:
陈晓梨
协作者:
3206007034
________
__
_
__
___
__
_
作业管理是用户与操作系统的接口。作业调度的主要功能是检查系统是否能满足用户作业的
资源要求以及按照一定的算法选取作业。
本实验的目的是通过模拟作业调度算法的设计加深对作业管理基本原理的理解。
编写并调试一个单道处理系统的作业等待模拟程序。
作业等待算法:分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先
(HRN)的调度算法。
对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,
以及这组作业的平均周转时间及带权平均周转时间,以比较各种算法的优缺点。
实验环境
硬件环境:IBM-PC 或兼容机
软件环境:VC++6 编程环境
1、实验原理;
由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成
为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU 时限等因
素。
1.先来先服务算法:按照作业提交给系统的先后顺序来挑选作业,先提交的先被挑选。
2.最短作业优先算法:是以进入系统的作业所提出的“执行时间”为标准,总是优先选取