进程:
进程是程序的一次执行过程,是程序在执行过程中的分配和管理资源的基本单位,每个进程都有自己的地址空间,线程至少有 5 种状态:初始态、执行态、等待态、就绪态、终止态。
线程:
线程是CPU调度和分派的基本单位,它可以和同一进程下的其他线程共享全部资源
两者联系:
线程是进程中的一部分,一个进程可以有多个线程,但线程只能存在于一个进程中。
两者区别:
- 根本区别:进程是操作系统资源调度的基本单位,线程是任务的调度执行的基本单位
- 开销方面:进程都有自己的独立数据空间,程序之间的切换开销大;线程也有自己的运行栈和程序计数器,线程间的切换开销较小。
- 共享空间:进程拥有各自独立的地址空间、资源,所以共享复杂,需要用IPC(Inter-Process Communication,进程间通信),但是同步简单。而线程共享所属进程的资源,因此共享简单,但是同步复杂,需要用加锁等措施。
设计线程的原因:
操作系统模型中,进程有两个功能:
1、任务的调度执行基本单位
2、资源的所有权
线程的出现就是将这两个功能分离开来了:thread 执行任务的调度和执行 ; process 资源所有权
这样的好处是:
操作系统中有两个重要概念:并发和隔离
并发:提高硬件利用率,进程的上下文切换比线程的上下文切换效率低,所以线程可以提高并发的效率
隔离:计算机的资源是共享的,当程序发生奔溃时,需要保证这些资源要被回收,进程的资源是独立的,奔溃时不会影响其他程 序的进行,线程资源是共享的,奔溃时整个进程也会奔溃
线程和并发有关系,进程和隔离有关系