进程与线程的区别

什么是进程?什么是线程?

进程

(1)概念:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。

可以将其看作为一段程序执行的过程

如在Windows系统中,一个可执行的.exe文件就是一个进程

 

(2)进程在程序执行的过程中,状态会发生改变。

新的(new):进程正在创建

运行(running):指令正在执行

等待(waiting):进程等待发生某个事件,(如I/O完成或收到信号)

就绪(ready):进程等待分配处理器

终止(terminated):程序已经执行完成

  

 

 线程

(1)概念:是操作系统能够进行运算调度的最小单位,一个进程可以有多个线程,并行执行不同的任务。

(2)特点:

1)轻型实体

线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。线程的实体包括程序、数据和TCB。线程是动态概念,它的动态特性由线程控制块TCB(Thread Control Block)描述 

2)独立调度和分派的基本单位。
在多线程OS中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。
3)可并发执行。
在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工作的能力。
4)共享进程资源。
在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的地址空间(进程的地址空间),这意味着,线程可以访问该地址空间的每一个虚地址
 

两者之间的区别

1)地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
2)通信:进程通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
3)调度和切换:线程上下文切换比进程上下文切换要快得多。
4)在多线程OS中,进程不是一个可执行的实体。
5)进程的创建/销毁/调度开销大,线程的创建/销毁/调度开销相对较少
6)多个进程同时执行时,如果一个进程崩溃,一般不会影响其他进程,而同一进程内的多个线程之间,如果一个线程奔溃,很可能使整个进程崩溃。

 

posted on 2022-10-19 16:41  zygf  阅读(63)  评论(0)    收藏  举报