os-进程线程关系及区别
关系&区别
进程(process)是资源分配的最小单位,有自己独立的地址空间,单个进程的崩溃不会影响其它进程;
线程(thread)是处理器调度的最小单位,共享进程空间,也有自己的独立内存(PC、栈、栈指针等空间),单个线程的崩溃会导致整个进程的崩溃,影响其它的线程;
对于一些要求同时进行且又要共享某些变量的并发操作,只能用线程,不能用进程。
一进程里至少有一个线程。
通俗的讲 “如果进程是工厂,线程就是工人”
优缺点
- 地址空间和其它资源
- 进程间相互独立,同一进程的各线程间共享。
- 某进程内的线程在其它进程不可见。
- 通信:进程间通信IPC
- 线程间可以直接读写进程数据段(如全局变量)来进行通信
- 进程同步和互斥需要辅助,以保证数据的一致性。
- 调度和切换
- 线程上下文切换比进程上下文切换要快得多。
- 多线程OS中
- 进程不是一个可执行的实体。