进程与线程的定义、关系及区别

  • 格式:pdf
  • 大小:131.37 KB
  • 文档页数:3

进程与线程的定义、关系及区别

进程与线程的定义、关系及区别

⼀、进程的定义

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

进程⼀般有三个状态:就绪状态、执⾏状态和等待状态【或称阻塞状态】;进程只能由⽗进程建⽴,系统中所有的进程形成⼀种进程树的层

次体系;挂起命令可由进程⾃⼰和其他进程发出,但是解除挂起命令只能由其他进程发出。

进程控制块(PCB):PCB不但可以记录进程的属性信息,以便对进程进⾏控制和管理,⽽且PCB标志着进程的存在,操作系统根据系统

中是否有该进程的进程控制块PCB⽽知道该进程存在与否。系统建⽴进程的同时就建⽴该进程的PCB,在撤销⼀个进程时,也就撤销其

PCB,故进程的PCB对进程来说是它存在的具体的物理标志和体现。⼀般PCB包括以下三类信息:进程标识信息;处理器状态信息;进程

控制信息。

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

进程的特征:

1.动态性:进程的实质是程序的⼀次执⾏过程,进程是动态产⽣,动态消亡的。

2.并发性:任何进程都可以同其他进程⼀起并发执⾏。

3.独⽴性:进程是⼀个能独⽴运⾏的基本单位,同时也是系统分配资源和调度的独⽴单位。

4.异步性:由于进程间的相互制约,使进程具有执⾏的间断性,即进程按各⾃独⽴的、不可预知的速度向前推进。

⼆、线程的定义

线程:线程是进程中的⼀个实体,作为系统调度和分派的基本单位。

线程的性质:

1.线程是进程内的⼀个相对独⽴的可执⾏的单元。若把进程称为任务的话,那么线程则是应⽤中的⼀个⼦任务的执⾏。

2.由于线程是被调度的基本单元,⽽进程不是调度单元。所以,每个进程在创建时,⾄少需要同时为该进程创建⼀个线程。即进程中⾄少要

有⼀个或⼀个以上的线程,否则该进程⽆法被调度执⾏。

3.进程是被分给并拥有资源的基本单元。同⼀进程内的多个线程共享该进程的资源,但线程并不拥有资源,只是使⽤他们。

4.线程是操作系统中基本调度单元,因此线程中应包含有调度所需要的必要信息,且在⽣命周期中有状态的变化。

5.由于共享资源【包括数据和⽂件】,所以线程间需要通信和同步机制,且需要时线程可以创建其他线程,但线程间不存在⽗⼦关系。

多线程使⽤的情形:

前台和后台⼯作情况;

异步处理⼯作情况;

需要加快执⾏速度情况;

组织复杂⼯作的情况;

同时有多个⽤户服务请求的情况等。

线程机制的优点:

多线程运⾏在同⼀个进程的相同的地址空间内,和采⽤多进程相⽐有以下优点:

1.创建和撤销线程的开销较之进程要少。创建线程时只需要建⽴线程控制表相应的表⽬,或有关队列,⽽创建进程时,要创建PCB表和初始

化,进⼊有关进程队列,建⽴它的地址空间和所需资源等。2.CPU在线程之间开关时的开销远⽐进程要少得多。因开关线程都在同⼀地址空间内,只需要修改线程控制表或队列,不涉及地址空间和其

他⼯作。

3.线程机制也增加了通讯的有效性。进程间的通讯往往要求内核的参与,以提供通讯机制和保护机制,⽽线程间的通讯是在同⼀进程的地址

空间内,共享主存和⽂件,⽆需内核参与。

三、进程与线程之间的关系

从⼀定意义上讲,进程就是⼀个应⽤程序在处理机上的⼀次执⾏过程,它是⼀个动态的概念,⽽线程是进程中的⼀部分,进程包含多个线程

在运⾏。

在引⼊线程的操作系统中,通常都是把进程作为分配资源的基本单位,⽽把线程作为独⽴运⾏和独⽴调度的基本单位。由于线程⽐进程更

