进程间通信IPC(interprocess communication):
描述的是运行在某个操作系统之上的不同进程间各种消息传递方式。
POSIX:
可移植操作系统接口(portable operation system interface),由电气与电子工程师学会IEEE开发的一系列标准。
消息传递方式:
管道(pipe):可在进程 和 shell 中使用,无名管道只能在共同祖先的进程间使用。管道普遍用于shell中,也可以在程序中实现子进程向父进程回传信息。
有名管道(named pipe)即FIFO可在无共同祖先的进程间使用。(名字空间:当多个无亲缘关系的进程使用某种类型的IPC对象来彼此交换信息是,该IPC对象必须有一个某种形式的名字或者标识符。)
posix消息队列:可在同一主机上有亲缘关系和无亲缘关系的进程间使用。(亲缘关系是指这些进程具有共同的祖先。)
远程过程调用(RPC):可在不同/相同主机上客户程序与服务器程序之间传递消息。
同步形式(防止多个进程同时修改同一文件):
记录上锁:
posix信号量:
posix共享内存区:
互斥锁和条件变量:
读写锁:
进程间信息共享方式:
进程与线程区别:
每个进程都有各自的地址空间。
一个给定进程内的所有线程共享同样的全局变量。
IPC对象持续性:
任意IPC对象的持续性定义:该类型的一个对象一直存在多长时间。
有三种类型的持续性:
三种交互模式:
文件服务器:客户向服务器发送一个路径名,服务器将该文件内容返还给客户。
生产者-消费者:某一或多个线程或进程(生产者)将数据放到一个共享缓冲器,另一个或多个线程或进程(消费者)对该缓冲区中数据进行操作。
序列号持续增1:一个或多个线程或进程将一个共享的序列好持续增1。