操作系统—进程线程
1.进程和线程的区别
-
进程是系统进行资源分配和调度一个独立单位, 最小的资源管理单位.
-
线程是进程的一个实体, 是CPU调度和分派的基本单位, 它是比进程更小的能独立运行的基本单位, 最小的CPU执行单元
主要区别 : 进程之间有不同的代码和数据空间, 而多个线程则共享数据空间, 每个线程有自己的执行栈和程序计数器为其执行上下文.
- 地址空间和其他资源 : 进程间相互独立, 同一进程的各个线程间共享. 某进程内的线程在其他进程不可见
- 通信 : 进程间通信IPC, 线程间可以直接读写进程数据段(如全局变量)来进行通信, 但需要同步或互斥的辅助来保证数据的一致性
- 调度和切换 : 线程更为轻量, 线程上下文切换比进程上下文切换要快的多
- 在多线程OS中, 进程不是一个可执行的实体
2.进程间通信方式
- 管道(pipe) : 管道是一种半双工的通信方式, 数据只能单向流动, 而且只能在具有亲缘关系的进程之间使用. 进程的亲缘关系通常是指父子进程关系.
- 有名管道(named pipe) : 有名管道也是半双工的通信方式, 但是它允许无亲缘关系进程间得的通信
- 信号量(semophore) : 信号量是一个计数器, 可以用来控制多个进程对共享资源的访问. 它常作为一种锁机制, 防止某进程正在访问共享资源时, 其他进程也访问该资源. 因此, 主要作为进程间以及同一进程内不同线程之