2.2进程的描述进程的特征1.动态性动态性是进程最基本的特征。2.并发性这是指多个进程实体,同存于内存中,能在一段时间内同时运行。并发性是进程的重要特征,同时也成为OS的重要特征。引入进程的目的也是为了使该进程的程序能和其它进程的程序并发执行。3.独立性进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位。没有建立进程的程序,不能作为一个独立的单位参加运行。4.异步性进程按各自独立的、不可预知的速度向前推进5.结构特性从结构上看,进程是由程序段、数据段及进程控制块三部分组成。进程的基本状态一、进程的三种基本状态1.就绪状态(Ready)当进程已经分配到除CPU以外的所有必要的资源后,只要能再获得处理机,就可以立即执行。这时的进程的状态称为就绪状态。2.执行状态(Running)(运行状态)指进程已获得处理机,其程序正在执行。在单处理机系统中,只能有一个进程处于执行状态。(在多处理机中,可能有多个进程处于执行状态)3.阻塞状态(Block)(等待状态)进程因为发生某个事件而暂停执行时的状态(如:请求I/O、申请缓冲空间等),也就是说,进程受到阻塞,所以称这种暂停状态为阻塞状态,有时也称“等待”状态或“睡眠”状态。2进程状态间的变迁①就绪→执行:调度②执行→等待:等待某个事件发生而睡眠③等待→就绪:因等待的事件发生而唤醒④执行→就绪:时间片用完二、新状态和终止状态1.新状态是一个进程刚刚建立,但还没有将它送入就绪队列时的状态2.终止状态当一个进程已经正常结束或异常结束,OS已经将它从就绪队列中移出,但还没有将它撤消时的状态。建立进程第一步为新登陆的用户程序创建进程,并为他分配资源,此时进程处于新状态第二步把新创建的进程送入就绪队列,一旦进程进入就绪队列,它便由新状态转变为就绪状态。撤销进程第一步第二步二、程状态的转换对于一个进程来说“新状态”和“终止状态”只有一次。1.新状态就绪状态当就绪队列能够接纳新的进程时,OS便把处于新状态的进程移入就绪队列,此时进程由新状态转变为就绪状态。2.就绪状态执行状态处于就绪状态的进程,当进程调度程序为它分配了处理机后,该进程便由就绪状态变为执行状态,正在执行的进程也称为当前进程。3.执行状态阻塞状态正在执行的进程因发生某件事件而无法执行。例如:进程请求访问临界资源,而该资源正被其它进程访问,则请求该资源的进程将由执行状态转变为阻塞状态。4.执行状态就绪状态正在执行的进程,如果事件发生或中断而被暂停执行,该进程便由执行状态转变为就绪状态。(分时系统中,时间片用完;抢占调度方式中,优先权高抢占处理机)5.执行状态终止状态当一个进程经完成或发生某事件,如程序中出现地址越界、非法指令等错误,而被异常结束时,进程将由执行状态转变为终止状态。就绪新进程结束执行阻塞接纳事件发生进程调度等待某事件完成中断进程的挂起状态一、挂起状态的引入1终端用户的需要当终端用户在自己的程序运行期间,发现有可疑问题时,往往希望暂时使自己的进程静止下来。也就是说,如果进程处于执行状态,则暂停执行;如果进程处于就绪状态,则暂时不接受调度,以便研究其执行情况或对程序进行修改。我们把这种静止状态称为挂起状态。2.父进程的需求父进程常常希望考察和修改子进程,或者当要协调各子进程间的活动时,要挂起自己的子进程。3.操作系统的需要操作系统有时需要挂起某些进程,检查运行中资源的使用情况及进行记帐,以便改善系统的运行性能。4.对换的需要为了缓和内存紧张的情况,将内存中处于阻塞状态的进程换至外存上。5.负荷调节的需要当实时系统中的工作负荷较重,可能影响到对实时任务的控制时,可由系统把一些不重要或不紧迫的进程挂起,以保证系统仍然能正常运行。二、进程状态的转换在引入挂起状态后,又将增加从挂起状态(又称静止状态)到非挂起状态(又称活动状态)的转换。或者相反,可以有以下几种情况:1.活动就绪静止就绪当进程处于未被挂起的就绪状态时,称此为活动就绪状态,表示为Readya。当用挂起原语Suspend将该进程挂起后,该进程便转变为静止就绪状态。表示为Readys(处在Readys状态的进程,不再被调度执行)2.活动阻塞静止阻塞当进程处于未被挂起的阻塞状态时,称为它处在活动阻塞状态(表示为Blockeda)。当Suspend原语将它挂起后,进程便转变为静止阻塞状态(表示为Blockeds)。处于该状态的进程,在其所期待的事件出现以后,他将从静止阻塞变为静止就绪。3.静止就绪活动就绪处于Readys状态的进程,若用激活原语Active激活后,该进程将转变为Readya状态。4.静止阻塞活动阻塞处于Blockeds状态的进程,若用激活原语Active激活后,进程将转变为Blockeda状态。挂起执行活动就绪活动阻塞静止就绪静止阻塞激活释放挂起释放激活挂起具有挂起状态的进程状态图进程控制块PCB进程的静态描述:由三部分组成PCB、有关程序段和该程序段对其进行操作的数据结构集。各部分的作用:1进程控制块:用于描述进程情况及控制进程运行所需的全部信息。2程序段:是进程中能被进程调度程序在CPU上执行的程序代码段。3数据段:一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行后产生的中间或最终数据。进程控制块中的信息进程控制块中主要包括四个方面用于描述和控制进程运行的信息。11.进程标识符信息进程标识符用于唯一的标识一个进程。一个进程通常有以下两种标识符。外部标识符。由创建者提供,通常是由字母、数字组成,往往是用户(进程)访问该进程使用。外部标识符便于记忆,如:计算进程、打印进程、发送进程、接收进程等。内部标识符:为了方便系统使用而设置的。在所有的OS中,都为每一个进程赋予一个唯一的整数,作为内部标识符。它通常就是一个进程的符号,为了描述进程的家族关系,还应该设置父进程标识符以及子进程标识符。还可以设置用户标识符,来指示该进程由哪个用户拥有。处理机状态信息处理机状态信息主要是由处理机各种寄存器中的内容所组成。通用寄存器。又称为用户可视寄存器,可被用户程序访问,用于暂存信息。指令寄存器。存放要访问的下一条指令的地址。程序状态字PSW。其中含有状态信息。(条件码、执行方式、中断屏蔽标志等)用户栈指针。每个用户进程有一个或若干个与之相关的系统栈,用于存放过程和系统调用参数及调用地址。栈指针指向该栈的栈顶。3.进程调度信息在PCB中还存放了一些与进程调度和进程兑换有关的信息。(1)进程状态。指明进程当前的状态,作为进程调度和对换时的依据。(2)进程优先级。用于描述进程使用处理机的优先级别的一个整数,优先级高的进程优先获得处理机。(3)进程调度所需要的其他信息。(进程已等待CPU的时间总和、进程已执行的时间总和)(4)事件。这是进程由执行状态转变为阻塞状态所等待发生的事件。(阻塞原因)PCB的组织方式常用的组织方式有两种:链接方式、索引方式。1.链接方式:具有相同状态的PCB,用其中的链接字,链接成一个队列。这样就可以形成就绪队列、若干个阻塞队列和空白队列等。对其中的就绪队列常按照进程优先权的大小排列,把优先权高的进程的PCB排在队列前面。执行指针就绪队列指针阻塞队列指针空闲队列指针PCB1PCB2PCB3PCB4PCB5PCB6PCB7PCB8PCB943087901……2.索引方式:系统根据所有进程的状态,建立几张索引表。例如:就绪索引表、阻塞索引表的国内。并把各索引表在内存的首地址记录在内存中的一些专用单元中。每个索引表的表目中,记录具有相同状态的某个PCB在PCB表中的地址。执行指针就绪表指针阻塞表指针就绪索引表阻塞索引表PCB3PCB4PCB5PCB7PCB6PCB2PCB1按索引方式组织PCB进程上下文进程上下文:是进程执行活动全过程的静态描述。包括计算机系统中与执行该进程有关的各种寄存器的值、程序段在经过编译之后形成的机器指令代码集、数据集及各种堆栈值和PCB结构。可按一定的执行层次组合,如用户级上下文、系统级上下文等。进程空间任何一个进程,都有自己的地址空间,把该空间称为进程空间或虚空间。进程空间的大小只与处理机的位数有关。程序的执行都在进程空间内进行。用户程序、进程的各种控制表格都按一定的结构排列在进程空间里。在Unix和Linux系统中,进程空间还被划分为用户空间和系统空间两大部分在进程空间被划分为两大部分后,用户程序在用户空间内执行,操作系统内核程序在进程的系统空间内执行。为了防止用户程序访问系统空间,造成访问出错,计算机系统还通过程序状态寄存器设置不同的执行模式,用户模式和系统模式来进行保护,即用户态和系统态。练习1.为使进程由活动就绪转变为静止就绪,应利用__⑴__原语;为使进程由执行状态变为阻塞状态,应利用__⑵__原语;为使进程由静止就绪变为活动就绪,应利用__⑶__原语;从阻塞状态变为就绪状态应利用__⑷__原语。⑴-⑷:A.createB.suspendC.activeD.blockE.wakeup2.正在执行的进程由于时间片用完而被暂停执行,此时进程应从执行状态变为__⑴__状态;处于静止阻塞状态的进程,在进程等待事件出现后,应转变为__⑵__状态;若进程正处于执行状态时,应终端的请求而暂停下来以便研究其运行情况,这时进程应转变为__⑶__状态,若进程已处于阻塞状态,则此时应转变为__⑷__状态。⑴-⑷:A.静止阻塞B.活动阻塞C.静止就绪D.活动就绪E.执行⑴-⑷:A.createB.suspendC.activeD.blockE.wakeup⑴B⑵D⑶C⑷E⑴D⑵C⑶C⑷A