收藏 分享(赏)

第2章进程管理(part8).ppt

上传人:fmgc7290 文档编号:8697317 上传时间:2019-07-08 格式:PPT 页数:29 大小:1.23MB
下载 相关 举报
第2章进程管理(part8).ppt_第1页
第1页 / 共29页
第2章进程管理(part8).ppt_第2页
第2页 / 共29页
第2章进程管理(part8).ppt_第3页
第3页 / 共29页
第2章进程管理(part8).ppt_第4页
第4页 / 共29页
第2章进程管理(part8).ppt_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、1,第二章 进程管理,2.1 进程的基本概念 2.2 进程控制 2.3 进程同步 2.4 经典进程的同步问题 2.5.4 管程机制 2.5 进程通信 2.6 线程,2,2.6 线 程,2.6.1 线程的基本概念,1. 为什么引入线程? 引入进程的目的:使多个程序能并发执行,提高资源利用率和系统吞吐量。,进程的基本属性: 进程是一个可拥有资源的独立单位 进程同时又是一个可独立调度和分派的基本单位 系统进行的其它操作:创建进程;撤销进程;进程切换 将进程的两个基本属性分开:如果作为调度和分派的基本单位,那么就不同时作为拥有资源的单位,以“轻装上阵”; 引入线程:轻型实体,独立调度和分派的基本单位。

2、,由于进程是一个资源拥有者,因而在进程的创建、撤销和切换中,系统必须为之付出较大的时空开销。,3,2. 线程是什么? 线程:是进程的一条执行路径。,线程和线程的关系:共享:同一进程中的各个线程共享其所附属的进程的所有的资源,包括打开的文件、页表(因此也就共享整个用户态地址空间)、信号标识及动态分配的内存等等。独立:它包含独立的堆栈和CPU寄存器状态。并发:同一进程中的多个线程之间、不同进程中的线程之间都可以并发。,线程和进程的关系:线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一物理内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。,2.6.1 线程的基本概念,

3、4,线 程 模 型,第一列为进程中所有线程共享的内容。 第二列为每个线程私有的内容。,5,2.6.1 线程的基本概念,3. 线程的状态 状态参数:OS中可用线程标识符和一组状态参数进行描述 寄存器状态 堆栈 线程运行状态 优先级 线程专有寄存器用于保存线程自己的局部变量拷贝 信号屏蔽,线程的状态,状态之间的转换 线程切换开销小,6,线程的属性,线程具有如下属性: 线程有线程控制表TCB。每个线程都有一张线程控制表,表中记录了该线程的标识符、线程执行时的寄存器和栈等现场状态信息。 线程共享所属进程的资源。同一进程中的各个线程共享分配给进程的全部资源,例如,主存地址空间。 线程是处理器的独立调度单

4、位,多个线程可以并发执行。 线程具有动态性。一个线程被创建后便开始了它的生命周期,直至终止。,7,8,2.6.1 线程的基本概念,4. 引入线程带来的好处 减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性。 提高进程自身的执行速度 将进程分解为多个线程可以有效利用多处理机和多核计算机,例如:具有下述四条语句的程序段S1: a:=x+2 S2: b:=y+4 S3: c:=a+bS4: d:=c+b,9,5. 线程的创建和终止 创建:在多线程OS中,应用程序启动时,通常只有一个线程(初始化线程)在执行,它根据需要可创建若干线程。创建新线程时,需要利用线程创建函数(或系统调用),并提供

5、相应参数。线程创建函数执行完后,返回一个线程标识符供以后使用。,2.6.1 线程的基本概念,10,2.6.1 线程的基本概念,6. 多线程OS中线程与进程的比较,P75 进程仍然具有与执行相关的状态; 对进程所施加的与进程状态有关的操作,也对其线程起作用。,进程中不同的线程并没有像不同的进程那么独立。所有的线程严格地使用同一地址空间,也就是说它们共享相同的全局变量。 由于每个线程都可以访问进程地址空间中的所有内存地址,因此,一个线程可以读、写甚或清除掉另一个线程的堆栈。线程间是没有保护的。,11,2.6.2 线程间的同步和通信,1. 互斥锁Lock(); Unlock() 2. 条件变量 3.

6、 信号量机制 私有信号量:实现同一进程内的各线程间的同步;存放在应用程序的地址空间;OS并不知道它的存在。 公用信号量:实现不同进程间或不同进程的线程间的同步;存放在受保护的系统存储区;OS对它进行管理。,12,2.6.2 线程间的同步和通信,互斥锁:是一种比较简单的同步机制,它有两种状态,即开锁和关锁状态。 对互斥锁的操作: 关锁命令,lock(L); 开锁命令,unlock(L)。 适用情况:由于操作互斥锁的时间和空间的开销都较少,因而它适合于频繁使用的共享数据和程序段。 实施过程:为共享数据设一把互斥锁L。每当线程去访问共享数据时,都先调用关锁命令lock(L);当它操作完共享数据时,再

7、调用开锁命令。 缺点:容易引发死锁。,互斥锁,13,条件变量,每一个条件变量通常都与一个互斥锁一起使用,亦即,在创建一个互斥锁时便联系着一个条件变量。单纯的互斥锁用于短期锁定,主要是用来保证对临界区的互斥进入。而条件变量则用于线程的长期等待, 直至所等待的资源成为可用的。,14,下面给出了对上述资源的申请(左半部分)和释放(右半部分)操作的描述。,Lock mutex Lock mutexcheck data structures; mark resource as free;while(resource busy) unlock mutex;wait(condition variable);

