进程调度模拟:基于随机数的双进程程序
该思维导图描述了一个程序的执行流程,主要涉及两个进程(进程1和进程2)的调度与输出。程序开始时初始化文件、缓冲区和进程控制块,并输入进程工作次数。程序循环中,根据随机数选择执行进程1或进程2,每次执行减少相应进程的工作次数。当缓冲区满时,调用假脱机输出函数。循环结束条件是两个进程的工作次数均为零且缓冲区为空。最后,释放资源并结束程序。程序使用随机数模拟进程调度,体现了简单的进程管理机制。
源码
# 进程调度模拟
## 开始
- 打开result.txt文件
- 初始化输出井buffer数据为0
- 初始化3个进程控制块PCB
- 输入进程1工作次数t1并写入文件
- 输入进程2工作次数t2并写入文件
- 设置随机数种子
## 循环开始
- 生成随机数i并判断范围
- i <= 45
- 进程1可操作
- t1 > 0
- 是
- 调用 request 1 处理进程1请求
- 更新t1值
- 返回循环开始
- 否
- 返回获取下一随机数
- 否
- 返回获取下一随机数
- i <= 90
- 进程2可操作
- t2 > 0
- 是
- 调用 request 2 处理进程2请求
- 更新t2值
- 返回循环开始
- 否
- 返回获取下一随机数
- 否
- 返回获取下一随机数
- 否
- head == tail
- 是
- 设置PCB 2 状态为2
- 返回循环开始
- 否
- 调用 spooling 函数进行假脱机输出
- 返回循环开始
## 循环结束判断
- t1 == 0
- 是
- t2 == 0
- 是
- head == tail
- 是
- 释放PCB内存,置为NULL
- 关闭文件
- 结束程序
- 否
- 返回循环开始
- 否
- 返回循环开始
- 否
- 返回循环开始
图片