进程控制的实现原语和进程通信(IPC)相关概念

Posted bfhonor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程控制的实现原语和进程通信(IPC)相关概念相关的知识,希望对你有一定的参考价值。

一、进程控制

(一)什么是进程控制?

  • 进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现
    进程状态转换等功能。
  • 简化理解:反正进程控制就是要实现进程状态转换

(二)如何实现进程控制?

  • 用“原语”实现

(三)如何实现原语的“原子性”?

  • 原语的执行具有原子性,即执行过程只能一气呵成,期间不允许被中断
  • 可以用 “关中断指令”和“开中断指令”这两个特权指令实现原子性

(四)进程控制相关的原语




(五)程序是如何运行的?



  • 这些指令顺序执行的过程中,很多中间结果是放在各种寄存器中的.
  • 思考:执行完指令3后,另一个进程开始上CPU运行。
  • 解决办法:在进程切换时先在PCB中保存这个进程的运行环境(保存一些必要的寄存器信息)
  • 当原来的进程再次投入运行时,可以通过PCB恢复它的运行环境

无论哪个进程控制原语,要做的无非三类事情:

  1. 更新PCB中的信息【修改进程状态(state)保存/恢复运行环境】
    ①、 所有的进程控制原语一定都会修改进程状态标志
    ②、剥夺当前运行进程的CPU使用权必然需要保存其运行环境
    ③、某进程开始运行前必然要恢复期运行环境
  2. 将PCB插入合适的队列
  3. 分配/回收资源

二、进程通信(IPC)

  • 进程间通信(Inter-Process Communication, IPC)是指两个进程之间产生数据交互。

(一)为什么进程通信需要操作系统支持?

  • 进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立
  • 为了保证安全,一个进程不能直接访问另一个进程的地址空间。

(一)共享存储

  • 为避免出错,各个进程对共享空间的 访问 应该是 互斥 的。
  • 各个进程可使用操作系统内核提供的同步互斥工具(如P、V操作)

(二)消息传递

  • 进程间的数据交换以格式化的消息(Message)为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。

1. 直接通信方式

  • 消息传递之~直接通信方式,点名道姓的消息传递。

2. 间接通信方式

  • 间接通信方式,以“信箱”作为中间实体进行消息传递。

(三) 管道通信

  1. 管道只能采用半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道
  2. 各进程要互斥地访问管道(由操作系统实现)
  3. 管道写满时,写进程阻塞,直到读进程将管道中的数据取走,即可唤醒写进程。
  4. 管道读空时,读进程阻塞,直到写进程往管道中写入数据,即可唤醒读进程。
  5. 管道中的数据一旦被读出,就彻底消失。因此,当多个进程读同一个管道时,可能会错乱。对此,通常有两种解决方案:
    ①、一个管道允许多个写进程,一个读进程(2014年408真题高教社官方答案);
    ②、允许有多个写进程,多个读进程,但系统会让各个读进程轮流从管道中读数据(Linux 的方案)。

  • 写进程往管道写数据,即便管道没被写满,只要管道没空,读进程就可以从管道读数据
  • 读进程从管道读数据,即便管道没被读空,只要管道没满,写进程就可以往管道写数据

以上是关于进程控制的实现原语和进程通信(IPC)相关概念的主要内容,如果未能解决你的问题,请参考以下文章

操作系统二1进程

操作系统二1进程

操作系统二1进程

操作系统二1进程

Linux进程IPC浅析[进程间通信SystemV共享内存]

Linux进程IPC浅析[进程间通信SystemV共享内存]