Windows操作系统处理机管理上(1)_第1页
Windows操作系统处理机管理上(1)_第2页
Windows操作系统处理机管理上(1)_第3页
Windows操作系统处理机管理上(1)_第4页
Windows操作系统处理机管理上(1)_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 . 进程和进程控制进程和进程控制 线程线程 进程互斥和同步进程互斥和同步 进程间通信进程间通信 死锁问题死锁问题 处理器调度处理器调度 第三章第三章 处理机管理处理机管理( (上上) ) 2 . 进程和进程控制进程和进程控制 进程的定义和描述进程的定义和描述 进程的状态转换进程的状态转换 进程控制进程控制 Windows的进程管理的进程管理 3 . 进程的定义和描述进程的定义和描述 进程的定义进程的定义 一个具有一定独立功能的程序在一个数据集合上的一次动态执一个具有一定独立功能的程序在一个数据集合上的一次动态执 行过程。行过程。 进程的特征进程的特征 动态性具有动态的地址空间动态性具有动态

2、的地址空间 独立性各进程的地址空间相互独立独立性各进程的地址空间相互独立 并发性宏观上各进程同时运行并发性宏观上各进程同时运行 结构化进程的地址空间是结构化的结构化进程的地址空间是结构化的 进程和进程控制进程和进程控制 4 . 进程与程序的区别进程与程序的区别 进程是动态的,程序是静态的进程是动态的,程序是静态的:程序是有序代码的集合;:程序是有序代码的集合; 进程是程序的执行。通常进程不可在计算机之间迁移;而进程是程序的执行。通常进程不可在计算机之间迁移;而 程序通常对应着文件,是静态的,可以复制。程序通常对应着文件,是静态的,可以复制。 进程是暂时的,程序的永久的进程是暂时的,程序的永久的

3、:进程是一个状态变化的过:进程是一个状态变化的过 程,程序可长久保存。程,程序可长久保存。 进程与程序的组成不同进程与程序的组成不同:进程的组成包括程序、数据和进:进程的组成包括程序、数据和进 程控制块(即进程状态信息)。程控制块(即进程状态信息)。 进程与程序的对应关系进程与程序的对应关系:通过多次执行,一个程序可对应:通过多次执行,一个程序可对应 多个进程;通过调用关系,一个进程可包括多个程序。多个进程;通过调用关系,一个进程可包括多个程序。 进程的定义和描述进程的定义和描述 进程和进程控制进程和进程控制 5 . 进程控制块进程控制块 每个进程在每个进程在OS中的登记表项(可能有总数目限制

4、),中的登记表项(可能有总数目限制),OS据此据此 对进程进行对进程进行控制和管理控制和管理(PCB中的内容会动态改变)中的内容会动态改变) 处于核心段处于核心段,通常不能由应用程序自身的代码来直接访问,通常不能由应用程序自身的代码来直接访问, 而要通过系统调用访问而要通过系统调用访问 进程控制块进程控制块(PCB, process control block)是由是由OS维护的维护的 用来记录进程相关信息的一个数据结构。用来记录进程相关信息的一个数据结构。 进程和进程控制进程和进程控制 进程的定义和描述进程的定义和描述 6 . 进程控制块的内容进程控制块的内容 进程描述信息进程描述信息: 进

5、程标识符进程标识符(process ID),唯一,通常是一个整数;,唯一,通常是一个整数; 进程名,通常基于可执行文件名;进程名,通常基于可执行文件名; 用户标识符用户标识符(user ID);进程组;进程组 (process group) 进程控制信息进程控制信息: 当前状态;当前状态; 优先级优先级(priority); 代码执行入口地址;代码执行入口地址; 程序的外存地址;程序的外存地址; 运行统计信息(执行时间、页面调度);运行统计信息(执行时间、页面调度); 阻塞原因阻塞原因 资源占用信息资源占用信息:虚拟地址空间的现状、打开文件列表:虚拟地址空间的现状、打开文件列表 CPU现场保护

6、结构现场保护结构:寄存器值(通用、程序计数器:寄存器值(通用、程序计数器PC、状态、状态 PSW,地址包括栈指针),地址包括栈指针) 进程和进程控制进程和进程控制 进程的定义和描述进程的定义和描述 7 . PCB的组织方式的组织方式 链表链表:同一状态的进程其:同一状态的进程其PCB成一链表,多个状态对应多个不同的链表。成一链表,多个状态对应多个不同的链表。 各状态的进程形成不同的链表:就绪链表、阻塞链表各状态的进程形成不同的链表:就绪链表、阻塞链表 索引表索引表:同一状态的进程归入一个:同一状态的进程归入一个index表(由表(由index指向指向PCB),多个状态),多个状态 对应多个不同

7、的对应多个不同的index表。表。 各状态的进程形成不同的索引表:就绪索引表、阻塞索引表各状态的进程形成不同的索引表:就绪索引表、阻塞索引表 PCB Table Ready Blocked PCB Table Index Table Ready Blocked 进程和进程控制进程和进程控制 进程的定义和描述进程的定义和描述 8 . 进程上下文(进程上下文(context) 用户级上下文用户级上下文:进程的用户地址空间(包括用户栈各层:进程的用户地址空间(包括用户栈各层 次),包括用户正文段、用户数据段和用户栈;次),包括用户正文段、用户数据段和用户栈; 寄存器级上下文寄存器级上下文:程序寄存器

8、、处理机状态寄存器、栈指:程序寄存器、处理机状态寄存器、栈指 针、通用寄存器的值;针、通用寄存器的值; 系统级上下文系统级上下文: 静态部分(静态部分(PCBPCB和资源表格)和资源表格) 动态部分:核心栈(核心过程的栈结构,不同进程在调用相动态部分:核心栈(核心过程的栈结构,不同进程在调用相 同核心过程时有不同核心栈)同核心过程时有不同核心栈) 进程上下文是对进程上下文是对进程执行活动全过程进程执行活动全过程的的静态描述静态描述。进。进 程上下文由进程的用户地址空间内容、硬件寄存器内程上下文由进程的用户地址空间内容、硬件寄存器内 容及与该进程相关的核心数据结构组成。容及与该进程相关的核心数据

9、结构组成。 进程和进程控制进程和进程控制 进程的定义和描述进程的定义和描述 9 . 五状态进程模型五状态进程模型 五状态进程模型五状态进程模型(状态转换状态转换) 进程的状态转换进程的状态转换 进程在从创建到终止的全过程中一直处于一个不断变化的过进程在从创建到终止的全过程中一直处于一个不断变化的过 程程, 为了刻画进程的这个变化过程,操作系统把进程分成若为了刻画进程的这个变化过程,操作系统把进程分成若 干种状态干种状态 进程和进程控制进程和进程控制 AdmitRunningNewExitReady Blocked Dispatch Timeout Event Wait Event Occurs

10、 Release Create 10 . 状态状态 新建状态新建状态(New):进程刚创建,但还不能运行进程刚创建,但还不能运行(一种可能的原因是一种可能的原因是OS对对 并发进程数的限制并发进程数的限制); OS在进程新建状态的工作在进程新建状态的工作:分配和建立分配和建立PCB表项、建立资源表格表项、建立资源表格 (如打开文件表)并分配资源,加载程序并建立地址空间表。(如打开文件表)并分配资源,加载程序并建立地址空间表。 结束状态结束状态(Exit):进程已结束运行进程已结束运行. 回收除回收除PCB之外的其他资源,并让其他进程从之外的其他资源,并让其他进程从PCB中收集有关信息中收集有关

11、信息 (如记帐,将退出码(如记帐,将退出码exit code传递给父进程)。传递给父进程)。 进程的状态转换进程的状态转换五状态进程模型五状态进程模型 进程和进程控制进程和进程控制 AdmitRunningNewExitReady Blocked Dispatch Timeout Event Wait Event Occurs Release Create 11 . 运行状态运行状态(Running):占用处理机资源并运行;处于此状态的进程的数目占用处理机资源并运行;处于此状态的进程的数目 小于等于小于等于CPU的数目。的数目。 在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自在没

12、有其他进程可以执行时(如所有进程都在阻塞状态),通常会自 动执行系统的动执行系统的idle进程(相当于空操作)。进程(相当于空操作)。 就绪状态就绪状态(Ready):进程已获得除处理机外的所需资源,等待分配处理机进程已获得除处理机外的所需资源,等待分配处理机 资源;只要分配资源;只要分配CPU就可执行。就可执行。 可以按可以按多个优先级多个优先级来划分队列,如:时间片用完来划分队列,如:时间片用完低优,低优,I/O完成完成 中优,页面调入完成中优,页面调入完成高优高优 阻塞状态阻塞状态(Blocked):由于进程等待某种条件(如由于进程等待某种条件(如I/O操作或进程同步),操作或进程同步)

13、, 在条件满足之前无法继续执行。在该事件发生前即使把处理机分配给在条件满足之前无法继续执行。在该事件发生前即使把处理机分配给 该进程,也无法运行。如:等待该进程,也无法运行。如:等待I/O操作的完成。操作的完成。 进程的状态转换进程的状态转换五状态进程模型五状态进程模型 进程和进程控制进程和进程控制 AdmitRunningNewExitReady Blocked Dispatch Timeout Event Wait Event Occurs Release Create 12 . 进程状态转换进程状态转换 创建创建(Create)新进程:新进程:创建一个新进程,以运行一个程序。创建一个新进

14、程,以运行一个程序。 提交提交(Admit):收容一个新进程,进入就绪状态。由于性能、内存、进程收容一个新进程,进入就绪状态。由于性能、内存、进程 总数等原因,系统会限制并发进程总数。总数等原因,系统会限制并发进程总数。 调度运行调度运行(Dispatch):从就绪进程表中选择一个进程,进入运行状态;从就绪进程表中选择一个进程,进入运行状态; 释放释放(Release):由于进程完成或失败而中止进程运行,进入结束状态;由于进程完成或失败而中止进程运行,进入结束状态; 运行到结束:运行到结束:分为正常退出分为正常退出Exit和异常退出和异常退出abort(执行超时或内存不够,(执行超时或内存不够

15、, 非法指令或地址,非法指令或地址,I/O失败,被其他进程所终止)失败,被其他进程所终止) 就绪或阻塞到结束:就绪或阻塞到结束:可能的原因有:父进程可在任何时间中止子进程;可能的原因有:父进程可在任何时间中止子进程; 进程的状态转换进程的状态转换五状态进程模型五状态进程模型 进程和进程控制进程和进程控制 AdmitRunningNewExitReady Blocked Dispatch Timeout Event Wait Event Occurs Release Create 13 . 超时(超时(Timeout):):由于用完由于用完时间片时间片或高或高优先进程优先进程就绪等导致进程暂停就

16、绪等导致进程暂停 运行;运行; 事件等待(事件等待(Event Wait):):进程要求的事件未出现而进入阻塞;进程要求的事件未出现而进入阻塞;可能的可能的 原因原因包括:申请系统服务或资源、通信、包括:申请系统服务或资源、通信、I/O操作等;操作等; 事件发生(事件发生(Event Occurs):):进程等待的事件发生;如:进程等待的事件发生;如:I/O操作完操作完 成、申请资源成功等;成、申请资源成功等; 进程的状态转换进程的状态转换五状态进程模型五状态进程模型 进程和进程控制进程和进程控制 AdmitRunningNewExitReady Blocked Dispatch Timeou

17、t Event Wait Event Occurs Release Create 14 . 五状态进程模型没有区分进程地址空间位于内存还是外存,而五状态进程模型没有区分进程地址空间位于内存还是外存,而 在操作系统中引入虚拟存储管理技术后,需要进一步区分进程在操作系统中引入虚拟存储管理技术后,需要进一步区分进程 的地址空间状态。的地址空间状态。 这个问题的出现是由于进程优先级的引入,这个问题的出现是由于进程优先级的引入, 一些低优先级进程可能等待较长时间,从而被对换至外存。这一些低优先级进程可能等待较长时间,从而被对换至外存。这 样做的目的是:样做的目的是: 提高处理机效率提高处理机效率:就绪进

18、程表为空时,有空闲的内存空间:就绪进程表为空时,有空闲的内存空间 来提交新进程,以提高处理机效率;来提交新进程,以提高处理机效率; 为运行进程提供足够内存为运行进程提供足够内存:资源紧张时,暂停某些进程,:资源紧张时,暂停某些进程, 如:如:CPU繁忙(或实时任务执行),内存紧张繁忙(或实时任务执行),内存紧张 用于调试用于调试:在调试时,挂起:在调试时,挂起被调试进程被调试进程(从而对其地址空(从而对其地址空 间进行读写)间进行读写) 挂起进程模型挂起进程模型进程的状态转换进程的状态转换 进程和进程控制进程和进程控制 15 . 单挂起进程模型单挂起进程模型 挂起进程模型挂起进程模型进程的状态

19、转换进程的状态转换 进程和进程控制进程和进程控制 AdmitRunningNewExitReady Blocked Dispatch Timeout Event Wait Event Occurs Release Blocked Suspend Suspend Activate 16 . 双挂起进程模型 挂起进程模型挂起进程模型进程的状态转换进程的状态转换 进程和进程控制进程和进程控制 Admit Running Ready Suspend ExitReady Blocked Dispatch Timeout Event Wait Event Occurs Release Blocked Su

20、spend Suspend New Event Occurs Activate Suspend Activate Admit Suspend 17 . 就绪状态就绪状态(Ready):进程在内存且可立即进入运行状态;进程在内存且可立即进入运行状态; 阻塞状态阻塞状态(Blocked):进程在内存并等待某事件的出现;进程在内存并等待某事件的出现; 阻塞挂起状态(阻塞挂起状态(Blocked, suspend):):进程在外存并等待某事件进程在外存并等待某事件 的出现;的出现; 就绪挂起状态(就绪挂起状态(Ready, suspend):):进程在外存,但只要进入内进程在外存,但只要进入内 存,即

21、可运行;存,即可运行; 挂起进程模型挂起进程模型进程的状态转换进程的状态转换 状态状态 进程和进程控制进程和进程控制 18 . 挂起(挂起(Suspend):):把一个进程从内存转到外存;可能有以下几种情况:把一个进程从内存转到外存;可能有以下几种情况: 阻塞到阻塞挂起:阻塞到阻塞挂起:没有进程处于没有进程处于就绪状态就绪状态或就绪进程要求更多内存资源时,或就绪进程要求更多内存资源时, 会进行这种转换,以提交新进程或运行就绪进程;会进行这种转换,以提交新进程或运行就绪进程; 就绪到就绪挂起:就绪到就绪挂起:当有当有高优先级阻塞高优先级阻塞(系统认为会很快就绪的)进程和低优(系统认为会很快就绪的

22、)进程和低优 先级就绪进程时,系统会选择挂起低优先级就绪进程;先级就绪进程时,系统会选择挂起低优先级就绪进程; 运行到就绪挂起:运行到就绪挂起:对对抢先式抢先式操作系统,当有操作系统,当有高优先级高优先级阻塞进程因事件出现而阻塞进程因事件出现而 进入就绪状态时,系统可能会把运行进程转到就绪挂起状态;进入就绪状态时,系统可能会把运行进程转到就绪挂起状态; 挂起进程模型挂起进程模型进程的状态转换进程的状态转换 状态转换状态转换 进程和进程控制进程和进程控制 Running Ready Suspend Ready Blocked Dispatch Timeout Event Wait Event O

23、ccurs Blocked Suspend Suspend Event Occurs Activate Suspend Activate Suspend 19 . 激活(激活(Activate):):把一个进程从外存转到内存;可能有以下几种情况:把一个进程从外存转到内存;可能有以下几种情况: 就绪挂起到就绪:没有就绪进程就绪挂起到就绪:没有就绪进程或或挂起就绪进程优先级高挂起就绪进程优先级高于就绪进程时,于就绪进程时, 会进行这种转换;会进行这种转换; 阻塞挂起到阻塞:阻塞挂起到阻塞:当一个进程当一个进程释放足够内存释放足够内存时,系统会把一个高优先级阻时,系统会把一个高优先级阻 塞挂起进程激

24、活塞挂起进程激活, 系统认为会很快出现所等待的事件;系统认为会很快出现所等待的事件; 挂起进程模型挂起进程模型进程的状态转换进程的状态转换 状态转换状态转换 进程和进程控制进程和进程控制 Running Ready Suspend Ready Blocked Dispatch Timeout Event Wait Event Occurs Blocked Suspend Suspend Event Occurs Activate Suspend Activate Suspend 20 . 事件发生(事件发生(Event Occurs):):进程等待的事件发生,可能的情况有:进程等待的事件发生,

25、可能的情况有: 阻塞到就绪:阻塞到就绪:针对内存进程的事件发生;针对内存进程的事件发生; 阻塞挂起到就绪挂起:阻塞挂起到就绪挂起:针对外存进程的事件发生;针对外存进程的事件发生; 挂起进程模型挂起进程模型进程的状态转换进程的状态转换 进程和进程控制进程和进程控制 状态转换状态转换 Running Ready Suspend Ready Blocked Dispatch Timeout Event Wait Event Occurs Blocked Suspend Suspend Event Occurs Activate Suspend Activate Suspend 21 . 收容收容(A

26、dmit):收容一个新进程,进入就绪状态或就绪挂起状态。进入就绪挂收容一个新进程,进入就绪状态或就绪挂起状态。进入就绪挂 起的原因是系统希望起的原因是系统希望保持一个大的就绪进程表保持一个大的就绪进程表(挂起和非挂起);(挂起和非挂起); 挂起进程模型挂起进程模型进程的状态转换进程的状态转换 进程和进程控制进程和进程控制 状态转换状态转换 Admit Running Ready Suspend Ready Dispatch Timeout New Suspend Activate Admit Suspend 22 . 双挂起进程模型 挂起进程模型挂起进程模型进程的状态转换进程的状态转换 进程和

27、进程控制进程和进程控制 Admit Running Ready Suspend ExitReady Blocked Dispatch Timeout Event Wait Event Occurs Release Blocked Suspend Suspend New Event Occurs Activate Suspend Activate Admit Suspend 23 . 进程控制进程控制 进程控制进程控制, 就是操作系统使用一些就是操作系统使用一些具有特定功能的程序具有特定功能的程序 段段来创建与撤消进程以及完成进程状态的转换来创建与撤消进程以及完成进程状态的转换, 从而达从而达

28、到多个进程高效率地并发执行和协调到多个进程高效率地并发执行和协调,实现资源共享实现资源共享. 进程控制主要体现在进程的创建与撤消,以及进程的阻进程控制主要体现在进程的创建与撤消,以及进程的阻 塞与唤醒。塞与唤醒。 操作系统对进程的控制是依据用户命令和系统状态来决操作系统对进程的控制是依据用户命令和系统状态来决 定的。用户可在一定程序上对进程的状态进行控制。定的。用户可在一定程序上对进程的状态进行控制。 具有特定功能的程序段具有特定功能的程序段-原语原语 进程和进程控制进程和进程控制 24 . 进程控制进程控制 原语原语(primitive):由若干条指令构成的由若干条指令构成的“原子操原子操

29、作作(atomic operation)”过程,作为一个过程,作为一个整体整体而而不不 可分割可分割要么全都完成,要么全都不做。许多要么全都完成,要么全都不做。许多 系统调用就是原语。系统调用就是原语。 注意:注意:系统调用并不都是原语。系统调用并不都是原语。进程进程A调用调用read(),因无数,因无数 据而阻塞,在据而阻塞,在read()里未返回。然后进程里未返回。然后进程B调用调用read(),此时,此时 read()被重入。系统调用不一定一次执行完并返回该进程,被重入。系统调用不一定一次执行完并返回该进程, 有可能在特定的点暂停,而转入到其他进程。有可能在特定的点暂停,而转入到其他进程

30、。 进程和进程控制进程和进程控制 25 . 进程控制进程控制 进程和进程控制进程和进程控制 创建原语创建原语 进程的存在以进程的存在以PCB为标为标 志志, 所以创建新进程的主所以创建新进程的主 要任务就是为进程建立要任务就是为进程建立 PCB, 将调用者提供的有将调用者提供的有 关信息填入关信息填入PCB的各数的各数 据项中据项中 开始开始 分配分配PCB空间空间 将有关信息填入将有关信息填入PCB的数据项的数据项 将将PCB送入相应状态送入相应状态PCB链表链表 结束结束 26 . 进程控制进程控制 进程和进程控制进程和进程控制 撤消原语撤消原语 进程完成其任务之后进程完成其任务之后, 系

31、统应及时回收它占系统应及时回收它占 有的资源有的资源 开始开始 搜索搜索PCB链表链表 释放该进程所占有的资源释放该进程所占有的资源 释放释放PCB结构本身结构本身 结束结束 有此有此PCB 异常处理异常处理 No Yes 27 . 进程控制进程控制 进程和进程控制进程和进程控制 阻塞原语阻塞原语 开始开始 将将CPU当前状态存入当前状态存入PCB 设置进程状态为阻塞状态设置进程状态为阻塞状态 将将PCB置入阻塞队列置入阻塞队列 转处理机调度转处理机调度 28 . 进程控制进程控制 进程和进程控制进程和进程控制 唤醒原语唤醒原语 开始开始 从阻塞队列删除该从阻塞队列删除该PCB 设置进程状态为

32、就绪状态设置进程状态为就绪状态 将将PCB置入就绪队列置入就绪队列 转处理机调度转处理机调度 29 . Windows 的进程管理的进程管理 Windows 的进程由执行体进程块的进程由执行体进程块EPROCESS表示,表示, EPROCESS即即进程对象进程对象。 进程对象进程对象的属性的属性:PID, PCB, Access Token, Base Priority, 句句 柄表,指向进程环境块柄表,指向进程环境块PEB的指针,亲和处理器集合等的指针,亲和处理器集合等 在在Windows 中中,PCB也称为内核进程块也称为内核进程块KPROCESS,即内,即内 核进程对象核进程对象 EPO

33、CESS和和KPROCESS位于内核空间,位于内核空间,PEB位于用户空间位于用户空间 进程和进程控制进程和进程控制 30 . Windows的进程结构的进程结构 进程进程 对象对象 对象句柄列表对象句柄列表 VADVADVAD 对象对象 对象对象 虚拟地址空间描述表虚拟地址空间描述表 访问令牌访问令牌 线程线程 线程线程线程线程. . . 访问令牌访问令牌 Windows 的进程管理的进程管理 进程和进程控制进程和进程控制 31 . 进程创建进程创建 CreateProcess()函数用于函数用于创建新进程及其主线程创建新进程及其主线程,以执行,以执行 指定的程序。指定的程序。 新进程可以新

34、进程可以继承继承:打开文件的句柄、各种对象(如进程、:打开文件的句柄、各种对象(如进程、 线程、信号量、管道等)的句柄、环境变量、当前目录)线程、信号量、管道等)的句柄、环境变量、当前目录) 每个句柄在创建或打开时能指定是否可继承;每个句柄在创建或打开时能指定是否可继承; 新进程新进程不能继承不能继承:优先权类、内存句柄、:优先权类、内存句柄、DLL模块句柄模块句柄 CREATE_NEW_CONSOLE表示新进程有一个新的控制台表示新进程有一个新的控制台 CREATE_NEW_PROCESS_GROUP表示新进程是一个新表示新进程是一个新 的进程组的根。的进程组的根。 Windows 的进程管

