版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
进程和进程控制线程进程互斥和同步进程间通信死锁问题处理器调度第三章处理机管理(上)目前一页\总数五十页\编于十七点进程和进程控制进程的定义和描述进程的状态转换进程控制Windows的进程管理目前二页\总数五十页\编于十七点进程的定义和描述进程的定义一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。进程的特征动态性--具有动态的地址空间独立性--各进程的地址空间相互独立并发性--宏观上各进程同时运行结构化--进程的地址空间是结构化的进程和进程控制目前三页\总数五十页\编于十七点进程与程序的区别进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行。通常进程不可在计算机之间迁移;而程序通常对应着文件,是静态的,可以复制。进程是暂时的,程序的永久的:进程是一个状态变化的过程,程序可长久保存。进程与程序的组成不同:进程的组成包括程序、数据和进程控制块(即进程状态信息)。进程与程序的对应关系:通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。进程的定义和描述进程和进程控制目前四页\总数五十页\编于十七点进程控制块每个进程在OS中的登记表项(可能有总数目限制),OS据此对进程进行控制和管理(PCB中的内容会动态改变)处于核心段,通常不能由应用程序自身的代码来直接访问,而要通过系统调用访问进程控制块(PCB,
processcontrolblock)是由OS维护的用来记录进程相关信息的一个数据结构。进程和进程控制进程的定义和描述目前五页\总数五十页\编于十七点进程控制块的内容进程描述信息:进程标识符(processID),唯一,通常是一个整数;进程名,通常基于可执行文件名;用户标识符(userID);进程组(processgroup)进程控制信息:当前状态;优先级(priority);代码执行入口地址;程序的外存地址;运行统计信息(执行时间、页面调度);阻塞原因资源占用信息:虚拟地址空间的现状、打开文件列表CPU现场保护结构:寄存器值(通用、程序计数器PC、状态PSW,地址包括栈指针)进程和进程控制进程的定义和描述目前六页\总数五十页\编于十七点PCB的组织方式链表:同一状态的进程其PCB成一链表,多个状态对应多个不同的链表。各状态的进程形成不同的链表:就绪链表、阻塞链表索引表:同一状态的进程归入一个index表(由index指向PCB),多个状态对应多个不同的index表。各状态的进程形成不同的索引表:就绪索引表、阻塞索引表进程和进程控制进程的定义和描述目前七页\总数五十页\编于十七点进程上下文(context)用户级上下文:进程的用户地址空间(包括用户栈各层次),包括用户正文段、用户数据段和用户栈;寄存器级上下文:程序寄存器、处理机状态寄存器、栈指针、通用寄存器的值;系统级上下文:静态部分(PCB和资源表格)动态部分:核心栈(核心过程的栈结构,不同进程在调用相同核心过程时有不同核心栈)进程上下文是对进程执行活动全过程的静态描述。进程上下文由进程的用户地址空间内容、硬件寄存器内容及与该进程相关的核心数据结构组成。进程和进程控制进程的定义和描述目前八页\总数五十页\编于十七点——五状态进程模型五状态进程模型(状态转换)进程的状态转换进程在从创建到终止的全过程中一直处于一个不断变化的过程,为了刻画进程的这个变化过程,操作系统把进程分成若干种状态进程和进程控制AdmitRunningNewExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseCreate目前九页\总数五十页\编于十七点状态新建状态(New):进程刚创建,但还不能运行(一种可能的原因是OS对并发进程数的限制);
OS在进程新建状态的工作:分配和建立PCB表项、建立资源表格(如打开文件表)并分配资源,加载程序并建立地址空间表。结束状态(Exit):进程已结束运行.回收除PCB之外的其他资源,并让其他进程从PCB中收集有关信息(如记帐,将退出码exitcode传递给父进程)。进程的状态转换——五状态进程模型进程和进程控制AdmitRunningNewExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseCreate目前十页\总数五十页\编于十七点运行状态(Running):占用处理机资源并运行;处于此状态的进程的数目小于等于CPU的数目。在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的idle进程(相当于空操作)。就绪状态(Ready):进程已获得除处理机外的所需资源,等待分配处理机资源;只要分配CPU就可执行。可以按多个优先级来划分队列,如:时间片用完->低优,I/O完成->中优,页面调入完成->高优阻塞状态(Blocked):由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。在该事件发生前即使把处理机分配给该进程,也无法运行。如:等待I/O操作的完成。进程的状态转换——五状态进程模型进程和进程控制AdmitRunningNewExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseCreate目前十一页\总数五十页\编于十七点进程状态转换创建(Create)新进程:创建一个新进程,以运行一个程序。提交(Admit):收容一个新进程,进入就绪状态。由于性能、内存、进程总数等原因,系统会限制并发进程总数。调度运行(Dispatch):从就绪进程表中选择一个进程,进入运行状态;释放(Release):由于进程完成或失败而中止进程运行,进入结束状态;运行到结束:分为正常退出Exit和异常退出abort(执行超时或内存不够,非法指令或地址,I/O失败,被其他进程所终止)就绪或阻塞到结束:可能的原因有:父进程可在任何时间中止子进程;进程的状态转换——五状态进程模型进程和进程控制AdmitRunningNewExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseCreate目前十二页\总数五十页\编于十七点超时(Timeout):由于用完时间片或高优先进程就绪等导致进程暂停运行;事件等待(EventWait):进程要求的事件未出现而进入阻塞;可能的原因包括:申请系统服务或资源、通信、I/O操作等;事件发生(EventOccurs):进程等待的事件发生;如:I/O操作完成、申请资源成功等;进程的状态转换——五状态进程模型进程和进程控制AdmitRunningNewExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseCreate目前十三页\总数五十页\编于十七点五状态进程模型没有区分进程地址空间位于内存还是外存,而在操作系统中引入虚拟存储管理技术后,需要进一步区分进程的地址空间状态。
这个问题的出现是由于进程优先级的引入,一些低优先级进程可能等待较长时间,从而被对换至外存。这样做的目的是:提高处理机效率:就绪进程表为空时,有空闲的内存空间来提交新进程,以提高处理机效率;为运行进程提供足够内存:资源紧张时,暂停某些进程,如:CPU繁忙(或实时任务执行),内存紧张用于调试:在调试时,挂起被调试进程(从而对其地址空间进行读写)——挂起进程模型进程的状态转换进程和进程控制目前十四页\总数五十页\编于十七点单挂起进程模型——挂起进程模型进程的状态转换进程和进程控制AdmitRunningNewExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseBlockedSuspendSuspendActivate目前十五页\总数五十页\编于十七点双挂起进程模型——挂起进程模型进程的状态转换进程和进程控制AdmitRunningReadySuspendExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseBlockedSuspendSuspendNewEventOccursActivateSuspendActivateAdmitSuspend目前十六页\总数五十页\编于十七点就绪状态(Ready):进程在内存且可立即进入运行状态;阻塞状态(Blocked):进程在内存并等待某事件的出现;阻塞挂起状态(Blocked,suspend):进程在外存并等待某事件的出现;就绪挂起状态(Ready,suspend):进程在外存,但只要进入内存,即可运行;——挂起进程模型进程的状态转换状态进程和进程控制目前十七页\总数五十页\编于十七点挂起(Suspend):把一个进程从内存转到外存;可能有以下几种情况:阻塞到阻塞挂起:没有进程处于就绪状态或就绪进程要求更多内存资源时,会进行这种转换,以提交新进程或运行就绪进程;就绪到就绪挂起:当有高优先级阻塞(系统认为会很快就绪的)进程和低优先级就绪进程时,系统会选择挂起低优先级就绪进程;运行到就绪挂起:对抢先式操作系统,当有高优先级阻塞进程因事件出现而进入就绪状态时,系统可能会把运行进程转到就绪挂起状态;——挂起进程模型进程的状态转换状态转换进程和进程控制RunningReadySuspendReadyBlockedDispatchTimeoutEventWaitEventOccursBlockedSuspendSuspendEventOccursActivateSuspendActivateSuspend目前十八页\总数五十页\编于十七点激活(Activate):把一个进程从外存转到内存;可能有以下几种情况:就绪挂起到就绪:没有就绪进程或挂起就绪进程优先级高于就绪进程时,会进行这种转换;阻塞挂起到阻塞:当一个进程释放足够内存时,系统会把一个高优先级阻塞挂起进程激活,系统认为会很快出现所等待的事件;——挂起进程模型进程的状态转换状态转换进程和进程控制RunningReadySuspendReadyBlockedDispatchTimeoutEventWaitEventOccursBlockedSuspendSuspendEventOccursActivateSuspendActivateSuspend目前十九页\总数五十页\编于十七点事件发生(EventOccurs):进程等待的事件发生,可能的情况有:阻塞到就绪:针对内存进程的事件发生;阻塞挂起到就绪挂起:针对外存进程的事件发生;——挂起进程模型进程的状态转换进程和进程控制状态转换RunningReadySuspendReadyBlockedDispatchTimeoutEventWaitEventOccursBlockedSuspendSuspendEventOccursActivateSuspendActivateSuspend目前二十页\总数五十页\编于十七点收容(Admit):收容一个新进程,进入就绪状态或就绪挂起状态。进入就绪挂起的原因是系统希望保持一个大的就绪进程表(挂起和非挂起);——挂起进程模型进程的状态转换进程和进程控制状态转换AdmitRunningReadySuspendReadyDispatchTimeoutNewSuspendActivateAdmitSuspend目前二十一页\总数五十页\编于十七点双挂起进程模型——挂起进程模型进程的状态转换进程和进程控制AdmitRunningReadySuspendExitReadyBlockedDispatchTimeoutEventWaitEventOccursReleaseBlockedSuspendSuspendNewEventOccursActivateSuspendActivateAdmitSuspend目前二十二页\总数五十页\编于十七点进程控制进程控制,
就是操作系统使用一些具有特定功能的程序段来创建与撤消进程以及完成进程状态的转换,从而达到多个进程高效率地并发执行和协调,实现资源共享.进程控制主要体现在进程的创建与撤消,以及进程的阻塞与唤醒。操作系统对进程的控制是依据用户命令和系统状态来决定的。用户可在一定程序上对进程的状态进行控制。具有特定功能的程序段原语进程和进程控制目前二十三页\总数五十页\编于十七点进程控制原语(primitive):由若干条指令构成的“原子操作(atomicoperation)”过程,作为一个整体而不可分割--要么全都完成,要么全都不做。许多系统调用就是原语。注意:系统调用并不都是原语。进程A调用read(),因无数据而阻塞,在read()里未返回。然后进程B调用read(),此时read()被重入。系统调用不一定一次执行完并返回该进程,有可能在特定的点暂停,而转入到其他进程。进程和进程控制目前二十四页\总数五十页\编于十七点进程控制进程和进程控制创建原语进程的存在以PCB为标志,所以创建新进程的主要任务就是为进程建立PCB,将调用者提供的有关信息填入PCB的各数据项中开始分配PCB空间将有关信息填入PCB的数据项将PCB送入相应状态PCB链表结束目前二十五页\总数五十页\编于十七点进程控制进程和进程控制撤消原语进程完成其任务之后,系统应及时回收它占有的资源开始搜索PCB链表释放该进程所占有的资源释放PCB结构本身结束有此PCB异常处理NoYes目前二十六页\总数五十页\编于十七点进程控制进程和进程控制阻塞原语开始将CPU当前状态存入PCB设置进程状态为阻塞状态将PCB置入阻塞队列转处理机调度目前二十七页\总数五十页\编于十七点进程控制进程和进程控制唤醒原语开始从阻塞队列删除该PCB设置进程状态为就绪状态将PCB置入就绪队列转处理机调度目前二十八页\总数五十页\编于十七点Windows的进程管理Windows的进程由执行体进程块EPROCESS表示,EPROCESS即进程对象。进程对象的属性:PID,PCB,AccessToken,BasePriority,句柄表,指向进程环境块PEB的指针,亲和处理器集合等在Windows中,PCB也称为内核进程块KPROCESS,即内核进程对象EPOCESS和KPROCESS位于内核空间,PEB位于用户空间进程和进程控制目前二十九页\总数五十页\编于十七点Windows的进程结构Windows的进程管理进程和进程控制目前三十页\总数五十页\编于十七点进程创建CreateProcess()函数用于创建新进程及其主线程,以执行指定的程序。新进程可以继承:打开文件的句柄、各种对象(如进程、线程、信号量、管道等)的句柄、环境变量、当前目录)--每个句柄在创建或打开时能指定是否可继承;新进程不能继承:优先权类、内存句柄、DLL模块句柄CREATE_NEW_CONSOLE表示新进程有一个新的控制台CREATE_NEW_PROCESS_GROUP表示新进程是一个新的进程组的根。Windows的进程管理进程和进程控制目前三十一页\总数五十页\编于十七点进程退出ExitProcess()或TerminateProcess(),则进程包含的线程全部终止;ExitProcess()终止一个进程和它的所有线程;它的终止操作是完整的,包括关闭所有对象句柄、它的所有线程等;TerminateProcess()终止指定的进程和它的所有线程;它的终止操作是不完整的(如:不向相关DLL通报关闭情况),通常只用于异常情况下对进程的终止。Windows的进程管理进程和进程控制目前三十二页\总数五十页\编于十七点与进程管理相关的内核变量PsActiveProcessHead
进程链表头PsInitialSystemProcess
系统进程(系统线程的宿主)PsIdleProcess
空闲进程Windows的进程管理进程和进程控制目前三十三页\总数五十页\编于十七点线程线程的引入操作系统对线程的实现方式进程和线程的比较Windows的线程如果说在操作系统中引入进程是为了使多个程序能够并发执行,提高资源利用率和系统吞吐量,那么引入线程(THREAD)的目的则是减少程序并发执行所付出的时空开销来,进一步提高系统的并发程度。线程目前三十四页\总数五十页\编于十七点线程的引入进程:资源(存储器、文件)分配单位和CPU调度/分派单位。由于进程是资源拥有者,因而在创建、终止、切换过程中,系统必须为之付出较大的时空开销。正因为如此,系统中并发执行的进程的数目不宜过多,进程切换才频率也不宜过高,这样就限制了系统的并发程度。解决这一问题的思路:将进程的两个基本属性分开,由操作系统分别处理——线程概念的引入在支持线程的操作系统中,进程只作为资源分配单位,而线程则作为CPU调度/分派单位。线程目前三十五页\总数五十页\编于十七点线程的引入线程:作为CPU调度单位,只拥有必不可少的资源,如:线程状态、寄存器上下文和栈同样具有就绪、阻塞和执行三种基本状态线程的优点:减小并发执行的时间和空间开销(线程的创建、退出和调度),因此容许在系统中建立更多的线程来提高并发程度。线程的创建时间比进程短;线程的终止时间比进程短;同进程内的线程切换时间比进程短;由于同进程内线程间共享内存和文件资源,可直接进行不通过内核的通信;线程目前三十六页\总数五十页\编于十七点进程与线程的关系线程线程的引入目前三十七页\总数五十页\编于十七点OS对线程的实现方式内核维护进程和线程的上下文信息;线程切换由内核完成;一个线程发起系统调用而阻塞,不会影响其他线程的运行。时间片分配给线程,所以多线程的进程获得更多CPU时间。依赖于OS核心,由内核完成创建和撤销。Windows支持内核线程;内核线程(kernel-levelthread)线程目前三十八页\总数五十页\编于十七点用户线程(user-levelthread)用户线程的维护由应用进程完成;内核不了解用户线程的存在;用户线程切换不需要内核特权;用户线程调度算法可针对应用优化;不依赖于OS核心,应用进程利用线程库提供的创建、同步、调度和管理线程的函数来控制用户线程。如:数据库系统Informix,图形处理AldusPageMaker。调度由应用软件内部进行,通常采用非抢先式和更简单的规则。一个线程发起系统调用而阻塞,则整个进程在等待。时间片分配给进程,多线程则每个线程就慢。线程OS对线程的实现方式目前三十九页\总数五十页\编于十七点进程和线程的比较地址空间和其他资源(如打开文件):进程间相互独立,同一进程的各线程间共享--某进程内的线程在其他进程不可见通信:进程间只能使用IPC线程间可以直接读写进程数据段(如全局变量)来进行通信也需要同步和互斥手段的辅助,以保证数据的一致性调度:线程上下文切换比进程上下文切换要快得多;线程目前四十页\总数五十页\编于十七点线程切换和进程切换线程进程和线程的比较目前四十一页\总数五十页\编于十七点Windows的线程线程线程对象Windows线程由执行体线程块ETHREAD表示,即线程对象,其中包含内核线程块KTHREAD,即线程控制块TCB指向线程环境块TEB的指针ETHREAD和KTHREAD位于内核空间,TEB位于用户空间目前四十二页\总数五十页\编于十七点Windows的线程状态线程Windows的线程就绪状态(Ready):进程已获得除处理机外的所需资源,等待执行。运行终止就绪等待上下文切换抢先或时间片结束等待对象句柄执行完成初始化转换备用选择执行抢先放入就绪队列等待完成等待完成换出的内核堆栈换入的内核堆栈重新初始化创建和初始化线程对象目前四十三页\总数五十页\编于十七点Windows的线程状态线程Windows的线程运行终止就绪等待上下文切换抢先或时间片结束等待对象句柄执行完成初始化过渡备用选择执行抢先放入就绪队列等待完成等待完成换出的内核堆栈换入的内核堆栈重新初始化创建和初始化线程对象备用状态(Standby):已选择好处理器,正等待上下文切换.系统中每个处理器上只能有一个处于备用状态的线程。目前四十四页\总数五十页\编于十七点Windows的线程状态线程Windows的线程运行状态(Running):完成上下文切换,线程进入运行状态,直到内核抢先、时间片用完、线程终止或进入等待状态。运行终止就绪等待上下文切换抢先或时间片结束等待对象句柄执行完成初始化过渡备用选择执行抢先放入就绪队列等待完成等待完成换出的内核堆栈换入的内核堆栈重新初始化创建和初始化线程对象目前四十五页\总数五十页\编于十七点Windows的线程状态线程Wi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024工厂租赁的协议书
- 2024年度分公司质量保障与售后服务协议3篇
- 2024年度农作物健康保护合作合同版B版
- 2024年专业咨询公司销售服务协议样本版B版
- 2024年度园林绿化工程车辆租赁合同3篇
- 2024年企业数字化转型升级合同
- 2024年制造业打磨工固定期限协议版B版
- 2024商用浴室改造项目承包协议
- 2024年工程领域劳务分包协议样本版B版
- 2024年度围墙施工及材料供应合同
- 英国皇室文化课件
- 搪瓷工艺的制造流程与工具设备
- 《接力跑说课稿》课件
- 关于幼儿园绘本教学方法的探索与实践
- (正式版)实习岗位-OFFER通知书
- 肠痈的中医护理查房课件
- GB/T 43477-2023节水型工业园区评价导则
- 6朗诵《唐诗里的中国》朗诵稿
- 认知盈余:自由时间的力量
- 债务由一方承担协议书
- 法律诉讼及咨询服务 投标方案(技术标)
评论
0/150
提交评论