进程和线程的定义、区别与联系

1、进程

进程:指在系统中能独立运行并做为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。

    注意,进程通常有三个状态:就绪状态、执行状态和等待状态【或称阻塞状态】;进程只能由父进程创建,系统中全部的进程造成一种进程树的层次体系;挂起命令可由进程本身和其余进程发出,可是解除挂起命令只能由其余进程发出。

编程

进程控制块(PCB):PCB不但能够记录进程的属性信息,以便操做系统对进程进行控制和管理,并且PCB标志着进程的存在,操做系统根据系统中是否有该进程的进程控制块PCB而知道该进程存在与否。系统创建进程的同时就创建该进程的PCB,在撤销一个进程时,也就撤销其PCB,故进程的PCB对进程来讲是它存在的具体的物理标志和体现。通常PCB包括如下三类信息:进程标识信息;处理器状态信息;进程控制信息。多线程

    由程序段、相关的数据段和PCB三部分构成了进程实体(又称进程印像),通常,咱们把进程实体就简称为进程。

进程的特征:
1.动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的。
2.并发性:任何进程均可以同其余进程一块儿并发执行。
3.独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。
4.异步性:因为进程间的相互制约,使进程具备执行的间断性,即进程按各自独立的、不可预知的速度向前推动。


2、线程


线程:线程是进程中的一个实体,做为系统调度和分派的基本单位。Linux下的线程看做轻量级进程。


线程的性质:
1.线程是进程内的一个相对独立的可执行的单元。若把进程称为任务的话,那么线程则是应用中的一个子任务的执行。
2.因为线程是被调度的基本单元,而进程不是调度单元。因此,每一个进程在建立时,至少须要同时为该进程建立一个线程。即进程中至少要有一个或一个以上的线程,不然该进程没法被调度执行。
3.进程是被分给并拥有资源的基本单元。同一进程内的多个线程共享该进程的资源,但线程并不拥有资源,只是使用他们。
4.线程是操做系统中基本调度单元,所以线程中应包含有调度所须要的必要信息,且在生命周期中有状态的变化。
5.因为共享资源【包括数据和文件】,因此线程间须要通讯和同步机制,且须要时线程能够建立其余线程,但线程间不存在父子关系。


多线程使用的情形:前台和后台工做状况;异步处理工做状况;须要加快执行速度状况;组织复杂工做的状况;同时有多个用户服务请求的状况等。
 
线程机制的优势:
多线程运行在同一个进程的相同的地址空间内,和采用多进程相比有如下优势:
1.建立和撤销线程的开销较之进程要少。建立线程时只须要创建线程控制表相应的表目,或有关队列,而建立进程时,要建立PCB表和初始化,进入有关进程队列,创建它的地址空间和所需资源等。
2.CPU在线程之间开关时的开销远比进程要少得多。因开关线程都在同一地址空间内,只须要修改线程控制表或队列,不涉及地址空间和其余工做。
3.线程机制也增长了通信的有效性。进程间的通信每每要求内核的参与,以提供通信机制和保护机制,而线程间的通信是在同一进程的地址空间内,共享主存和文件,无需内核参与。


3、进程和线程的区别


(1)调度:
        在传统的操做系统中,CPU调度和分派的基本单位是进程。而在引入线程的操做系统中,则把线程做为CPU调度和分派的基本单位,进程则做为资源拥有的基本单位,从而使传统进程的两个属性分开,线程编程轻装运行,这样能够显著地提升系统的并发性。同一进程中线程的切换不会引发进程切换,从而避免了昂贵的系统调用,可是在由一个进程中的线程切换到另外一进程中的线程,依然会引发进程切换。
 
(2)并发性:
      在引入线程的操做系统中,不只进程之间能够并发执行,并且在一个进程中的多个线程之间也能够并发执行,于是使操做系统具备更好的并发性,从而更有效地提升系统资源和系统的吞吐量。例如,在一个为引入线程的单CPU操做系统中,若仅设置一个文件服务进程,当它因为某种缘由被封锁时,便没有其余的文件服务进程来提供服务。在引入线程的操做系统中,能够在一个文件服务进程设置多个服务线程。当第一个线程等待时,文件服务进程中的第二个线程能够继续运行;当第二个线程封锁时,第三个线程能够继续执行,从而显著地提升了文件服务的质量以及系统的吞吐量。


(3)拥有资源:
      不管是引入了线程的操做系统,仍是传统的操做系统,进程都是拥有系统资源的一个独立单位,他能够拥有本身的资源。通常地说,线程本身不能拥有资源(也有一点必不可少的资源),但它能够访问其隶属进程的资源,亦即一个进程的代码段、数据段以及系统资源(如已打开的文件、I/O设备等),可供同一个进程的其余全部线程共享。


(4)独立性:
        在同一进程中的不一样线程之间的独立性要比不一样进程之间的独立性低得多。这是由于并发

为防止进程之间彼此干扰和破坏,每一个进程都拥有一个独立的地址空间和其它资源,除了共享全局变量外,不容许其它进程的访问。可是同一进程中的不一样线程每每是为了提升并发性以及进行相互之间的合做而建立的,它们共享进程的内存地址空间和资源,如每一个线程均可以访问它们所属进程地址空间中的全部地址,如一个线程的堆栈能够被其它线程读、写,甚至彻底清除。异步

 

(5)系统开销:高并发

       因为在建立或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O设备等。所以,操做系统为此所付出的开销将显著地大于在建立或撤消线程时的开销。相似的,在进程切换时,涉及到整个当前进程CPU环境的保存环境的设置以及新被调度运行的CPU环境的设置,而线程切换只需保存和设置少许的寄存器的内容,并不涉及存储器管理方面的操做,可见,进程切换的开销也远大于线程切换的开销。此外,因为同一进程中的多个线程具备相同的地址空间,导致他们之间的同步和通讯的实现也变得比较容易。在有的系统中,现成的切换、同步、和通讯都无需操做系统内核的干预。操作系统

 

(6)支持多处理机系统:
       在多处理机系统中,对于传统的进程,即单线程进程,无论有多少处理机,该进程只能运行在一个处理机上。但对于多线程进程,就能够将一个进程中的多个线程分配到多个处理机上,使它们并行执行,这无疑将加速进程的完成。所以,现代处理机OS都无一例外地引入了多线程。线程

相关文章
相关标签/搜索