进程间通信(IPC)是指不同进程间传播或交换信息。
IPC的方式有管道通信机制、共享内存通信机制、消息传递通信机制、套接字通信机制、信号通信机制等。
临界区:
并发编程中与共享变量有关的程序段称为“临界区”,共享变量代表的资源称为“临界资源”。
进程同步:在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。
操作系统实现进程同步的机制称为同步机制,它通常由同步原语组成。常用的同步机制有:信号量与PV操作、管程和消息传递。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
同步与互斥的概念
现代操作系统基本都是多任务操作系统,即同时有大量可调度实体在运行。在多任务操作系统中,同时运行的多个任务可能:
都需要访问/使用同一种资源;
多个任务之间有依赖关系,某个任务的运行依赖于另一个任务。
【同步】:
是指散步在不同任务之间的若干程序片断,它们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。最基本的场景就是:两个或两个以上的进程或线程在运行过程中协同步调,按预定的先后次序运行。比如 A 任务的运行依赖于 B 任务产生的数据。
【互斥】:
是指散步在不同任务之间的若干程序片断,当某个任务运行其中一个程序片段时,其它任务就不能运行它们之中的任一程序片段,只能等到该任务运行完这个程序片段后才可以运行。最基本的场景就是:一个公共资源同一时刻只能被一个进程或线程使用,多个进程或线程不能同时使用公共资源。
现代操作系统基本都是多任务操作系统,即同时有大量可调度实体在运行。在多任务操作系统中,同时运行的多个任务可能:
都需要访问/使用同一种资源;
多个任务之间有依赖关系,某个任务的运行依赖于另一个任务。
【同步】:
是指散步在不同任务之间的若干程序片断,它们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。最基本的场景就是:两个或两个以上的进程或线程在运行过程中协同步调,按预定的先后次序运行。比如 A 任务的运行依赖于 B 任务产生的数据。
【互斥】:
是指散步在不同任务之间的若干程序片断,当某个任务运行其中一个程序片段时,其它任务就不能运行它们之中的任一程序片段,只能等到该任务运行完这个程序片段后才可以运行。最基本的场景就是:一个公共资源同一时刻只能被一个进程或线程使用,多个进程或线程不能同时使用公共资源。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
进程通信与进程同步和互斥密切相关。进程同步和互斥的目的是确保进程正确通信。
进程同步与互斥发送和接收信号,进程通信发送和接收数据。
进程需要共享的数据应该放在什么地方才能被通信双方进程看到是进程通信涉及的问题。
进程之间互相交换信息的工作称为进程通信。
进程通信就要说明交换数据用到的共享空间如何创建,如何访问。在进程空间相对封闭的情况下
如何访问共享数据就是进程通信重点研究的问题。进程通信将要讨论的是进程与进程之间的关系。
1、管道通信机制
管道是连接读写进程的一个共享文件,允许进程以先进先出的方式写入和读出数据,并对
读写操作进行同步。发送进程以字符流形式把大量数据送入管道尾部,接收进程从管道头部
接收数据。管道可借助于文件系统实现,包括(管道)文件的创建、打开、关闭和读写。
2、共享内存通通信机制
共享内存是运行两个或多个进程共同访问的物理内存区域,是实现进程通信的一种手段。
3、消息传递通信机制
4、套接字通信机制
套接字通信允许互连的、位于不同计算机上的进程实现通信功能。
5、信号通信机制