操作系统实验一 使用动态优先权的进程调度算法的模拟C语言
时间: 2024-11-30 16:21:21 浏览: 14
### 操作系统实验一:使用动态优先权的进程调度算法的模拟
#### 一、实验目的
通过动态优先权算法的模拟,加深对进程概念和进程调度过程的理解。
#### 二、实验准备
- 实验指导书
- 电子版实验报告
#### 三、实验内容及教学过程
##### 1. 实验内容介绍(10分钟)
1. **目标**:用C语言实现对N个进程采用动态优先权优先算法的进程调度。
2. **进程控制块(PCB)结构**:
- `id`:进程标识数
- `priority`:进程优先数据,优先数越大优先权越高
- `cputime`:进程已占用的CPU时间
- `alltime`:进程还需占用的时间,运行完毕时为0
- `startblock`:进程再次运行startblock个时间片后进入阻塞状态
- `state`:进程状态
- `next`:队列指针,用于将PCB排成队列
3. **优先数改变原则**:
- 进程在就绪队列中呆一个时间片,优先数增加1
- 进程每运行一个时间片,优先数减少3
4. **初始状态**:
| ID | PRIORITY | CPUTIME | ALLTIME | STARTBLOCK | BLOCKTIME | STATE |
|----|----------|---------|---------|------------|-----------|-------|
| 0 | 9 | 0 | 3 | 2 | 3 | READY |
| 1 | 38 | 0 | 3 | -1 | 0 | READY |
| 2 | 30 | 0 | 6 | -1 | 0 | READY |
| 3 | 29 | 0 | 3 | -1 | 0 | READY |
| 4 | 0 | 0 | 4 | -1 | 0 | READY |
5. **输出格式**:
- 每个时间片内进程的情况显示,格式如下:
```
RUNNING PROG: i
READY_QUEUE: ->id1->id2
BLOCK_QUEUE: ->id3->id4
ID 0 1 2 3 4
PRIORITY P0 P1 P2 P3 P4
CPUTIME C0 C1 C2 C3 C4
ALLTIME A0 A1 A2 A3 A4
STARTBLOCK T0 T1 T2 T3 T4
BLOCKTIME B0 B1 B2 B3 B4
STATE S0 S1 S2 S3 S4
```
##### 2. 实验过程(78+90分钟)
- 学生根据实验任务要求完成实验内容。
- 教师观察学生实验完成情况,适时给予辅导。
##### 3. 小结(2分钟)
- 该实验是综合性实验,要求将程序和电子版实验报告打包上传至作业系统。
- 预习实验二。
- 提醒学生纸质版实验报告(双面打印)下周交,以便评分。
#### 四、思考题
1. 在实际的进程调度中,除了按调度算法选择下一个执行的进程外,还应处理哪些工作?
2. 为什么对进程的优先数可按上述原则进行修改?
#### 五、仪器设备要求
- 有C/C++编程环境的电脑。
阅读全文