进程与线程的区别
a. 线程是进程的一个实体,是CPU调度和分派的基本单 b. 进程在执行过程中拥有独立的内存单元,而多个线程共享内存
c. 线程不能够独立执行,必须依赖进程
进程间的通信方式
a. 进程之间需要交换数据
b. 进程各自有不同的用户地址空间
i. 同一台机器
ii. 不同机器
c. 通过操作系统内核
d. 方式:信号,信号量,消息队列(小的)、文件 、管道(pipe)、 有名管道(FIFO) 、 共享内存 、套接字
远程过程调用RPC
进程间通信方式 IPC
a. 控制 control flow : 信号,信号量,消息队列(小的)
i. 信号:
1) 信号可以在任何时候由内核发给某一进程
ii. 消息队列:
1) 两个不相关进程间。独立于发送进程、接受进程而存在。
iii. 信号量:
1) 进程间对共享数据的互斥访问
b. 数据 data flow :文件 、管道(pipe)、 有名管道(FIFO) 、 共享内存 、套接字
i. 管道:半双工(数据只能向一个方向流动)、只能用于父子进程或兄弟进程之间(必须在同一台机器上,两台机器上不存在)、实质是一个内核缓冲区,独立于文件系统
ii. 匿名管道:半双工、不相关的进程也可以,有名管道的名字存在于文件系统中,内容存放在内存中
iii. 共享内存:
1) 内核留出了一块内存区,可以由需要访问的进程将其映射到自己的私有地址空间
2) 需要同步机制来达到进程间的同步及互斥
iv. 套接字:
1) TCP/IP 的网络通信
2) 进程间使用套接字中的相关函数来通信
3) 本地单机或跨网络
- 注:需要端口的原因:区别服务种类,一台主机上可能存有很多数据