程序、进程与线程的联系与区别
程序:
定义:一组指令的有序结合
进程:
定义:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,它是系统资源分配和调度的一个独立单位。
状态:就绪状态、执行状态、等待状态(阻塞状态)
PCB:进程控制块,不但记录进程的属性信息,以便操作系统对进程进行控制和管理,而且PCB标志着进程的存在,操作系统根据系统中是否有该进程的进
程控制块而确定该进程是否存在。包含的信息有进程标示信息、处理器状态信息、进程控制信息
特征:(1)动态性:进程的实质是程序的一次执行过程,进程是动态产生、动态消亡的
(2)并发性:任何进程都可以同其他进程一起并发执行
(3)独立性:进程是一个能独立运行的基本单位,同时也是系统资源分配和调度的独立单位
(4)异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
线程:
定义:线程是进程的一个实体,是CPU调度和分配的基本单位(在引入线程的操作系统中)
性质:线程基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器、一组寄存器和栈),
但是它可以与同属于一个进程的其它的线程
共享进程中所拥有的全部资源。
优点:(1)易于调度
(2)提高并发性
(3)开销小:创建线程比创建进程速度快,所需要的开销也更少。
(4)有利于发挥多处理器的功能:每个线程都可以在一个处理器上运行,从而是吸纳应用程序的并发。
(5)通讯有效性:进程间的通讯往往需要内核的参与,已提供通讯机制和保护机制,而线程间的通讯是在同一个进程的地址空间中,共享主存和文
件,无需内核的参与。
区别:
(1)在传统的操作系统中,进程是CPU和资源分配的基本单位,而在引入线程的操作系统中,进程是资源分配和调度的基本单位,而线程是CPU调度和分配的基本单位;
(2)一个线程必定属于且只能属于一个进程,而一个进程可以拥有多个线程并且至少拥有一个线程;
(3)不同的进程是相互独立的,而同属于一个进程的多个线程之间共享该进程的所有资源;
(4)进程是程序的一次执行,而线程是程序中一段程序片段的执行,是进程的一部分;
(5)创建和撤销进程开销大,创建和撤销线程开销小。线程间切换代价小,进程间切换代价大。
总结:简而言之,一个程序至少有一个进程,一个进程至少有一个线程。