8、 wakeup(condition variable);mark resource as busy;unlock mutex;,首先对mutex执行关锁操作,成功便进入临界区,然后查找用于描述资源状态的数据结构,以了解资源的情况,只要发现所需资源R正处于忙碌状态,线程便转为等待状态, 并对mutex执行开锁操作后,等待该资源被释放,若资源处于空闲状态,表明线程可以使用该资源,于是将该资源设置为忙碌状态,再对mutex执行开锁操作。,15,信号量机制,(1) 私用信号量(private samephore)。 当某线程需利用信号量来实现同一进程中各线程之间的同步时,可调用创建信号量的命令来创建一

9、私用信号量,其数据结构是存放在应用程序的地址空间中。私用信号量属于特定的进程所有,OS并不知道私用信号量的存在,因此,一旦发生私用信号量的占用者异常结束或正常结束,但并未释放该信号量所占有空间的情况时,系统将无法使它恢复为0(空), 也不能将它传送给下一个请求它的线程。,(2) 公用信号量(public semaphort)。 公用信号量是为实现不同进程间或不同进程中各线程之间的同步而设置的。由于它有着一个公开的名字供所有的进程使用,故而把它称为公用信号量。其数据结构是存放在受保护的系统存储区中,由OS为它分配空间并进行管理,故也称为系统信号量。如果信号量的占有者在结束时未释放该公用信号量,则

10、OS会自动将该信号量空间回收,并通知下一进程。可见,公用信号量是一种比较安全的同步机制。,16,2.6.3 内核支持线程和用户级线程,在操作系统中,系统能否感知到线程的存在呢?,这个问题涉及到将线程放在用户空间还是放在系统空间进行管理或者是混合存放。据此线程的实现有三种主要的类型:用户级线程、内核级线程以及混合型线程。,17,1. 内核支持线程(Kernel-Supported Threads,KST)依赖于OS核心,在内核空间实现。Windows NT和OS/2支持内核线程。优点: 在多处理器系统中,内核能够同时调度同一进程中多个线程并行执行。 一个线程发起系统调用而阻塞,不会影响该进程其它

11、线程的运行。 时间片分配给线程,所以多线程的进程获得更多CPU时间。 缺点: 线程切换需要从用户态转到内核态进行,系统开销较大。 整个系统中内核支持线程不宜过多,2.6.3 内核支持线程和用户级线程,18,由内核管理的线程,在内核中实现线程,19,2. 用户级线程(User-level Threads,ULT)不依赖于OS核心,进程利用线程库提供的函数来控制用户线程,实现线程的创建、同步、调度和管理线程。如:数据库系统informix,图形处理PageMaker。 优点: 线程的维护由应用进程完成,内核不了解用户级线程的存在。 可以在不支持线程机制的操作系统上实现。 调度、切换由应用软件内部进

12、行,通常采用简单的规则,也无需用户态/核心态切换,所以速度特别快。 缺点: 一个线程发起系统调用而阻塞,则整个进程将等待。 时间片分配给进程,线程多则每个线程就慢。,2.6.3 内核支持线程和用户级线程,20,用户级的线程包,21,混合实现,多个用户线程在一个内核线程上,22,线程考研题:,在支持多线程的系统中,进程P创建的若干个线程不能共享的是 A.进程P的代码段 B.进程P中打开的文件 C.进程P的全局变量 D.进程P中某线程的栈指针,23,2009年为9分,2010年为6分, 2011年为12分,24,睡眠的理发师问题,理发店里有一位理发师、一把理发椅和n把椅子供等候的顾客坐。如果没有顾

13、客,理发师便在理发椅上睡觉。 当一个顾客到来时,他必须先叫醒理发师,如果理发师正在理发时有顾客到来,他们就坐下来(如果有空椅子)或者离开(如果椅子坐满了)。 这里的问题是为理发师和顾客各编写一段程序来描述他们行为,要求不能带有竞争条件。 该问题类似于许多排队情形,例如多人技术支持系统(multiperson helpdesk)用计算机处理的呼叫等候系统来支持有限数目的电话呼入。,25,睡眠的理发师问题,睡眠的理发师问题,理发师问题的一种解法(1/2),27,睡眠的理发师问题,理发师问题的一种解法(2/2),28,睡眠的理发师问题,解法使用3个信号量:customers用来统计等候的顾客数;ba

14、rbers为正在等候顾客的理发师数,为0或1;mutex用于互斥。我们还需要一个变量waiting,同样用于统计等候的顾客数,它实际上是customers的一份拷贝。之所以使用waiting是因为无法读取信号量的当前值。在该解法中,进入理发店顾客必须先数一数等候的顾客数,如果少于椅子数,留下来;否则离开。 理发师早晨开始工作时,他执行例程barber,这将导致他阻塞在信号量customers其初值为0。然后他将去睡觉,一直睡到第一个顾客出现。,29,睡眠的理发师问题,当一个顾客到来时,他执行过程customer,首先获取信号量mutex以进入临界区。如果马上又来了另一位顾客,他只能等到第一位释放了mutex后才能做别的事。顾客随后检查等候的顾客是否少于椅子数,如果不是,他就释放mutex,并且不理发就离开。 如果有椅子可坐,他就给整型变量waiting加1,随后对信号量customers执行up,因而唤醒理发师。此时,顾客和理发师都处于清醒状态。当顾客释放mutex时,理发师获取mutex,打扫一下然后开始理发。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报