操作系统

187 阅读1分钟

进程与线程的区别

进程是系统进行资源分配和调度的基本单位;线程是CPU调度和分派的基本单位。

进程是拥有系统资源的一个独立单位;而线程自己基本不拥有系统资源,和其他线程共享本进程的相关资源如内存,I/O,cpu等。

进程有自己独立的地址空间,线程共享所属进程的地址空间 。

线程依赖于进程存在,一个进程至少有一个线程。

在进程切换时,涉及到整个当前进程CPU环境的设置以及新被调度运行的进程CPU环境的设置;而线程切换只需保存和设置少量的寄存器的内容,并不涉及存储器管理方面的操作。可见进程切换的开销远大于线程切换的开销。

线程之间的通信更方便,同一进程下的线程共享全局变量等数据,而进程之间的通信需要以进程间通信(IPC)的方式进行。

多线程程序只要有一个线程崩溃,整个程序就崩溃了;但多进程程序中一个进程崩溃不会对其他进程造成影响,因为进程有自己的独立地址空间。

进程间通信

1. 管道

2 有名管道

3 信号4 消息队列

5 共享内存

6 信号量

7 套接字 Socket