⼩,基本上不拥有系统资源,故对它的调度所付出的开销就会⼩得多,能更⾼效的提⾼系统内多个程序间并发执⾏的程度。

举例说明:

进程:北京地铁单位

线程:北京地铁1号线、2号线、5号线........15号线

北京地铁单位的所有地铁线路共享着北京坐地铁的所有客源(相当于进程中的资源,所以进程属于资源单位),⽽各线路负责将客源输送到指

定地点(执⾏操作,所以线程属于执⾏单位)。

四、进程与线程之间的区别

1、调度:

在传统的操作系统中,CPU调度和分派的基本单位是进程。⽽在引⼊线程的操作系统中,则把线程作为CPU调度和分派的基本单位,

进程则作为资源拥有的基本单位,从⽽使传统进程的两个属性分开,线程编程轻装运⾏,这样可以显著地提⾼系统的并发性。同⼀进程中线

程的切换不会引起进程切换,从⽽避免了昂贵的系统调⽤,但是在由⼀个进程中的线程切换到另⼀进程中的线程,依然会引起进程切换。

2、并发性:

在引⼊线程的操作系统中,不仅进程之间可以并发执⾏,⽽且在⼀个进程中的多个线程之间也可以并发执⾏,因⽽使操作系统具有更好

的并发性,从⽽更有效地提⾼系统资源和系统的吞吐量。例如,在⼀个为引⼊线程的单CPU操作系统中,若仅设置⼀个⽂件服务进程,当它

由于某种原因被封锁时,便没有其他的⽂件服务进程来提供服务。在引⼊线程的操作系统中,可以在⼀个⽂件服务进程设置多个服务线程。

当第⼀个线程等待时,⽂件服务进程中的第⼆个线程可以继续运⾏;当第⼆个线程封锁时,第三个线程可以继续执⾏,从⽽显著地提⾼了⽂

件服务的质量以及系统的吞吐量。

3、拥有资源:

不论是引⼊了线程的操作系统,还是传统的操作系统,进程都是拥有系统资源的⼀个独⽴单位,他可以拥有⾃⼰的资源。⼀般地说,线

程⾃⼰不能拥有资源(也有⼀点必不可少的资源),但它可以访问其⾪属进程的资源,亦即⼀个进程的代码段、数据段以及系统资源(如已

打开的⽂件、I/O设备等),可供同⼀个进程的其他所有线程共享。

4、独⽴性:

在同⼀进程中的不同线程之间的独⽴性要⽐不同进程之间的独⽴性低得多。这是因为为了防⽌进程之间彼此⼲扰和破坏,每个进程都

拥有⼀个独⽴的地址空间和其它资源,除了共享全局变量外,不允许其它进程的访问。但是同⼀进程中的不同线程往往是为了提⾼并发性以

及进⾏相互之间的合作⽽创建的,它们共享进程的内存地址空间和资源,如每个线程都可以访问它们所属进程地址空间中的所有地址,如⼀

个线程的堆栈可以被其它线程读、写,甚⾄完全清除。

5、系统开销:

由于在创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O设备等。因此,操作系统为此所付出的开销将显著地⼤于

在创建或撤消线程时的开销。在进程切换时,涉及到整个当前进程CPU环境的保存环境的设置以及新被调度运⾏的CPU环境的设置,⽽线

程切换只需保存和设置少量的寄存器的内容,并不涉及存储器管理⽅⾯的操作,可见,进程切换的开销也远⼤于线程切换的开销。此外,由

于同⼀进程中的多个线程具有相同的地址空间,致使他们之间的同步和通信的实现也变得⽐较容易。在有的系统中,现成的切换、同步、和

通信都⽆需操作系统内核的⼲预。

6、⽀持多处理机系统: 在多处理机系统中,对于传统的进程,即单线程进程,不管有多少处理机,该进程只能运⾏在⼀个处理机上。但对于多线程进程,就可

以将⼀个进程中的多个线程分配到多个处理机上,使它们并⾏执⾏,这⽆疑将加速进程的完成。因此,现代处理机OS都⽆⼀例外地引⼊了

多线程。

参考⽂档: