《第6unix进程管理.ppt》由会员分享,可在线阅读,更多相关《第6unix进程管理.ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第6unix进程管理 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望启动过程启动过程:引导程序开始系统自举,引导在外存硬盘中的操作系引导程序开始系统自举,引导在外存硬盘中的操作系统进入内存。统进入内存。这一过程是一个启动这一过程是一个启动UNIX系统、设置和初始化各种系统、设置和初始化各种数据结构与表格、建立控制数据结构与表格、建立控制UNIX系统内核运行的系统内核运行的控制进程和建立控制终端进程与控制进程和建立控制终端进程与Shell进程运行的进程运行的1#进程
2、。进程。最后,系统在建立了最后,系统在建立了0#进程和进程和1#进程等之后,将出现进程等之后,将出现相应的提示符,以等待用户输入命令来执行和处理相应的提示符,以等待用户输入命令来执行和处理用户应用程序。用户应用程序。核心进程称为核心进程称为0#进程进程6.1 UNIX进程和存储管理简介进程和存储管理简介图图6.1 UNIX中各进程的关系中各进程的关系 终端管理进程与终端管理进程与Shell进程是进程是1#进程的子进程的子进程,除了进程,除了0#进程和进程和1#进程之外,其他进程都进程之外,其他进程都是由父进程创建的。人是由父进程创建的。人们也称们也称1#进程是所有用进程是所有用户进程的祖先。户
3、进程的祖先。UNIX操作系统的操作系统的0#进程在核心态下运行,而进程在核心态下运行,而1#进程进程以及由以及由1#进程衍生的其他进程都可在用户态和核心进程衍生的其他进程都可在用户态和核心态两种执行模式下执行。态两种执行模式下执行。在不同的执行模式下执行时,同一进程使用不同的堆在不同的执行模式下执行时,同一进程使用不同的堆栈和不同的管理数据结构。栈和不同的管理数据结构。在两种不同模式下执行的程序不能互相访问各自的堆在两种不同模式下执行的程序不能互相访问各自的堆栈,它们之间的参数传递往往需要借助通用寄存器栈,它们之间的参数传递往往需要借助通用寄存器等硬件。等硬件。两态之间的主要区别是,用户态下的
4、进程能存取它们两态之间的主要区别是,用户态下的进程能存取它们自己的指令与数据,但不能存取核心指令和数据。自己的指令与数据,但不能存取核心指令和数据。然而,核心态下的进程能存取核心和用户地址。另然而,核心态下的进程能存取核心和用户地址。另外,某些机器的指令是特权指令,在用户态下执行外,某些机器的指令是特权指令,在用户态下执行会引起错误,只能在核心态下执行。会引起错误,只能在核心态下执行。0#进程是进程是UNIX系统中唯一只在核心态下执行的进程。系统中唯一只在核心态下执行的进程。三种功能三种功能:1.初始化时创建初始化时创建1#进程进程 2.负责调度分配处理器负责调度分配处理器 3.负责进程交换负
5、责进程交换UNIX进程的核心态和用户态之间的转换靠中断以及硬进程的核心态和用户态之间的转换靠中断以及硬件设置等方法完成件设置等方法完成 图图6.3 进程控制系统进程控制系统进程控制系统在逻辑进程控制系统在逻辑上由四个模块组成上由四个模块组成:1.与文件系统的接口与文件系统的接口部分部分2.进程本身的控制部进程本身的控制部分,包括进程的创建、分,包括进程的创建、进程调度和进程的撤进程调度和进程的撤消等消等3.进程间控制部分,进程间控制部分,包括进程间的互斥、包括进程间的互斥、同步和通信等,同步和通信等,4.存储管理部分。存储管理部分。UNIX System 中引起进程调度的情况有五种:中引起进程
6、调度的情况有五种:(1)当前执行进程申请内存等系统资源未得到满足,当前执行进程申请内存等系统资源未得到满足,从而自己调用从而自己调用sleep 过程过程,放弃处理机进入睡眠状态。放弃处理机进入睡眠状态。(2)为了与其他并发进程保持同步,调用了为了与其他并发进程保持同步,调用了wait或或stop过程等,从而主动放弃了处理机而进入睡眠状过程等,从而主动放弃了处理机而进入睡眠状态。态。(3)当系统发现系统中某进程的优先级已高于当前执当系统发现系统中某进程的优先级已高于当前执行进程的优先级时行进程的优先级时(4)时间片用完,且当前进程的优先级低于其他就绪时间片用完,且当前进程的优先级低于其他就绪进程
7、。进程。(5)当前进程调用当前进程调用exit,自我终止时。,自我终止时。6.2 UNIX进程结构进程结构6.2.1 进程的概念进程的概念 进程的静态描述是由三部分组成的,即进程状进程的静态描述是由三部分组成的,即进程状态控制块态控制块PCB(栈段),进程的程序文本(正文)(栈段),进程的程序文本(正文)段以及进程的数据段。段以及进程的数据段。进程控制块进程控制块分为两部分分为两部分:基本控制块基本控制块:PROC结构结构 常驻内存常驻内存,记录进行进程调记录进行进程调度时必须使用的一些主要信息度时必须使用的一些主要信息.扩充控制块扩充控制块:USER结构结构 非常驻内存非常驻内存,可存放在磁
8、盘可存放在磁盘的对换区中的对换区中.所包含内容见书所包含内容见书6.2.4 进程的状态和状态转换进程的状态和状态转换UNIX System 中进程共有中进程共有9 个状态,它们是:个状态,它们是:(1)进程在用户态下的执行态进程在用户态下的执行态SRUN。(2)进程在核心态下的执行态进程在核心态下的执行态SRUN。(3)进程处于就绪态进程处于就绪态SRUN(4)进程处于就绪态进程处于就绪态SRUN,但交换程序已将其换出内,但交换程序已将其换出内存。存。(5)进程正在睡眠,且驻留在内存中的状态进程正在睡眠,且驻留在内存中的状态SSLEEP。(6)进程正在睡眠,已换出内存的状态进程正在睡眠,已换出
9、内存的状态SSLEEP。(7)进程正从核心态返回用户态。进程正从核心态返回用户态。(8)创建状态创建状态(9)僵死状态僵死状态图图6.8 进程状态转换图进程状态转换图图图6.9 进程树的形成进程树的形成6.3 进进 程程 控控 制制6.3.1 UNIX启动及进程树的形成启动及进程树的形成 6.3.2 进程控制进程控制1.进程的创建进程的创建fork的功能是创建一个子进程。调用的功能是创建一个子进程。调用fork的进程称为的进程称为父进程。父进程。系统调用系统调用fork的语法格式是:的语法格式是:pid fork();CPU 在父进程中时,在父进程中时,pid 值为所创建子进程的进程号,值为所
10、创建子进程的进程号,若在子进程中时,若在子进程中时,pid 的值为零。的值为零。系统调用系统调用fork通过执行核心程序通过执行核心程序fork过程完成的功能过程完成的功能是:是:(1)为子进程在为子进程在proc结构表中分配一个空项。结构表中分配一个空项。(2)为子进程赋一个唯一的进程标识号为子进程赋一个唯一的进程标识号pid。(3)复制一个父进程上下文的逻辑副本。复制一个父进程上下文的逻辑副本。(4)增加与父进程相关联的有关文件系统的进程引用增加与父进程相关联的有关文件系统的进程引用计数。计数。(5)对父进程返回子进程的进程标识号,对子进程返对父进程返回子进程的进程标识号,对子进程返回零。
11、回零。图图6.10 fork流程图流程图2.执行一个文件的调用执行一个文件的调用exec()3.父进程和子进程同步父进程和子进程同步Wait()4.进程的终止进程的终止系统调用系统调用exit(rv)自我终止当前进程,使其进入自我终止当前进程,使其进入SZOMB 僵死状态,等待父进程进行善后处理。僵死状态,等待父进程进行善后处理。图图6.11 shell执行过程执行过程6.4 UNIX进程调度与交换进程调度与交换UNIX系统的调度与交换都是进程系统的调度与交换都是进程0 的两个部分。它的两个部分。它们分别由们分别由 swtch()过程和过程和sched()过程实现。事实上,过程实现。事实上,用
12、于交换的用于交换的sched 过程是把处于外存就绪态的进程过程是把处于外存就绪态的进程换入内存,相当于三级调度中的中级调度(换入内存,相当于三级调度中的中级调度(UNIX系统中没有高级调度)。因此,有时也把进程系统中没有高级调度)。因此,有时也把进程0 称称为调度进程。为调度进程。6.4.1 进程调度进程调度1.调度原理调度原理UNIX系统的进程调度采用多级反馈轮转调度法系统的进程调度采用多级反馈轮转调度法(RoundRobinwithMultiple Feedback)。)。即系统给进程分一个时间片,当时间片结束时,动即系统给进程分一个时间片,当时间片结束时,动态计算该进程的优先级,若有优先
13、级高于当前进程态计算该进程的优先级,若有优先级高于当前进程的内存就绪态进程时,系统设置调度标识,在由核的内存就绪态进程时,系统设置调度标识,在由核心态转换到用户态前由心态转换到用户态前由swtch 过程调度优先级高的过程调度优先级高的进程执行,并把被抢先的进程反馈到相应的优先级进程执行,并把被抢先的进程反馈到相应的优先级队列中。一个进程在它结束之前,可能要经过多次队列中。一个进程在它结束之前,可能要经过多次反馈循环。反馈循环。UNIX的进程调度按时间片计算优先级的进程调度按时间片计算优先级,并按优先级的并按优先级的高低来调度进程高低来调度进程,抢占处理机。因此,抢占处理机。因此,UNIX系统的
14、系统的进程调度是基于时间片加优先级的。进程调度是基于时间片加优先级的。UNIX的进程调度涉及的主要问题是:的进程调度涉及的主要问题是:(1)调度的时机。调度的时机。(2)调度标志设置。调度标志设置。(3)调度策略与优先数的计算。调度策略与优先数的计算。(4)调度的实现。调度的实现。下面,分别说明这几个问题。下面,分别说明这几个问题。2.调度的时机调度的时机发生进程调度的时机实质上只有两个:发生进程调度的时机实质上只有两个:1.进程自动放弃处理机时自动转入调度进程进程自动放弃处理机时自动转入调度进程2.在由核心态转入用户态时,系统设置了高优先级就在由核心态转入用户态时,系统设置了高优先级就绪进程
15、的强迫调度标识。绪进程的强迫调度标识。3.调度标识的设置调度标识的设置UNIX System 中有三个关于调度和交换用的调度中有三个关于调度和交换用的调度标识。它们是标识。它们是runrun、runin和和runout。runrun标识标识是要求处理机调度程序进行调度的标识,是要求处理机调度程序进行调度的标识,由唤醒原语由唤醒原语wakeup、setrun及优先级设置过程及优先级设置过程setpri在发现某进程的优先级高于当前进程的优先在发现某进程的优先级高于当前进程的优先级时,设置级时,设置runrun标识。另外,每隔一秒一次的时标识。另外,每隔一秒一次的时钟中断处理中也将检查各就绪态进程的
16、优先级而设钟中断处理中也将检查各就绪态进程的优先级而设置置runrun标识。只要设置了该标识,在中断陷阱程标识。只要设置了该标识,在中断陷阱程序结束之前,系统就会调用序结束之前,系统就会调用swtch 过程调度具有最过程调度具有最高优先级的进程执行。高优先级的进程执行。runin 和和runout标识是用于就绪进程换入换出内存的。标识是用于就绪进程换入换出内存的。runin 表示内存无足够空间换入一个外存就绪态进程,表示内存无足够空间换入一个外存就绪态进程,设置设置runin 标识也意味着内存中无适当的进程可以标识也意味着内存中无适当的进程可以换出。换出。runout标识与标识与runin 相
17、反,它表示外存交换区中无适相反,它表示外存交换区中无适当的进程可以调入内存。当的进程可以调入内存。4.调度策略与优先数的计算调度策略与优先数的计算在在UNIX系统中,优先数越大优先级越低。系统中,优先数越大优先级越低。优先数:优先数:P-pri P-CPU2 PUSER P-nice NZERO PUSER 和和NZERO 是称为基本用户优先数的阈值。这两个数是称为基本用户优先数的阈值。这两个数是常数,分别为是常数,分别为25和和20。P-CPU 为每个进程的最近一次为每个进程的最近一次CPU 使用时间。当进程使用使用时间。当进程使用CPU时,系统每个时钟周期对该进程的时,系统每个时钟周期对该
18、进程的P-CPU 加加1,最多,最多时该值可达时该值可达80。另外,系统按每秒钟的时间间隔对。另外,系统按每秒钟的时间间隔对P-CPU 执行除以执行除以2 的衰减操作。这样,如果系统的时钟周期为的衰减操作。这样,如果系统的时钟周期为16.667ms的话,则系统进行每秒时钟中断处理时,的话,则系统进行每秒时钟中断处理时,P-CPU 的值将由的值将由60变为变为30。P-nice是系统允许用户设置的一个进程优先数偏移值。是系统允许用户设置的一个进程优先数偏移值。System 中,中,P-nice可以被设置成可以被设置成0 40间的一个数。但一旦设置间的一个数。但一旦设置之后,除了超级用户可以将其减
19、小之外,普通用户仅能作之后,除了超级用户可以将其减小之外,普通用户仅能作增加的改变。增加的改变。6.4.2 交换交换交换功能由进程交换功能由进程0完成。在系统初始化结束时,进程完成。在系统初始化结束时,进程0 就进入无限循环,先试图从外存交换区换入进程就进入无限循环,先试图从外存交换区换入进程(因为初始化结束时内存总不会是满的),内存不(因为初始化结束时内存总不会是满的),内存不够时再换出进程。如果没有进程要换入换出时,则够时再换出进程。如果没有进程要换入换出时,则该进程进入睡眠状态。该进程进入睡眠状态。系统通过时钟中断定期唤醒进程系统通过时钟中断定期唤醒进程0 完成交换功能。在完成交换功能。
20、在进程进程0 执行之前,时钟中断处理程序计算出每个就执行之前,时钟中断处理程序计算出每个就绪进程在内存或外存中驻留的时间。绪进程在内存或外存中驻留的时间。图图6.13 sched过程流程图过程流程图6.5 进进 程程 通通 信信6.5.1 UNIX的低级通信的低级通信UNIX的低级通信主要用来传递进程间的控制信号。的低级通信主要用来传递进程间的控制信号。实现传递控制信号的方法有两种。实现传递控制信号的方法有两种。利用睡眠原语利用睡眠原语sleep 和唤醒原语和唤醒原语wakeup实现进程间实现进程间的同步与互斥。的同步与互斥。利用软中断信号实现同一用户的诸进程之间的通信。利用软中断信号实现同一用户的诸进程之间的通信。