35、理的进程管理 进程和进程控制进程和进程控制 32 . 进程退出进程退出 ExitProcess()或或TerminateProcess(),则进程包含的线程全部,则进程包含的线程全部 终止;终止; ExitProcess()终止一个进程和它的所有线程;它的终止操作终止一个进程和它的所有线程;它的终止操作 是完整的,包括关闭所有对象句柄、它的所有线程等;是完整的,包括关闭所有对象句柄、它的所有线程等; TerminateProcess()终止指定的进程和它的所有线程;它的终止指定的进程和它的所有线程;它的 终止操作是不完整的(如:不向相关终止操作是不完整的(如:不向相关DLL通报关闭情通报关闭情

36、 况),通常只用于异常情况下对进程的终止。况),通常只用于异常情况下对进程的终止。 Windows 的进程管理的进程管理 进程和进程控制进程和进程控制 33 . 与进程管理相关的内核变量与进程管理相关的内核变量 PsActiveProcessHead 进程链表头进程链表头 PsInitialSystemProcess 系统进程(系统线程的宿主)系统进程(系统线程的宿主) PsIdleProcess 空闲进程空闲进程 Windows 的进程管理的进程管理 进程和进程控制进程和进程控制 34 . 线程线程 线程的引入线程的引入 操作系统对线程的实现方式操作系统对线程的实现方式 进程和线程的比较进程

