1. 创建原语
    撤销原语
  2. 挂起原语
    **原语
  3. 阻塞原语
    唤醒原语
  4. 进程调度原语

1.何时调用阻塞原语?

  1. 当正在运行的进程需要等待某一事 件而发生运行受阻时,它通过中断请求系统服务。
  2. 系统按照进程的需求进行适当处理后,启动“进程阻塞原语”将该进程阻塞起来。

引起进程阻塞(运行受阻)的原因

  1. 等待I/O
  2. 请求资源得不到满足
  3. 进程同步约束
  4. 服务进程无事可做

阻塞原语Block()
操作系统---(16)进程状态转换控制原语

2.合时调用唤醒原语?

  1. 当系统发生某- - 个事件时,正在等待该事件的进程需要立即被唤醒,由“阻塞”状态转为“就绪”状态。

进程被唤醒的原因

  1. 所等的I/O操作已完成
  2. 请求的资源得到了满足
  3. 进程同步约束已撤销
  4. 服务进程收到新的任务

唤醒原语Wake_up()

  1. 将当前进程的上下文保存到系统栈中。
  2. 从阻塞队列上查找等待该事件的进程PCB。
  3. 将PCB从阻塞队列上摘下来。
  4. 将其状态置为“就绪”,将PCB挂入就绪队列。
  5. 弹出系统栈中的进程上下文,置入CPU,让被中断的井程恢复运行。
  6. 结束。

3.调用挂起原语的原因

  1. 当前内存空间紧缺,部分进程优先运行、
  2. 应用户的要求,将用户进程挂起
  3. 应父进程要求,将其子进程挂起

挂起原语Suspend()

  1. 找到被挂起进程的PCB,获得其内存地址,将内存空间归还给存储管理模块。
  2. 进程状态阻塞转为“ 挂起阻塞”,或者就绪转为为“挂起就绪”,将PCB从原队列转入相应队列。
  3. 申请外存交换区空间,换出进程,地址写入PCB。
  4. 结束。

4.何时调用**原语?

  1. 有进程运行完毕,当前内存空间并不紧张
  2. 应用户要求,将其进程**
  3. 应父进程的要求,将将其子进程**
  4. 或者进程自身设定的挂起周期已完成

**原语Active()

  1. 扫描“挂起就绪队列”找到被**进程的PCB。
  2. 将PCB从所在队列上摘下来。
  3. 按PCB登记的空间需求,申请内存, 加载到内存中。
  4. 归还外存交换区空间。
  5. 将进程状态置为“就绪”,插入就绪队列;
  6. 结束。.

相关文章:

  • 2021-06-24
  • 2021-10-23
  • 2021-08-13
  • 2021-08-31
  • 2021-08-19
  • 2021-08-04
  • 2021-04-12
  • 2021-09-06
猜你喜欢
  • 2021-09-20
  • 2021-05-21
  • 2021-09-05
  • 2021-06-25
  • 2021-03-30
  • 2022-01-01
  • 2022-12-23
相关资源
相似解决方案