进程调度模拟:基于随机数的双进程程序

该思维导图描述了一个程序的执行流程,主要涉及两个进程(进程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
            - 关闭文件
            - 结束程序
          - 否
            - 返回循环开始
      - 否
        - 返回循环开始
  - 否
    - 返回循环开始
图片
进程调度模拟:基于随机数的双进程程序