进程调度算法模拟带答案版讲解
- 格式:pdf
- 大小:195.58 KB
- 文档页数:24


操作系统实验报告
姓 名:
班 级:
学 号:
指导教师:
实验一 进程调度算法模拟,用动态优先数及时间片轮转法
实现进程调度
一.实验内容:设计一个简单的进程调度算法,模拟OS中的进程调度过程
二.实验要求:
① 进程数不少于5个;
② 进程调度算法任选;
最好选用动态优先数法,每运行一个时间片优先数减3
③ 用C++(或C)语言编程;
④ 程序运行时显示进程调度过程。
三.实验步骤:
① 设计PCB及其数据结构:
struct pcb
{ /* 定义进程控制块PCB */
char name[10];
char state;
int super;
int ntime;
int rtime;
struct pcb* link;
} *ready=NULL,*p;
typedef struct pcb PCB;
② 设计进程就绪队列及数据结构;
三个应用队列: PCB *ready=NULL,*run=NULL,*finish=NULL;
③ 设计进程调度算法,并画出程序流程图;
Y
N ready-queue是否为输入开始进程数n
创建n个PCB并加入ready-queue中
N
Y
Y
N
N
Y
Y
N
N
Y
实验三模拟进程调度算法
先进先出算法
算法总是把处理机分配给最先进入就绪队列的进程,一个进程一旦分得处理机,便一直执行下去,直到该进程完成或阻塞时,才释放处理机。
最高优先权(FPF)优先调度算法
该算法总是把处理机分配给就绪队列中具有最高优先权的进程。常用以下两种方法来确定进程的优先权:
轮转法
前几种算法主要用于批处理系统中,不能作为分时系统中的主调度算法,在分时系统中,都采用时间片轮转法。
简单轮转法:系统将所有就绪进程按FIFO规则排队,按一定的时间间隔把处理机分配给队列中的进程。这样,就绪队列中所有进程均可获得一个时间片的处理机而运行。
多级队列方法:将系统中所有进程分成若干类,每类为一级。
多级反馈队列
多级反馈队列方式是在系统中设置多个就绪队列,并赋予各队列以不同的优先权。
实验内容
①本程序用两种算法对五个进程进行调度,每个进程可有三个状态,并假设初始状态为就绪状态。
②为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户给定。
③在优先数算法中,优先数可以先取值为98,进程每执行一次,优先数减3,
CPU时间片数加1,进程还需要的时间片数减1。在轮转算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了2个单位),这时, CPU时间片数加2,进程还需要的时间片数减2,并排列到就绪队列的尾上。
④对于遇到优先数一致的情况,采用FIFO策略解决。
实验的示例程序如下:
#include
#include
#include
#include
#include
#define P_NUM 5
#define P_TIME 50
#define clrscr()
enum state{
ready,
execute,
block,
finish
实验06进程调度算法模拟
引言:
进程调度算法是操作系统中非常重要的一部分,它决定了进程如何被安排执行的顺序和时间分配。进程调度算法的设计对系统的性能和响应时间都有很大的影响。本实验将会模拟几种常用的进程调度算法,并通过比较它们的性能指标来评估其优劣。
实验目标:
1.理解进程调度算法的设计原理和特点;
2.掌握几种常见的进程调度算法,并能够使用程序模拟它们;
3.对比不同的进程调度算法,分析它们的优缺点和适用场景。
实验内容:
本实验将模拟三种常见的进程调度算法:先来先服务(FCFS)、短作业优先(SJF)和时间片轮转(RR)调度算法。
1.先来先服务(FCFS)调度算法:
FCFS调度算法是最简单的一种调度算法,按照进程到达的顺序进行调度,先到先执行。当一个进程执行完成后,才能执行下一个进程。它适用于执行时间较短的进程,但当执行时间较长的进程到达时,会导致平均等待时间增加。
2.短作业优先(SJF)调度算法:
SJF调度算法是根据进程执行时间的长短进行调度的。当一个进程抵达时,如果它的执行时间比当前正在执行的进程短,那么立即执行它,否则将其放到就绪队列的队尾。这样做的目的是为了减少平均等待时间。然而,SJF调度算法存在着无法预测执行时间导致的不公平问题。
3.时间片轮转(RR)调度算法:
RR调度算法是为了解决长作业等待时间长的问题而设计的。它将每个进程分配一个时间片,当一个进程的时间片用完后,将其放到就绪队列的末尾,执行下一个进程。这样可以确保每个进程都有机会执行,并且减少了长作业的等待时间。然而,时间片过小可能会导致频繁的切换,降低系统的效率。
实验步骤:
1.定义进程类,包含进程名、到达时间、执行时间和优先级等属性;
2.创建进程队列,并根据到达时间对进程进行排序;
3.分别使用FCFS、SJF和RR算法进行模拟调度,计算平均等待时间和平均周转时间;
4.比较三种算法的性能指标,并分析它们的优劣和适用场景。
操作系统进程调度练习及答案(总5页)
本页仅作为文档封面,使用时可以删除
This document is for reference only-rar21year.March 1 假设一个系统中有5个进程,它们的到达时间和服务时间如下表所示,忽略I/O以及其他开销,若分别按先来先服务(FCFS)、非抢占式及抢占式的短进程优先(SPF)、高响应比优先、时间片轮转、多级反馈队列和立即抢占式多级反馈队列七种调度算法,请给出各进程的完成时间、周转时间、带权周转时间、平均周转时间和平均带权周转时间。
答:进程 到达时间 服务时间
A 0 3
B 2 6
C 4 4
D 6 5
E 8 2 算法 进程情况 进程 平均时间 A B C D E
先来先服务 完成时间
周转时间
带权周转时间 3
3
9
7
13
9
18
12
20
12
6.00
非抢占式短作业优先 完成时间
周转时间
带权周转时间 3
3
9
7
15
11
20
14
11
3
抢占式短作业优先 完成时间
周转时间
带权周转时间 3
3
15
13
8
4
20
14
10
2
高响应比优先 完成时间
周转时间
带权周转时间 3
3
9
7
13
9
20
14
15
7
8
时间片轮转 完成时间
4
4
18
16
17
13
20
14
15
7
周转时间
带权周转时间
多级反馈队列 完成时间
周转时间
带权周转时间 3
3
17
15
18
14
20
14
14
6
立即抢占式多级反馈队列 完成时间
周转时间
带权周转时间 4
4
18
16
15
11
20
14
16
8
2 在银行家算法中,若出现下列资源分配情况:
请问:Process Allocation Need Avaiable
P0 0032 0012 1622
P1 1000 1750