进程通信的类型
- 共享存储器系统(Shared Memory System)
相互通讯的进程以采用共享某些数据结构或存储区进行通信。
(1) 基于共享数据结构的通信方式。要求进程公用某些数据结构(比如生产者-消费者问题)。
(2) 基于共享存储区的通信方式。在内存中划出一块专用存储区,通过对共享存储区的访问实现进程间通信。先申请;再附接到通信进程;然后像使用本地数据一样读、写共享数据库,实现通信。 - 管道通信(Pipe)
(1) 所谓“管道”,是指用于连接一个读进程和一个写进程以实现他们之间通信的一个共享文件,又名pipe文件。
(2)管道要有两端:入/出。
(3)管道有命名管道和匿名管道两种。
管道机制的三方面协调能力:
① 互斥。当一个进程正在对pipe执行读/写操作时,其它进程必须等待。
② 同步。指当写(输入)进程把一定数量(如4 KB)的数据写入pipe,便去睡眠等待, 直到读(输出)进程取走数据后,再把他唤醒。当读进程读一空pipe时,也应睡眠等待,直至写进程将数据写入管道后,才将之唤醒。
③ 确定对方是否存在。只有确定了对方已存在时,才能进行通信。 - 消息传递系统(Message Passing System)
1.消息传递机制是使用得最广泛的一种进程间通信的机制。属于高级通信方式。
2.在消息传递系统中,进程间的数据交换,是以格式化的消息(message)为单位的;在计算机网络中,又把message称为报文。
3.程序员直接利用系统提供的一组通信原语进行通信。
4.根据其实现方式的不同,进一步可分成直接通信方式和间接通信方式两种:
(1) 直接通信方式:发送进程利用OS提供的发送原语,直接把消息发送给目标进程。
(2) 间接通信方式:发送和接收进程都通过共享中间实体(信箱)的方式进行消息的发送和接收,完成通信。 - C/S系统
1.客户/服务器(Client/Server)
简称C/S模式,由三部分组成:
客户机
服务器
网络
2.三类主要实现方法:Socket,远程过程,远程方法
(1)Socket
① 基于文件型
在同一台机器的环境中,把一个Socket关联到一个特殊的文件。通过对这个特殊文件进行读写,实现通信。类似于管道。
② 基于网络型
(2)远程过程和远程方法
①远程过程(函数)调用RPC(Remote Procedure Call)是一个通信协议,用于通过网络连接的系统。该协议允许运行于一台主机(本地)系统上的进程调用另一台主机(远程)系统上的进程,而对程序员表现为常规的过程调用,无需额外地为此编程。
②如果涉及的软件采用面向对象编程,那么远程过程调用亦可称做远程方法调用。
③UNIX有一系列的命令,称谓r-命令。
线程的基本概念
- 自从20世纪60年代人们提出进程后,在OS中一直以进程作为调度和占有资源的基本单位。
- 20世纪80年代人们又提出了比进程更小的独立运行单位—线程(threads),试图用它来提高系统内进程并发执行度,从而进一步提高系统的呑吐量。
- 特别是上世纪90年代后,多处理机系统的出现,线程比进程表现出了更好的并发性,并可充分利用多处理器的优势。
- 现在大部分OS都支持线程。
线程的引入
引入线程,是为了减少程序在并发执行时所付出的时、空开销,也就是减少处理机的空转时间和调度切换(保护现场信息)的时间,便于系统管理,使OS具有更好的并发性。
进程并发执行的时空开销
进程控制
1)创建进程。
系统在创建一个进程时,必须为它分配其所必需的、除处理机以外的所有资源,如内存空间、I/O设备,以及建立相应的PCB。
2)进程切换(OS内耗)
系统在撤消进程时,又必须先对其所占有的资源执行回收操作,然后再撤消PCB。
3)撤消进程
对进程进行切换时,由于要保留当前进程的CPU环境和设置新选中进程的CPU环境,因而须花费不少的处理机时间。
换言之,由于进程是一个资源的拥有者,因而在创建、撤消和切换中,系统必须为之付出较大的时空开销。正因如此,在系统中所设置的进程,其数目不宜过多,进程切换的频率也不宜过高,这也就限制了并发程度的进一步提高。
小问题
-
为什么引入进程
在多道程序同时运行的环境下,进程之间需要共享系统资源,因此会导致个程序在执行过程中出现相互制约的关系,程序的执行回表现出间断的特征。为了深刻描述程序动态执行过程的性质,更好地支持和管理多道程序的并发执行。 -
进程的组成
(1)进程控制块
(2)程序段
(3)数据段 -
进程控制块
进程是一个独立的运行单位,也是操作系统进行资源分配和调度的基本单位,它由三部分组成,其中最核心的是进程控制块(PCB)。
PCB主要包括进程描述信息,进程控制和管理信息,资源分配清单和处理机相关的信息等。 -
进程间通信
(1)共享存储
(2)消息传递
(3)管道通信 -
进程与线程的区别与联系
(1) 进程是资源分配的基本单位。所有与该进程有关的资源,如打印机,输入缓冲队列等,都被记录在进程控制块PCB中。
(2)线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程的资源。
(3) 进程也是抢占处理机的调度单位,它拥有一个完整的虚拟地址空间。
(4)不同的进程拥有不同的虚拟地址空间,而同一进程内的不同线程共享同一进程地址空间。
(5)线程不能脱离进程而独立存在。
- 进程与线程关系
进程执行示意图 :
多线程进程执行示意图: