进程控制的实现原语和进程通信(IPC)相关概念
Posted bfhonor
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程控制的实现原语和进程通信(IPC)相关概念相关的知识,希望对你有一定的参考价值。
一、进程控制
(一)什么是进程控制?
- 进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现
进程状态转换等功能。 - 简化理解:反正进程控制就是要实现进程状态转换
(二)如何实现进程控制?
- 用“原语”实现
(三)如何实现原语的“原子性”?
- 原语的执行具有原子性,即执行过程只能一气呵成,期间不允许被中断。
- 可以用 “关中断指令”和“开中断指令”这两个特权指令实现原子性
(四)进程控制相关的原语
(五)程序是如何运行的?
- 这些指令顺序执行的过程中,很多中间结果是放在各种寄存器中的.
- 思考:执行完指令3后,另一个进程开始上CPU运行。
- 解决办法:在进程切换时先在PCB中保存这个进程的运行环境(保存一些必要的寄存器信息)
- 当原来的进程再次投入运行时,可以通过PCB恢复它的运行环境
无论哪个进程控制原语,要做的无非三类事情:
- 更新PCB中的信息【修改进程状态(state)保存/恢复运行环境】
①、 所有的进程控制原语一定都会修改进程状态标志
②、剥夺当前运行进程的CPU使用权必然需要保存其运行环境
③、某进程开始运行前必然要恢复期运行环境 - 将PCB插入合适的队列
- 分配/回收资源
二、进程通信(IPC)
- 进程间通信(Inter-Process Communication, IPC)是指两个进程之间产生数据交互。
(一)为什么进程通信需要操作系统支持?
- 进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。
- 为了保证安全,一个进程不能直接访问另一个进程的地址空间。
(一)共享存储
- 为避免出错,各个进程对共享空间的 访问 应该是 互斥 的。
- 各个进程可使用操作系统内核提供的同步互斥工具(如P、V操作)
(二)消息传递
- 进程间的数据交换以格式化的消息(Message)为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。
1. 直接通信方式
- 消息传递之~直接通信方式,点名道姓的消息传递。
2. 间接通信方式
- 间接通信方式,以“信箱”作为中间实体进行消息传递。
(三) 管道通信
- 管道只能采用半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道。
- 各进程要互斥地访问管道(由操作系统实现)
- 当管道写满时,写进程将阻塞,直到读进程将管道中的数据取走,即可唤醒写进程。
- 当管道读空时,读进程将阻塞,直到写进程往管道中写入数据,即可唤醒读进程。
- 管道中的数据一旦被读出,就彻底消失。因此,当多个进程读同一个管道时,可能会错乱。对此,通常有两种解决方案:
①、一个管道允许多个写进程,一个读进程(2014年408真题高教社官方答案);
②、允许有多个写进程,多个读进程,但系统会让各个读进程轮流从管道中读数据(Linux 的方案)。
- 写进程往管道写数据,即便管道没被写满,只要管道没空,读进程就可以从管道读数据
- 读进程从管道读数据,即便管道没被读空,只要管道没满,写进程就可以往管道写数据
以上是关于进程控制的实现原语和进程通信(IPC)相关概念的主要内容,如果未能解决你的问题,请参考以下文章