操作系统进程相关
进程的状态和线程的状态
线程和进程的区别
- 进程是操作系统分配和管理资源的单位,线程是CPU调度和管理的基本单位。
- 进程拥有独立的地址空间,线程间共享同一个进程的地址空间
- 进程的开销比较大,线程的开销小。
进程间怎么通信
-
管道,匿名管道和命名管道
匿名管道只能用于父子进程间的通信
命名管道可以用于不相关进程间的通信 -
消息传递
直接通信方式
间接通信方式 -
信号量:
不能传递复杂消息,只能用来同步 ,PV操作 -
共享内存区(这是最快的一种IPC):
能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了同一进程内的一块内存 -
消息队列
相比于 FIFO,消息队列具有以下优点:- 消息队列可以独立于读写进程存在,从而避免了 FIFO 中同步管道的打开和关闭时可能产生的困难;
- 避免了 FIFO 的同步阻塞问题,不需要进程自己提供同步方法;
- 读进程可以根据消息类型有选择地接收消息,而不像 FIFO 那样只能默认地接收。
-
套接字
与其它通信机制不同的是,它可用于不同机器间的进程通信。