37、和线程的比较 Windows的线程的线程 如果说在操作系统中引入进程是为了使多个程序能够并发执如果说在操作系统中引入进程是为了使多个程序能够并发执 行,提高资源利用率和系统吞吐量,那么引入线程行,提高资源利用率和系统吞吐量,那么引入线程(THREAD) 的目的则是减少程序并发执行所付出的时空开销来,进一步提的目的则是减少程序并发执行所付出的时空开销来,进一步提 高系统的高系统的并发程度并发程度。 线程线程 35 . 线程的引入线程的引入 进程:进程: 资源(存储器、文件)分配单位和资源(存储器、文件)分配单位和CPU调度调度/分派单位。分派单位。 由于进程是资源拥有者,因而在创建、终止、切换过

38、程中,系由于进程是资源拥有者,因而在创建、终止、切换过程中,系 统必须为之付出较大的时空开销。正因为如此,系统中并发执统必须为之付出较大的时空开销。正因为如此,系统中并发执 行的进程的数目不宜过多,进程切换才频率也不宜过高,这样行的进程的数目不宜过多,进程切换才频率也不宜过高,这样 就限制了系统的并发程度。就限制了系统的并发程度。 解决这一问题的思路:将进程的两个基本属性分开,由操作系解决这一问题的思路:将进程的两个基本属性分开,由操作系 统分别处理统分别处理线程概念的引入线程概念的引入 在支持线程的操作系统中,进程只作为资源分配单位,而线程在支持线程的操作系统中,进程只作为资源分配单位,而线

