版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2.3 进程及其实现2.3.1 进程的定义和属属性2.3.2 进程的状态和转换2.3.3 进程的描述2.3.4 进程切换与模式切换2.3.5 进程的控制2.3.6 实例研究:UNIX SVR4进程管理2.3.7 实例研究:Linux进程管理2.3.1 进程的定义和性质(1) 进程进程是一个可并发执行的具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行资源分配和保护的基本单位 。 进程的定义和性质(2) 进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础
2、上。进程的定义和性质(3) 操作系统引入进程的概念 从理论角度看,是对正在运行的程序过程的抽象; 从实现角度看,是一种数据结构,目的在于清晰地刻划动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。 进程的属性 结构性: 共享性: 动态性: 独立性: 制约性: 并发性:操作系统为什么要引入进程概念? 原因1-刻画系统的动态性,发挥系统的并发性,提高资源利用率。原因2-它能解决系统的“共享性”,正确描述程序的执行状态。 “可再用” 程序 “可再入” 程序 “可再入”程序具有的性质“可再入” 程序举例(1) 编译程序P编译源程序甲,从A点开始工作,执行到B点时需将信息记到磁盘上,且
3、程序P在B点等待磁盘传输。 为提高系统效率,利用编译程序的“可再入”性,让编译程序P再为源程序乙进行编译,仍从A点开始工作。“可再入” 程序举例(2) 编译程序P(P的入口,处理源程序乙)(P把源程序甲的信息记盘等磁盘完成)AB源程序甲源程序乙“可再入” 程序举例(3) 现在怎样来描述编译程序P的状态呢? 称它为在B点等待磁盘传输状态,还是称它为正在从A点开始执行的状态? 把编译程序P,与服务对象联系起来,P为甲服务就说构成进程P甲,P为乙服务则构成进程P乙。“可再入” 程序举例(4) 两个进程虽共享程序P,但它们可同时执行且彼此按各自的速度独立执行。可见程序与计算(程序的执行)不再一一对应,
4、 进程是一个既能用来共享资源,又能描述程序并发执行过程的一个基本单位。2.3.2 进程的状态和转换三态模型三态模型(1)(1) 一个进程从创建而产生至撤销而消亡的整个生命周期,可用一组状态加以刻划,,按进程在执行过程中的状况至少定义三种不同的进程状态:三态模型(2)三种不同的进程状态 运行态(running): 就绪态(ready): 等待态(blocked):三态模型三态模型(3)(3)进程三态模型及其状态转换 运行态就绪态等待态选中落选出现等待事件等待事件结束三态模型(4)引起进程状态转换的具体原因 运行态等待态:等待使用资源或某事件发生 ; 等待态就绪态:资源得到满足或事件发生 ; 运行
5、态就绪态:运行时间片到;出现有更高优先权进程。 就绪态运行态:CPU空闲时选择一个就绪进程。 五态模型(1) 进程五态模型及其转换运行态就绪态等待态选中落选出现等待事件等待事件结束新建态终止态 五态模型(2)新建态 新建态新建态对应进程刚被创建的状态。为一个新进程创建必要的管理信息,它并没有被提交执行,而是在等待操作系统完成创建进程的必要操作。五态模型(3)终止态 进程的终止,首先,等待操作系统进行善后,然后,退出主存。 进入终止态的进程不再执行,但依然临时保留在系统中等待善后。一旦其他进程完成了对终止态进程的信息抽取之后,系统将删除该进程。 五态模型(4)进程状态转换的具体原因(1) NUL
6、L新建态:创建一个子进程。 新建态就绪态:系统完成了进程创建操作,且当前系统的性能和内存的容量均允许。 五态模型(5)进程状态转换的具体原因(2) 运行态终止态:一个进程到达自然结束点,或出现了无法克服的错误,或被操作系统所终结,或被其他有终止权的进程所终结。五态模型(6)进程状态转换的具体原因(3) 终止态NULL:完成善后操作。 就绪态终止态:某些操作系统允许父进程终结子进程。 等待态终止态:某些操作系统允许父进程终结子进程。进程的挂起(1) 为什么要有“挂起”状态? 由于进程的不断创建,系统资源已不能满足进程运行的要求,就必须把某些进程挂起(suspend),对换到磁盘镜像区中,暂时不参
7、与进程调度,起到平滑系统操作负荷的目的。 进程的挂起(2) (1)系统中的进程均处于等待状态,需要把一些阻塞进程对换出去,腾出足够内存装入就绪进程运行。 (2)进程竞争资源,导致系统资源不足,负荷过重,需要挂起部分进程以调整系统负荷,保证系统的实时性或让系统正常运行。 进程的挂起(3) (3)定期执行的进程(如审计、监控、记账程序)对换出去,以减轻系统负荷。 (4)用户要求挂起自己的进程,以便进行某些调试、检查和改正。进程的挂起(4) (5)父进程要求挂起后代进程,以进行某些检查和改正。 (6)操作系统需要挂起某些进程,检查运行中资源使用情况,以改善系统性能;或当系统出现故障或某些功能受到破坏
8、时,需要挂起某些进程以排除故障。 具有挂起功能的进程状态及其转换 挂起等待事件结束出现等待事件解除挂起挂起落选选中运行态就绪态等待事件结束终止态新建态挂起就绪态解除挂起挂起挂起等待态等待态提交提交具有挂起进程功能的进程状态 进程增加了两个新状态: 挂起就绪态(ready suspend)表明进程具备运行条件但目前在二级存储器中,当它被对换到主存才能被调度执行。 挂起等待态(blocked suspend) 表明进程正在等待某一个事件且在二级存储器中。具有挂起进程状态转换的具体原因(1) 等待态挂起等待态:当前不存在就绪进程,至少一个等待态进程将被对换出去成为挂起等待态; 挂起等待态挂起就绪态:
9、引起进程等待的事件发生之后,相应的挂起等待态进程将转换为挂起就绪态。具有挂起进程状态转换的具体原因进程状态转换的具体原因(2)(2) 挂起就绪态就绪态:内存中没有就绪态进程,或挂起就绪态进程具有比就绪态进程更高的优先级,将把挂起就绪态进程转换成就绪态。 就绪态挂起就绪态:系统根据当前资源状况和性能要求,决定把就绪态进程对换出去成为挂起就绪态。挂起进程具有如下特征(1)该进程不能立即被执行。挂起进程可能会等待事件,但所等待事件是独立于挂起条件的,事件结束并不能导致进程具备执行条件。 挂起进程具有如下特征(2)进程进入挂起状态是由于操作系统、父进程或进程本身阻止它的运行。结束进程挂起状态的命令只能
10、通过操作系统或父进程发出。2.3.3 进程的描述 操作系统的控制结构操作系统的控制结构(1)(1) 操作系统核心控制结构是进程结构,资源管理的数据结构将围绕进程结构展开。 操作系统的控制表分为四类, 进程控制表,存储控制表,I/O控制表和文件控制表。操作系统的控制结构(2) 进程控制表管理进程及其相关信息。 存储控制表管理一级(主)存储器和二级(虚拟)存储器,内容包括:主存储器的分配信息,二级存储器的分配信息,存储保护和分区共享信息,虚拟存储器管理信息操作系统的控制结构(3) I/O控制表管理系统的I/O设备和通道,包括:I/O设备和通道是否可用,I/O设备和通道分配信息,I/O操作的状态和进
11、展,I/O操作传输数据所在主存区。 文件控制表管理文件,包括:被打开文件的信息,文件在主存储器和二级存储器中的位置信息,被打开文件的状态和其他属性信息。 操作系统控制表的通用结构 MemoryDevicesFilesProcessesMemory TablesI/O TablesFile TablesPrimary Process TableProcess 1Process NProcess 2Process ImageProcess 1ImageProcess NImage 进程映像 操作系统中把进程物理实体和支持进程运行的环境合称为进程上下文(context)。 当系统调度新进程占有处理器
12、时,新老进程随之发生上下文切换。进程的运行被认为是在上下文中执行。 进程上下文组成 用户级上下文:由用户程序块、用户数据块和用户堆栈组成的进程地址空间。 系统级上下文:包括进程的标识信息、现场信息和控制信息,进程环境块,及系统堆栈等组成的进程地址空间。 寄存器上下文:由PSW寄存器和各类控制寄存器、地址寄存器、通用寄存器组成。进程有四个要素组成进程程序块进程程序块进程数据块进程数据块系统堆栈系统堆栈用户堆栈用户堆栈用户进程在虚拟内存中的组织 进程标识信息进程现场信息进程控制信息用户堆栈用户私有地址空间(代码、数据)进程控制块共享地址空间进程控制块(1) 进程控制块P C B ,是操作系统用于记
13、录和刻划进程状态及有关信息的数据结构。也是操作系统掌握进程的唯一资料结构,它包括了进程执行时的情况,以及进程让出处理器后所处的状态、断点等信息。 进程控制块(2)进程控制块包含三类信息标识信息现场信息控制信息进程控制块(3)标识信息 用于唯一地标识一个进程,分由用户使用的外部标识符和被系统使用的内部标识号。 常用的标识信息有进程标识符、父进程的标识符、用户进程名、用户组名等。进程控制块(4)现场信息 保留进程运行时存放在处理器现场中的各种信息,进程让出处理器时必须把处理器现场信息保存到PCB中,当该进程重新恢复运行时也应恢复处理器现场。 现场信息包括通用寄存器内容、控制寄存器内容、用户堆栈指针
14、、系统堆栈指针等。进程控制块进程控制块(5)(5)控制信息(1) 1)进程调度相关信息,如进程状态、等待事件和等待原因、进程优先级、队列指引元等; 2) 进程组成信息,如正文段指针、数据段指针; 3)进程间通信相关信息,如消息队列指针、信号量等互斥和同步机制;进程控制块(6)控制信息(2) 4)进程在二级存储器内的地址信息; 5)CPU资源的占用和使用信息,如时间片余量、进程己占用时间、进程己执行时间总和,记帐信息; 进程控制块(7)控制信息(3) 6)进程特权信息,如在内存访问和处理器状态方面的特权。 7) 资源清单,包括进程所需全部资源、已经分得资源,如主存资源、I/O设备、打开文件表等。
15、 进程管理(1) 处于同一状态的所有PCB链接在一起的数据结构称为进程队列(Process Queues)。 同一状态进程的PCB既可按先来先到的原则排成队列;也可按优先数或其它原则排成队列。 进程管理(2)链接进程控制块的方法 单向链接 双向链接进程管理(3)队列标志 系统为每个队列设置一个队列标志: 单向链接时, 队列标志指引元指向队列中第一个进程的队列指引元的位置; 双向链接时, 队列标志的后向指引元指向队列中第一个进程的后向队列指引元的位置; 队列标志的前向指引元指向队列中最后一个进程的前向队列指引元的位置 进程管理(4)进程控制块的链接 队列标志0队列标志00后向前向(a)单向连接(
16、b)双向连接是队列指引元进程管理(5)队列管理 入队 出队 队列管理模块 队列管理和状态转换示意图 处理器指派提交完成超时事件1等待队列事件2等待队列事件n等待队列就绪队列等待事件1等待事件2等待事件n事件1出现事件2出现事件n出现前(后)向指引元的内容规定 情况情况1 1:它是队列之首。此时,前向指引元为0,后向指引元指出它的下一个进程的后向指引元位置。 情况情况2:它是队列之尾。此时,后向指引元为0,它的前向指引元指出它的上一个进程的前向指引元位置。 情况情况3:它的前后均有进程。此时,前(后)向指引元指出它的上(下)一个进程的前(后)向指引元位置。 进程的出队举例 假设进程Q在某个队列中
17、,它的前面是进程P,后面是进程R。 进程Q出队过程:把Q的前向指引元的内容送到R的前向指引元中,把Q的后向指引元的内容送到P的后向指引元中。于是P的后向指引元指向R,而R的前向指引元指向P,Q就从队列中退出。表格法组织PCB 表格法组织PCB。所有进程的PCB都组织在一个线性表中,进程调度时需要查找整个PCB表; 也可以把相同状态进程的PCB组织在一个线性表中,系统有多个线性表,这样可缩短查表时间。2.3.4 进程切换与CPU模式切换 进程上下文切换进程上下文切换(1)(1) 进程切换是让处于运行态的进程中断运行,让出处理器,这时要做一次进程上下文切换、即保存老进程状态而装入被保护了的新进程的
18、状态,以便新进程运行。 进程上下文切换(2)进程切换的步骤(1) 保存被中断进程的处理器现场信息。修改被中断进程的进程控制块的有关信息,如进程状态等。把被中断进程的进程控制块加入有关队列。选择下一个占有处理器运行的进程。进程上下文切换(3)进程切换的步骤(2)修改被选中进程的进程控制块的有关信息。根据被选中进程设置操作系统用到的地址转换和存储保护信息。根据被选中进程恢复处理器现场。进程上下文切换(4)调度和切换时机问题(1) 请求调度的事件发生后,就会运行低级调度程序,低级调度程序选中新的就绪进程后,就会进行上下文切换。实际上,由于种种原因,并不一定能一气呵成。 进程上下文切换(5)调度和切换
19、时机问题(2) 例1,运行内核中断处理例程期间,发生了更高优先级的I/O中断的情况; 例2,若正在运行操作系统内核临界区程序,如果时钟中断导致请求低级调度的事件发生的情况; 在各种各样的原子操作,如原语操作、现场保护和恢复等过程中,发生了请求调度的事件的情况。 进程上下文切换(6)调度和切换时机问题(3) 通常的做法是,由内核置上请求调度标志,延迟到上述工作完成后再进行调度和进程上下文切换, Linux进程调度标志位need-resched, W i n d o w s 2 0 0 0 / X P 延 迟 过 程 调 用DPC/dispatch软件中断。 CPU模式切换(1) 当中断发生时,暂
20、时中断正在执行的用户进程,把进程从用户状态切换到内核状态,去执行操作系统例行程序以获得服务,这就是一次模式切换模式切换, 内核在被中断了的进程的上下文中对这个中断事件作处理,即使该中断可能不是此进程引起的。CPU模式切换(2) 被中断进程可以是正在用户态下执行的,也可以是正在核心态下执行的,内核都要保留足够信息以便在后来能恢复被中断了的进程执行。CPU模式切换(3)模式切换的步骤保存被中断进程的处理器现场信息。根据中断号置程序计数器。把用户状态切换到内核状态,以便执行中断处理程序。CPU模式切换与进程上下文切换 模式切换不同于进程切换,它并不引起进程状态变化,也不一定引起进程的切换,在完成了中
21、断调用之后,完全可以再通过一次逆向的模式切换来继续执行用户进程。 UNIX进程上下文切换和模式切换(1) 两类进程:系统进程和用户进程,系统进程在核心态下执行操作系统代码,用户进程在用户态下执行用户程序。 用户进程因中断和系统调用进入内核态,系统进程开始执行,两个进程使用同一个PCB,实质上是一个进程。但所执行的程序不同,映射到不同物理地址空间、使用不同堆栈。UNIX中进程上下文切换和模式切换(2) 核心态运行系统调用或中断(隐含模式切换)模式切换用户态运行等待状态就绪状态发生事件唤醒调度进程中断、中断返回允许的上下文切换切换2.3.5 进程的控制 原语(1) 处理器管理的一个主要工作是对进程
22、的控制,包括:创建进程、阻塞进程、唤醒进程、挂起进程、激活进程、终止进程和撤销进程等。 这些控制和管理功能是由操作系统中的原语来实现的。 原语(2) 原语原语(Primitive)是在管态下执行、完成系统特定功能的过程。 原语和机器指令类似,其特点是执行过程中不允许被中断,是一个不可分割的基本单位,原语的执行是顺序的而不可能是并发的。原语(3) 一种原语的实现方法是以系统调用方式提供原语接口,且采用屏蔽中断的方式来实现原语功能,以保证原语操作不被打断的特性。 进程的创建进程的创建(1)(1) 进程创建来源于以下事件:提交一个批处理作业。在终端上交互式的登录。操作系统创建一个服务进程。存在的进程
23、孵化(spawn)新的进程。进程的创建(2) 生成进程称父进程(Parent Process) ,被生成进程称子进程(Child Process) 、即一个父进程可以创建子进程,从而形成树形结构。进程的创建过程(1) 在进程表中增加一项,并从PCB池中取一个空白PCB。 为新进程的进程映像分配地址空间。传递环境变量,构造共享地址空间。 为新进程分配资源,除内存空间外,还有其他各种资源。进程的创建过程(2) 查找辅存,找到进程正文段并装到正文区。 初始化进程控制块,为新进程分配进程标识符,初始化PSW。 加入就绪进程队列,或直接将进程投入运行。 通知操作系统的某些模块,如记账程序、性能监控程序。
24、进程的创建过程(3) Linux fork( ) 创建子进程但父子进程不共享内容 Linux clone( ) 允许定义父子进程共享的内容 Linux中认为线程就是共享上下文的进程 进程的创建过程(4) 操作系统最多进程数的限制。 UNIX(早期)最多创建几十个进程。 Solaris可在启动时根据内存容量自动调整创建数。进程的创建过程(5) Linux2.4中,最多进程数是运行时可调参数,缺省设置为:size-of-memory-in-the-system/kernel-stack-size/2。 假如机器有512MB内存,缺省可创建进程的上限为:51210241024/8192/2=3276
25、8。2 进程的阻塞和唤醒(1) 进程阻塞的步骤如下: 停止进程执行,保存现场信息到PSW 。 修改PCB的有关内容,如进程状态由运行改为等待等。 把修改状态后的PCB加入相应等待进程队列。进程的阻塞和唤醒(2) 进程唤醒的步骤如下:从相应等待进程队列中取出PCB。修改PCB有关信息,如进程状态等。把修改后PCB加入有关就绪进程队列。 3 进程的撤销(1) 进程撤销的主要原因(1):进程正常运行结束。进程执行了非法指令。进程在常态下执行了特权指令。进程运行时间超越了分给的最大时间段。进程等待时间超越了设定的最大等待时间。进程申请的内存超过了系统能提供最大量。越界错误。 进程撤销的主要原因(2):
26、对共享内存区的非法使用。算术错误,如除零和操作数溢出。严重的输入输出错误。操作员或操作系统干预。父进程撤销其子进程。父进程撤销。操作系统终止。 进程的撤销(2)进程的撤销(3)撤销原语终止进程具体步骤 根据撤销进程标识号,从相应队列中找到它的PCB; 将该进程拥有的资源归还给父进程或操作系统; 若该进程拥有子进程,应先撤销它的所有子孙进程,以防它们脱离控制; 撤销进程出队,将它的PCB归还到PCB池。4 进程的挂起和激活(1) 挂起原语执行过程如下:检查要被挂起进程的状态,若处于活动就绪态就修改为挂起就绪,若处于阻塞态,则修改为挂起阻塞。 被挂起进程PCB的非常驻部分要交换到磁盘对换区。进程的
27、挂起和激活(2) 激活原语主要工作:把进程PCB非常驻部分调进内存,修改它的状态,挂起等待态改为等待态,挂起就绪态改为就绪态,排入相应队列中。 挂起原语既可由进程自己也可由其他进程调用,但激活原语却只能由其他进程调用。2.3.6 实例研究:UNIX SVR4的进程管理 UNIX SVR4采用基于用户进程的运行模型,操作系统功能在用户进程的环境中执行,需要在用户和内核模式间切换。 UNIX SVR4允许两类进程:用户进程和系统进程。系统进程在内核模式下执行,完成系统的一些重要功能。用户进程在用户模式下执行用户程序,系统调用、中断和异常将引起模式切换。UNIX SVR4 进程状态进程状态 user
28、 running: kernel running: preempted: ready to run, in memory: Asleep in memory: ready to run, swapped: sleeping, swapped: zombie:UNIX SVR4进程状态及其转换 内存就绪用户态运行内核态运行被剥夺就绪换出创建内存睡眠睡眠换出僵死返回用户模式系统调用或中断返回剥夺选中退出中断,中断返回内存空间足够内存空间不足唤醒唤醒换出换进换出睡眠ForkUNIX进程树(1) UNIX中有两个固定进程: 0号是swap进程,系统自举时被创建; 1号是init进程,由0号进程孵化而创
29、建。其他进程都是1号进程的子进程, 当一个交互式用户登录到系统中时,1号进程为这个用户创建用户进程,用户进程在执行应用时创建子进程,从而,构成一棵进程树。UNIX进程树(2) UNIX SVR4的进程描述(1) UNIX进程由三部分组成:proc结构、数据段和正文段,合称进程映像,UNIX中把进程定义为映像的执行。 PCB由基本控制块proc结构和扩充控制块user结构组成。 UNIX SVR4的进程描述(2) proc结构存放一个进程最基本、必需的信息,常驻内存; user结构存放进程运行时才用到的数据和状态信息,当进程暂时不在处理机上运行时,就把它放在磁盘的对换区中,进程的user结构总和
30、进程的数据段一起,在主存和磁盘对换区之间换进/换出。UNIX 进程组成(1) processstructureuserstructurekernelstacktextstructurestackdatatextSystemdatastructureuserspaceSwappableprocessimageResidenttablesUNIX 进程组成(2) 系统中维持一张名叫proc的进程表,共有50个表目,每个表目为一个proc结构,供一个进程使用, 最多同时存在50个进程。创建进程时,在proc表中找一个空表目,以建立起相应于该进程的proc结构。UNIX 进程组成(3)进程映像内容(1
31、) procproc结构结构 包括进程标识符、父进程标识符、进程用户标识符、进程状态、等待的事件、调度优先数、进程的大小、指向user结构和进程存储区(text/data/stack)的指针、有关进程执行时间/核心资源使用/用户设置示警信号等的计时器、就绪队列指针等。UNIX 进程组成(4)进程映像内容(2) useruser结构结构 包括现场保护、内存管理、系统调用、文件管理、文件读写、时间信息、映象位置、用户标识、用户组标识、用户打开文件表、各种标志等。 UNIX 进程组成(5)进程映像内容(3) 系统数据结构系统数据结构 称作ppda,位于数据段的前面,进程proc结构中P-addr指向
32、这个区域的首址。该区共有1KB,前面289B为进程扩充控制块user结构,剩下734B为核心栈,进程运行在核心态时,是它的工作区,用来保存过程调用和中断访问时用到的地址和参数。 UNIX 进程组成(6)进程映像内容(4) 用户数据区用户数据区 存放程序运行时用到的数据,如果进程运行的程序是非共享的,那么这个程序也放于此地。 用户栈区用户栈区 当进程运行在用户态时,这里是它的工作区。 UNIX 进程组成(7)进程映像内容(5) texttext结构结构 正文段在磁盘上和主存中的位置和大小、访问正文段进程数、在主存中访问正文段进程数、标志信息、地址转换信息。 在内存中设置一张正文段表。有40个表目
33、,每个都是一个text结构,记录一个共享正文段的属性(磁盘和主存中的位置、尺寸、共享的进程数等、正文段文件节点指针)。UNIX 进程组成(8)进程映像内容(6) 若一个进程有共享正文段,当把该进程的非常驻内存部分调入内存时,应该关注共享正文段是否也在内存,如果发现不在内存,则要将它调入;UNIX 进程组成(9)进程映像内容(7) 进程的非常驻内存部分调出内存时,要关注共享正文段被共享的情况,只要还有别的共享进程的映象全部在内存,这个共享正文段就不得调出。 在进程映象的三个组成部分中,proc、user和text这三个数据结构是最为重要的角色。UNIX 进程组成(10)进程映像内容(8) 进程区
34、域表进程区域表 系统为每个进程建立进程区域表PPRT(Per Process Region Table)由存储管理系统使用,定义了物理地址与虚拟地址之间的对应关系,进程对存储区域的访问权限。UNIX 进程组成(11) struct proc char p-stat; 进程状态 char p-flag; 进程特征 char p-pri; 进程优先数 char p-sig; 软中断号 char p-uid; 进程所属的用户标识数, char p-time; 进程在内存或外存的驻留时间 char p-cpu; 用于调度优先数计算UNIX 进程组成(12) char p-nice; 计算调度优先数 i
35、nt p-ttyp; 指向对应终端的tty结构 int p-pid; 进程标识数 int p-ppid; 父进程的标识数 int p-addr; 进程数据段起始地址(内存或盘上) int p-size; 数据段大小 int p-wchan; 标识进程睡眠的原因 int * p-textp;指向文本的文本结构 proc NPROCUNIX 进程组成(13) struct user int u-rsav 2;保存r5, r6,用于程序的正常或非正常返回 int u-fsav 2;用于保留浮点寄存器 char u-segflg; I/O目的地址在用户空间或系统空间的标志 char u-error;
36、返回出错号码 UNIX 进程组成(14) char u-uid; 有效用户标识数 char u-ruid; 有效用户小组标识数 char u-rgid; 实际用户小组标识数 int u-procp; 指向本进程proc结构指针 char * u-base;指向读写缓冲存储器的起始地址UNIX 进程组成(15) char * u-count; 存放读写字节数nbytes char * u-offset2; 读、写的起始位置 int * u-cdir; 工作目录文件的inode指针 char u-dbuf DIRSIZ; 存放当前工作文件的路径名DIRSIZ=14 UNIX 进程组成(16) ch
37、ar * u-dirp; 当前目录文件名的指针 struct 构成文件的目录项,由文件所在节点的节点号 ino和文件的路径 int u-ino; 名组成 char u-name DIRSIZ; u-dent;UNIX SVR4的进程创建(1) fork( )创建子进程,系统执行操作: 为子进程分配进程表。 为子进程分配进程标识符。 复制父进程的进程映像,但不复制共享内存区。 增加父进程所打开文件的计数,表示新进程也在使用这些文件。 把子进程置为ready to run状态。 返回子进程标识符给父进程,把0值返回给子进程。UNIX SVR4的进程创建(2) 父进程还应执行以下操作之一,以完成进程
38、指派: 继续呆在父进程中。把进程控制切换到父进程的用户模式,在fork()点继续运行,而子进程进入ready to run状态。 把进程控制传递到子进程,子进程在fork()点继续运行,父进程进入ready to run态。 把进程控制传递到其他进程,父进程和子进程进入ready to run状态。fork( )创建子进程的程序(1)/*spawn the process*/main( ) int pid; /*process-id*/ printf(“Just one process so farn”); printf(“Calling fork n); pid=fork( ); /*Cra
39、at new process*/ if(pid=o) printf (“I am the child processn); else if(pid0) printf(“I am the parent process, child has pid d%n”,pid); else printf(“fork returned error code,no childn”); fork( )创建子进程的程序(2)1子进程是父进程的复制品,完全一样2父子进程的指令执行点都在fork( )语句之后的那个语句3fork( )没有参数,但返回值pid不一样,子进程中pid为0;父进程中pid为非0正整数(即子进
40、程的内部标识号)4父子进程可根据不同pid值执行不同程序,完成不同工作2.3.7 实例研究:Linux进程管理 Linux的进程概念与传统操作系统中的进程概念完全一致,进程是操作系统调度的最小单位。 Linux进程和任务 用户态称进程 核心态称任务 实质上是一个实体 Linux的进程状态(1) TASK_RUNNING:正在运行或准备运行的进程。 TASK_INTERRUPTIBLE:处于等待队列中的进程,一旦资源可用时被唤醒,也可以由其他进程通过信号或定时中断唤醒。 TASK_UNINTERRUPTIBLE:处于等待队列中的进程,一旦资源可用时被唤醒,不可由其他进程通过信号或定时中断唤醒。L
41、inux的进程状态(2) TASK_ZOMBIE:进程运行结束但是尚未消亡时处于的状态。 TASK_STOPPED:进程被暂停,正在等待其他进程发出的唤醒信号。 TASK_SWAPPING:页面被交换出内存的进程。Linux的进程状态转换 僵死TASK_ZOMBIE就绪TASK_RUNNING不可中断TASK_UNINTERRUPTIBLE可中断TASK_INTERRUPTIBLE停止TASK_STOPPED占有CPU运行调度schedulle 时间片到申请资源未果,调用interruptible_sleep_on()申请资源未果,调用sleep_on()申请资源可用后wake_up()申请资
42、源可用,收到信号、wake_up()wake_up_interruptible()创建do_fork()执行do_exit()跟踪系统调用,执行syscall_trace()sys_exit()schedulle()收到SIG_KILL或SIG_CONT后,执行wake_up()Linux创建进程(1) sys_fork()和sys_clone都通过调用do_fork()函数来完成进程的创建。 分配进程控制块task_struct的内存和进程所需的堆栈,并监测是否可以增加新进程; 拷贝当前进程的内容,并对数据成员初始化;为进程运行做准备;返回生成的新进程的进程标识号(pid)。Linux创建进
43、程(2) 如果进程是根据sys_clone()产生的,它的进程标识号就是当前进程的进程标识号,并且对于进程控制块中的一些成员指针并不进行复制,而仅仅把这些成员指针的计数count增加1。这样,父子进程可以有效地共享资源。Linux进程终止 进程终止的系统调用sys_exit()通过调用do_exit()函数实现。函数do_exit()释放进程占用的大部分资源,进入TASK_ZOMBIE状态,调用exit_notify()通知。Linux进程控制块(1) Linux的PCB由结构struct task_struct描述。它的构成如下: Linux进程控制块进程控制块(2)(2)调度用数据成员调度
44、用数据成员 State 进程状态 Flags 进程状态标记 Priority 进程优先数 rt_priority 实时进程优先数 Counter 时间片 Policy 调度策略 Linux进程控制块进程控制块(3)(3)信号处理 Signal 记录进程接收到的信号,共32位,每位对应一种信号 Blocked 进程接收到信号的屏蔽位 Sig 信号对应的处理函数 Linux进程控制块(4)进程队列指针 next_task,prev_task 双向链接指针 next_run,prev_run 就绪队列双向链接指针 p_opptr,p_pptr,p_cptr,p_ysptr,p_osptr 分别指向原
45、始父进程、父进程,子进程、新老兄弟进程Linux进程控制块(5) 进程标识 uid,gid 用户标识和组标识 Group 进程同时拥有的一组用户组号 euid,egid 有效的uid和gid系统安全考虑 fsuid,fsgid 文件系统的uid和gid suid,sgid 系统调用改变uid和gid时,存放真正的uid和gid pid,pgrp,session 进程标识号、组标识号、session标识号Linux进程控制块(6) 时间数据成员timeout 指出进程间隔多久被重新唤醒it_real_value,it_real_incr 时间片计时real_timer 一种定时器结构it_virt_value,it_virt_incr 进程用户态执行时间的软件定时it_prof_value,it_prof_incr 进程执行时间的软件定时utime,stime,cutime,cstime,start_time 进程在用户态、内核态运行时间,所有进程在用户态、内核态运行时间
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 首都医科大学《思想政治学科教学论》2024-2025学年第二学期期末试卷
- 热力学第一定律 课件(共25张)-《无机化学》同步教学(北京出版社)
- 养鸡工安全实践测试考核试卷含答案
- 湖盐制盐工安全文化能力考核试卷含答案
- 动车组机械师安全意识水平考核试卷含答案
- 缫丝工安全意识模拟考核试卷含答案
- 十二碳二元酸装置操作工岗前实操掌握考核试卷含答案
- 生物饵料培养员持续改进模拟考核试卷含答案
- 地理信息采集员安全文明知识考核试卷含答案
- 电子绝缘与介质材料制造工岗前履职考核试卷含答案
- 北京市中钞印制技术研究院有限公司2026应届毕业生招聘4人笔试模拟试题及答案解析
- 2026年标准版离婚协议书(无财产)
- 铝厂化验室制度规范标准
- 2026年事业单位考试综合应用模拟题含答案
- 陕晋青宁四省2025-2026学年高三上学期(1月)第二次联考 历史试题及答案
- 2026年公安联考申论试题及答案
- (2026年春新版)人教版三年级英语下册全册教学设计
- 三调保密协议书
- 2026年黑龙江农业经济职业学院单招职业技能测试题库及参考答案详解1套
- 搭桥手术护理个案
- 2025年时事政治考题及答案(100题)
评论
0/150
提交评论