1.进程控制
概念:对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态的转换等等功能。(简单理解:进程控制就是实现进程状态的转换)
如何实现进程的控制?
答:用原语实现。
什么是原语?
答:原语是一种特殊的程序,他的执行具有原子性,运行必须是一气呵成,不中断(后面围绕这个展开)。
如果不是一起呵成,就会使上面的所处状态与队列状态不匹配。—导致操作系统中的某些关键数据结构信息不统一的情况,这会影响操作系统进行别的管理工作。
如何实现原语的“原子性”?
答:用关中断指令和开中断指令。
注意:正常情况下CPU每执行完一条指令就会例行检查是否有中断信号需要处理,如果有,则会暂停当前的。
这两个指令是特权指令,必须运行在内核态。
->创建原语和引起进程创建的事件。
作业:是指放在外层还没有投入内层的。
->撤销原语以及引起终止的事件。
->进程的阻塞和唤醒
阻塞和唤醒原语必须成对出现
->切换原语以及引起进程切换的事件。
当寄存器要改变状态时,将原先执行的指令存储到寄存器中,然后执行当前的指令,当当前的指令执行完之后,在根据PCB恢复原先的寄存器,再执行最开的的指令。
总览
2.进程通信(IPC)
进程通信是指两个进程直接产生数据交互。
但是进程是配备系统中资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。一个进程不能直接访问另一个进程的地址空间。
故采取下面三种方式,达到进程之间的通信。
->共享存储
过程:
- 先将P写数据进入共享存储区
- 再是Q进程读共享存储区的数据。
共享又分为:
- 基于数据结构的共享(灵活性差,速度慢)
- 基于存储区的共享(灵活性好,速度快)
基于数据结构的共享:比如共享空间里只能放一个长度为10的数组。这种共享方式速度慢、限制多,是一种低级通信的方式(如下图)。
基于存储区的共享:操作系统在内存中划出一块共享存储区,数据的形式,存放位置都由通信进程控制,而不是操作系统。这种共享方式速度很快,是一种高级通信方式。
->消息传递
概念:进程间的数据交换以格式化的消息为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。
消息传递分为两类
直接通信方式:消息发送进程要指明接收进程的ID。
间接通信方式:通过“信箱”作为中间实体进行消息传递
可以多个进程往同一个信箱send信息,也可以多个进程从同一个信箱中receive信息。
->管道通信
总览
注:管道没有写满,只要不为空就可以读。