39、程 则作为则作为CPU调度调度/分派单位。分派单位。 线程线程 36 . 线程的引入线程的引入 线程:线程:作为作为CPU调度单位,只拥有必不可少的资源,如:线程调度单位,只拥有必不可少的资源,如:线程 状态、寄存器上下文和栈状态、寄存器上下文和栈 同样具有就绪、阻塞和执行三种基本状态同样具有就绪、阻塞和执行三种基本状态 线程的优点:线程的优点:减小并发执行的时间和空间开销(线程的创建、减小并发执行的时间和空间开销(线程的创建、 退出和调度),因此容许在系统中建立更多的线程来提高并发退出和调度),因此容许在系统中建立更多的线程来提高并发 程度。程度。 线程的创建时间比进程短;线程的创建时间比进

40、程短; 线程的终止时间比进程短;线程的终止时间比进程短; 同进程内的线程切换时间比进程短;同进程内的线程切换时间比进程短; 由于同进程内线程间共享内存和文件资源,可直接进行不通由于同进程内线程间共享内存和文件资源,可直接进行不通 过内核的通信;过内核的通信; 线程线程 37 . one process one thread multiple processes one thread per process one process multiple threads multiple processes multiple threads per process 进程与线程的关系进程与线程的关系 线

41、程线程 线程的引入线程的引入 38 . OS对线程的实现方式对线程的实现方式 内核维护进程和线程的上下文信息;内核维护进程和线程的上下文信息; 线程切换由内核完成;线程切换由内核完成; 一个线程发起系统调用而阻塞,不会影响其他线程的运行。一个线程发起系统调用而阻塞,不会影响其他线程的运行。 时间片分配给线程,所以多线程的进程获得更多时间片分配给线程,所以多线程的进程获得更多CPU时间。时间。 依赖于依赖于OS核心核心,由内核完成创建和撤销。,由内核完成创建和撤销。Windows 支持内核线支持内核线 程;程; 内核线程内核线程(kernel-level thread) 线程线程 39 . 用户

42、线程用户线程(user-level thread) 用户线程的维护由应用进程完成;用户线程的维护由应用进程完成; 内核不了解用户线程的存在;内核不了解用户线程的存在; 用户线程切换不需要内核特权;用户线程切换不需要内核特权; 用户线程调度算法可针对应用优化;用户线程调度算法可针对应用优化; 不依赖于不依赖于OS核心,应用进程利用线程库提供的创建、同步、调核心,应用进程利用线程库提供的创建、同步、调 度和管理线程的函数来控制用户线程。如:数据库系统度和管理线程的函数来控制用户线程。如:数据库系统 Informix,图形处理,图形处理Aldus PageMaker。调度由应用软件内部。调度由应用软

43、件内部 进行,通常采用非抢先式和更简单的规则。一个线程发起系统进行,通常采用非抢先式和更简单的规则。一个线程发起系统 调用而阻塞,则整个进程在等待。时间片分配给进程,多线程调用而阻塞,则整个进程在等待。时间片分配给进程,多线程 则每个线程就慢。则每个线程就慢。 线程线程 OS对线程的实现方式对线程的实现方式 40 . 进程和线程的比较进程和线程的比较 地址空间和其他资源地址空间和其他资源(如打开文件):进程间相互独立,同一进程(如打开文件):进程间相互独立,同一进程 的各线程间共享某进程内的线程在其他进程不可见的各线程间共享某进程内的线程在其他进程不可见 通信通信:进程间只能使用:进程间只能使

