第2章 进程与线程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

跳转到第一页第2章进程管理●进程的引入●进程的状态及其组成控制●线程●进程控制本章要点跳转到第一页程序的顺序执行特点●顺序性:处理机的操作严格按规定顺序执行●封闭性:程序执行时,独占系统资源●可再现性:当初始条件相同时,程序多次执行的结果相同P1P2P3P1:a=x+yP2:b=a-5P3:c=b+1●2.1进程的引入跳转到第一页P1P2P3P4程序的并发执行P1:a=5P2:b=6P3:c=a+bP4:d=c+1特点●间断性:程序在并发执行时,形成了相互制约关系。相互制约将导致并发程序具有“执行—暂停—执行”这种间断性的活动规律●失去封闭性:系统中的资源供多个程序共享,致使程序的运行失去了封闭性●失去可再现性:跳转到第一页程序并发执行的条件BernsteinBernstein条件读集:R(Pi)={a1,a2,……,am}程序Pi执行期间参考的变量集合写集:W(Pi)={b1,b2,……,bm}程序Pi执行期间改变的变量集合两个进程P1,P2若满足:R(P1)∩W(P2)∪R(P2)∩W(P1)∪W(P1)∩W(P2)={}则P1,P2并发执行,且具有可再现性。P1:a=5P2:b=6P3:c=a+bP4:d=c+1P1、P2可以并发执行吗?P3、P4可以并发执行呢?问题?P1P2P3P4跳转到第一页P1:a=5P2:b=6R(P1)={}W(P1)={a}R(P2)={}W(P2)={b}R(P1)∩W(P2)={}R(P2)∩W(P1)={}W(P1)∩W(P2)={}R(P1)∩W(P2)∪R(P2)∩W(P1)∪W(P1)∩W(P2)={}P1、P2可以并发执行Bernstein条件——例1跳转到第一页Bernstein条件——例2P3:c=a+bP4:d=c+1R(P3)={a,b}W(P3)={c}R(P4)={c}W(P4)={d}R(P3)∩W(P4)={}R(P4)∩W(P3)={c}R(P3)∩W(P4)∪R(P4)∩W(P3)∪W(P3)∩W(P4)={c}P3、P4不能并发执行跳转到第一页●可并发执行的程序在一个数据集合上的执行过程进程与程序的关系进程程序●动态的静态的●并发的顺序●暂时的永久的●数据结构=程序+数据+PCB●程序与进程不是一一对应关系实质进程的定义跳转到第一页运行就绪阻塞时间片用完进程调度请求I/O或等待某事件I/O完成或事件完成进程状态转换图●2.2进程的状态及其组成跳转到第一页五种状态的进程状态转换图运行就绪阻塞时间片用完进程调度请求I/O或等待某事件I/O完成或事件完成退出创建接纳完成跳转到第一页运行就绪阻塞时间片用完进程调度请求I/O或等待某事件I/O完成或事件完成退出创建接纳完成阻塞挂起激活挂起就绪挂起挂起激活挂起I/O完成或事件完成双挂起状态的进程状态转换图跳转到第一页进程控制块PCB●引入PCB的作用:就是使程序能成为独立运行的单位,并可和其他进程并发执行。进程的组成PCB的作用●进程控制块PCB●程序段●数据段●堆栈PCB是进程实体的一部分,是OS中最重要的数据结构跳转到第一页●进程描述信息●进程名●进程标识符●用户名●处理机状态信息●通用寄存器●指令计数器●程序状态字寄存器●栈指针●进程调度信息●进程状态●进程优先级●运行统计信息。●进程阻塞原因。●进程控制和资源占有量信息●程序入口地址●程序的外存地址●进程同步及通信机制●资源占有信息●链接指针进程控制块PCB的内容跳转到第一页进程控制块PCB的组织●链接方式运行队列指针就绪队列指针阻塞队列1指针PCBPCBPCBPCBPCBPCB0空闲队列指针PCB阻塞队列2指针PCBPCBPCB0PCBPCBPCB0PCBPCB0PCB0PCB跳转到第一页●具有较高的特权,能执行一切命令,访问所有寄存器和存储区。●操作系统内核2.3进程控制核心态用户态●具有较低特权,只能执行规定的命令,访问指定的寄存器和存储区。跳转到第一页●硬件的第一次延伸。●系统将一些与硬件紧密相关的模块放在内核●中断处理●时钟管理●内核在执行某些基本操作时,往往是利用原语操作实现的。内核与原语内核原语●原语由若干条指令构成、用于完成一定功能的过程。●原语是“原子操作”。即一个操作中的所有动作,要么全做,要么全不做。换言之,原子操作是一个不可分割的操作。跳转到第一页PP1P2P11P12P13P21P22P121P122进程的创建与撤消进程家族树跳转到第一页●用户登录●新作业进入系统●提供服务●应用请求进程创建引起进程创建的事件创建原语要做的工作●申请空白PCB●为进程分配资源●初始化PCB●初始化进程描述信息●初始化处理机状态信息●初始化进程控制信息●将新进程插入就绪队列跳转到第一页进程的撤消●进程正常结束●进程异常结束●外界干预引起进程撤消的事件撤消原语要做的工作●查找撤消进程的PCB●若进程处于执行状态,终止之,并进行进程调度●若有子孙,予以终止●归还资源●从所在队列移出跳转到第一页进程的阻塞与唤醒●请求系统服务●启动某种操作●数据尚未到达●无新工作可做引起进程阻塞的事件阻塞原语要做的工作●停止进程的执行●将进程插入阻塞队列,改变进程在PCB中的状态●重新调度唤醒原语要做的工作●将进程从阻塞队列解下●将进程插入就绪队列●改变进程在PCB中的状态跳转到第一页●检查被挂起进程的状态●如进程处于就绪状态,将进程从就绪状态变为就绪挂起状态●如进程处于阻塞状态,将进程从阻塞状态变为阻塞挂起状态●如进程正在运行,将进程变为就绪挂起状态,并重新调度●检查被激活进程的状态●如进程处于就绪挂起状态,将进程从就绪挂起状态变为就绪状态●如进程处于阻塞挂起状态,将进程从阻塞挂起状态变为阻塞状态●若系统为抢占式系统,则进行进程调度挂起原语要做的工作激活原语要做的工作进程的挂起与激活跳转到第一页由于进程是资源拥有者,因而在进程的创建、撤消和切换中系统必须为之付出较大的时间、空间开销。因此,系统中所设置的进程的数目不宜过多,进程切换的频率不宜过高。这就限制了进程并发程度的提高。●2.4线程线程的引入进程有两个基本属性●进程是拥有资源的独立单位●进程是独立调度和分派的基本单位跳转到第一页单进程单线程单进程多线程多进程每个进程只有一个线程多进程每个进程有多个线程进程与线程的关系操作系统中的进程和线程可以设计为以上四种跳转到第一页线程是进程中的一个实体,是系统独立调度和分派的基本单位线程的定义线程的定义进程的属性之一跳转到第一页进程和线程比较进程控制块用户地址空间用户堆栈内核堆栈单线程进程模型进程控制块用户地址空间用户堆栈内核堆栈多线程进程模型用户堆栈内核堆栈线程控制块线程控制块线程线程进程和线程的比较●进程是资源的拥有者●线程不拥有资源,只有TCB及堆栈跳转到第一页●调度线程调度快,需要空间小。进程因拥有资源,调度时因负担过重而缓慢。●并发性在引入线程的操作系统中,不仅进程之间可以并发执行,一个进程中的多个线程之间亦可并发执行。●拥有资源进程是资源的拥有者●系统开销进程切换的开销远远大于线程切换的开销,线程的切换省去了资源的回收。进程和线程比较跳转到第一页线程的实现用户级线程内核级线程组合的方法●线程的创建、撤消和切换,都不利用系统调用来实现。线程与内核无关,内核也不知道线程的存在●依赖于内核,线程的创建、撤消和切换都由内核实现。在内核中有线程控制块(TCB),内核根据TCB感知线程的存在,并对线程进行控制●由内核支持的用户线程。一个进程可以有一个或多个轻量级线程,每个轻量级线程由一个单独的内核线程来支持跳转到第一页用户级线程与内核级线程线程库用户空间内核空间进程用户级线程内核空间用户空间进程内核级线程(a)用户级线程(b)内核级线程通过API使用线程跳转到第一页用户级线程状态与进程状态的关系运行就绪阻塞运行就绪阻塞运行就绪阻塞线程1线程2进程A(a)运行就绪阻塞运行就绪阻塞运行就绪阻塞线程1线程2进程A(b)运行就绪阻塞运行就绪阻塞运行就绪阻塞线程1线程2进程A(c)运行就绪阻塞运行就绪阻塞运行就绪阻塞线程1线程2进程A(d)下面的例子说明线程调度和进程调度的关系。假设进程A有两个用户级线程:线程1和线程2。其中线程2处于运行状态,由于进程A的某段程序正在运行,因此进程A也处于运行状态。不同的是进程A的运行是内核感知的,而内核不知道进程的两个线程的存在。进程A和进程A的两个线程的状态如图(a)所示,当线程2继续执行时,可能会发生以下几种情况:(1)线程2中执行的程序因需要I/O而进行系统调用,这将导致将控制转移给内核,内核启动I/O操作,并将进程A阻塞,内核将调用另一个进程运行。在此期间,对于线程库管理的线程,即进程A的线程2仍处于运行状态。值得注意的是,线程2的运行状态并不是真正意义上的被处理机执行,而是线程库认为它处于运行状态图(b)。(2)时钟中断把控制权传递给内核,内核确定当前正在运行的进程A已经用完了它的时间片,内核将进程A置于就绪状态,并切换另一个进程。此时,线程库管理的线程,即进程A的线程2仍处于运行状态,相应的状态见图(c)。(3)线程2运行到达某处,它需要进程A的线程1所执行的某些数据,线程2进入阻塞状态,线程1从就绪状态转换为运行状态,进程A自身仍处于运行状态中,相应的状态见图d)。在图(b)和图(c)所示的两种状态中,当内核把控制又重新切换给进程A时,进程A中的线程2会恢复执行。另外需要注意的是,执行线程库中的代码时可以被中断,可能由于线程所在进程A的时间片用完了,也可能由于被一个高优先级的线程所剥夺。在中断时,进程中的线程可能处于线程的切换过程中,即正在从一个线程切换到另一个线程。当该进程恢复执行时,完成线程的切换,并把控制权交给进程中的一个新选中的线程。跳转到第一页调度与切换速度用户级线程与内核级线程的比较系统调用线程执行时间用户级线程的切换,因发生在一个应用进程之间,因此不仅无须通过中断进入OS内核,而且切换的规则也比较简单。用户级线程比内核级线程切换速度快用户级线程在调用系统调用时,系统将看成是其所在进程的行为。而内核级线程的系统调用是以线程为单位。因此比较轻装。用户级线程不如内核级线程用户级线程不如内核级线程合理跳转到第一页内核空间用户空间内核级线程用户级线程LWP进程1进程2进程3在Solaris操作系统中,在用户级线程和内核级线程之间,定义了一种轻型进程(LightWeightProcess,LWP),每个LWP包含有自己的进程控制块,其中包括:进程的状态和寄存器数据等。在一个系统中的用户级线程的数量可能很多,为了节省系统开销,不可能设置太多的LWP,为了使每一个用户级线程都可以利用LWP与内核通信,可以使多个用户级线程多路复用一个LWP,但只有当前连接到LWP上的线程,才能与内核通信,其余线程或者阻塞或者等待LWP。每一个LWP都要连接到一个内核级线程上,这样,通过LWP可把用户级线程与内核级线程连接起来,用户级线程可通过LWP来访问内核,但内核所看到的是多个LWP而看不到用户级线程。亦即,由LWP实现了内核与用户级线程的隔离,从而使用户级线程与内核无关,而又能够访问内核。Solaris中的线程如图所示。其中进程1中有一个用户级线程且绑定在一个LWP上,这个LWP与一个内核级线程相连。进程2有三个用户级线程,其中有两个分别绑定在一个LWP上,这两个LWP又分别与一个内核级线程相连,另外一个用户级线程,因不需要与内核通信,因此不需要LWP的支持。进程3中有5个用户级线程,其中有三个多路复用两个LWP,这两个LWP分别与一个内核级线程相连,一个用户级线程不需要LWP与内核通信,另一个用户级线程单独使用一个LWP与内核通信。当用户级线程不需要与内核通信时,并不需要LWP,而需要通信时,便需要借助于LWP的帮助,而且每个需要通信的线程都需要一个LWP,每个LWP严格对应一个内核级线程。例如,在进程3中同时有3个用户级线程发出了对文件的读、写请求,这时就需要有3个LWP来予以

1 / 37
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功