
计算机操作系统中进程调度的实验报告.doc
5星
- 浏览量: 0
- 大小:None
- 文件类型:DOC
简介:
本实验报告针对计算机操作系统中的进程调度机制进行了深入探讨与实践操作,分析了多种调度算法,并通过编程实现了简单的调度模拟,以验证其在不同条件下的性能表现。
### 计算机操作系统进程调度实验报告知识点解析
#### 一、实验背景与目标
在计算机操作系统中,进程调度是一项核心任务。无论是在批处理系统、分时系统还是实时系统中,用户进程的数量通常都会超过处理器的数量,这就会引发进程之间争夺处理器资源的问题。为了解决这一问题,操作系统必须实现一种机制,能够根据一定的策略动态地将处理器分配给就绪队列中的进程。
本实验旨在通过实践操作,使学生深入理解进程控制块(PCB)、进程队列等概念,并掌握两种基本的进程调度算法——最高优先数优先调度算法(Preemptive Priority Scheduling Algorithm)和先来先服务调度算法(First-Come First-Served Scheduling Algorithm)的具体实现方法。
#### 二、实验内容详解
##### 1. 进程调度算法概述
- **最高优先数优先调度算法**:
- **原理**:根据进程的优先级高低来进行调度,优先级高的进程优先获得处理器。
- **特点**:适合于对响应时间有严格要求的系统,如实时系统。
- **先来先服务调度算法**:
- **原理**:按照进程进入就绪队列的先后顺序进行调度。
- **特点**:简单直观,适合于没有特殊要求的一般批处理系统。
##### 2. 进程控制块(PCB)的设计
进程控制块是操作系统用来管理进程的数据结构,其中包含了用于管理和控制进程的信息。在这个实验中,每个进程都有一个进程控制块,其中包括以下信息:
- **进程名**:标识进程的名称。
- **优先数**:表示进程的优先级。
- **到达时间**:进程进入系统的时刻。
- **需要运行时间**:进程完成所需的时间。
- **已用 CPU 时间**:进程已经使用的处理器时间。
- **进程状态**:进程当前的状态,包括就绪(Wait)、运行(Run)和完成(Finish)。
##### 3. 实验具体步骤
- **初始化**:需要创建一系列的进程,并初始化其PCB中的各项属性。
- **调度过程**:
- 选择最高优先数的进程进行调度。
- 如果进程在运行一个时间片后仍未完成,则将其优先数减1,并重新放入就绪队列。
- 如果进程完成,则将其状态设置为完成,并从就绪队列中移除。
- 每次调度后打印当前运行的进程、就绪队列以及各进程的PCB信息,便于检查和调试。
- **循环调度**:重复上述过程,直到所有进程均完成。
##### 4. 实验代码分析
代码片段展示了如何定义进程控制块(PCB)结构体,并实现进程控制块的创建和排序功能。
- **进程控制块(PCB)结构体定义**:
```c
struct pcb {
char name[10]; // 进程名
char state; // 进程状态
int super; // 优先数
int ntime; // 需要运行时间
int rtime; // 已用 CPU 时间
struct pcb* link;// 指向下一个进程控制块的指针
} *ready = NULL, *p;
```
- **建立进程控制块函数(input)**:该函数用于输入并创建进程控制块。
```c
char input() {
... (省略代码)
printf(请输入被调度的进程数目:);
scanf(%d,&num);
... (省略代码)
}
```
- **建立对进程进行优先级排列函数(sort)**:该函数实现了进程控制块根据优先数进行排序的功能。
```c
char sort() {
PCB *first, *second;
int insert=0;
... (省略代码)
}
```
#### 三、总结
通过本次实验,不仅可以帮助学生理解进程调度的基本原理和实现方法,还能加深对进程控制块(PCB)、进程队列等关键概念的认识。此外,通过编写和调试具体的进程调度程序,学生能够亲身体验优先级和先来先服务调度算法的实际应用,从而更好地掌握操作系统进程管理的相关知识和技术。
全部评论 (0)