44、用IPC 线程间可以直接读写进程数据段(如全局变量)来进行通信线程间可以直接读写进程数据段(如全局变量)来进行通信 也需要同步和互斥手段的辅助,以保证数据的一致性也需要同步和互斥手段的辅助,以保证数据的一致性 调度调度:线程上下文切换比进程上下文切换要快得多;:线程上下文切换比进程上下文切换要快得多; 线程线程 41 . Thread Control Block User Stack User Stack Kernel Stack Kernel Stack User Address Space User Address Space Process Control Block Process C

45、ontrol Block Thread Single-Threaded Process Model Multithreaded Process Model Thread Control Block User Stack Kernel Stack Thread Thread Control Block User Stack Kernel Stack Thread 线程切换和进程切换线程切换和进程切换 线程线程 进程和线程的比较进程和线程的比较 42 . Windows 的的线程线程 线程线程 线程对象线程对象 Windows线程由执行体线程块线程由执行体线程块ETHREAD表示,即线程对表示,即

46、线程对 象,其中包含象,其中包含 内核线程块内核线程块KTHREAD, 即线程控制块即线程控制块TCB 指向指向线程环境线程环境块块TEB的指针的指针 ETHREAD和和KTHREAD位于内核空间,位于内核空间,TEB位于用户空位于用户空 间间 43 . Windows 的线程状态的线程状态 线程线程 Windows 的的线程线程 就绪状态就绪状态(Ready):进程已获得除进程已获得除 处理机外的所需资源,等待执行处理机外的所需资源,等待执行 。 运行终止就绪 等待 上下文 切换 抢先或 时间片结束 等待对象句柄 执行完成 初始化 转换 备用 选择执行 抢先 放入 就绪队列 等待完成 等待完成 换出的 内核堆栈 换入的 内核堆栈 重新初始化 创建和初始化 线程对象 44 . Windows 的线程状态的线程状态 线程线程 Windows 的的线程线程 运行终止就绪 等待 上下文 切换 抢先或 时间片结束 等待对象句柄 执行完成 初始化 过渡 备用 选择执行 抢先 放入 就绪队列 等待完成 等待完成 换出的 内核堆栈 换入的 内核堆栈 重新初始化 创建和初始化 线程对象 备用状态备用状态(Standby):已选择好处理器已选择好处理器 ,正等待上下文切换系统中每个处,正等待上下文切换系统中每个处 理器上只能有一个处于备用状态的线理器上只能有一个处于备

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论