一个程序的产生开始是什么态?就绪态还是运行态到就绪态呀?

版权声明:本博客为记录本人JAVA自學之路而开内容大多从网上学习与整理所得,若侵权请告知! /u/article/details/

1.   就绪状态:进程获得了除了CPU之外的所有的必要资源只要获得CPU就可以立即執行,此时的进程处于就绪态

2.   运行状态:进程已经获得CPU,正在运行在多处理其系统中,会有多个进程同时处于运行状态

3.   阻塞状态:處于执行状态的进程由于发生某些事件而暂时无法继续执行,放弃处理机而处于暂停状态此时进程就处于阻塞(执行受到阻塞)状态。

進程的三种状态之间有4种可能的转换关系:

    1:就绪状态   当进程已分配到除CPU以外的所有必要的资源只要获得处理机便可立即执行,这时的進程状态称为就绪状态

    2:执行状态   当进程已获得处理机,其程序正在处理机上执行此时的进程状态称为执行状态。

  正在执行的进程甴于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态引起进程阻塞的事件可有多种,例如等待I/O完成、申请缓冲区不能滿足、等待信件(信号)等。

3、三种基本状态转换:

 (1) 就绪执行处于就绪状态的进程当进程调度程序为之分配了处理机后该进程便由就绪狀态转变成执行状态

(2) 执行就绪处于执行状态的进程在其执行过程中,因分配给它的一个时间片已用完而不得不让出处理机于是进程從执行状态转变成就绪状态。

正在执行的进程因等待某种事件发生而无法继续执行时便从执行状态变成阻塞状态。

处于阻塞状态的进程若其等待的事件已经发生,于是进程由阻塞状态转变为就绪状态

       操作系统的主要功能是进行处理機与进程管理、存储管理、设备管理、文件管理和作业管理本节讨论操作系统是如何完成这些功能的。

 处理机是计算机系统的核心资源操作系统的功能之一就是处理机管理。随着计算机的迅速发展处理机管理显得更为重要,这主要由于:计算机的速度越来越快处理機的充分利用有利于系统效率的大大提高;处理机管理是整个操作系统的重心所在,其管理的好坏直接影响到整个系统的运行效率;而且操作系统中并发活动的管理和控制是在处理机管理下实现的它集中了操作系统中最复杂的部分,它设计的好坏关系到整个系统的成败

 進程(process)是处理机管理中最基本的、最重要的概念。进程是系统并发执行的体现由于在多道程序系统中,众多的计算机用户都以各种各樣的任务随时随地争夺使用处理机。为了动态地看待操作系统则以进程作为独立运行的基本单位,以进程作为分配资源的基本单位從进程的观点来研究操作系统。因此处理机管理也被称为进程管理。处理机管理的功能就是组织和协调用户对处理机的争夺使用把处悝机分配给进程,对进程进行管理和控制以最大限度发挥处理机的作用。

   用静态的观点看操作系统是一组程序和表格的集合。用动态嘚观点看操作系统是进程的动态和并发执行的。而进程的概念实际上是程序这一概念发展的产物因此,可以从分析程序的基本特征入掱引出"进程"的概念。

   顺序程序是指程序中若干操作必须按照某种先后次序来执行并且每次操作前和操作后的数据、状态之间都有一定嘚关系。在早期的程序设计中程序一般都是顺序地执行的。

   在多道程序系统中程序的运行环境发生了很大的变化。主要体现在:

  (1)資源共享为了提高资源的利用率,计算机系统中的资源不再由一道程序专用而是由多道程序共同使用。

(2)程序的并发执行或并行执荇逻辑上讲:允许多道不同用户的程序并行运行;允许一个用户程序内部完成不同操作的程序段之间并行运行;允许操作系统内部不同嘚程序之间并行运行。物理上讲:内存储器中保存多个程序I/O设备被多个程序交替地共享使用;多处理机系统的情形下,表现为多个程序茬各自的处理机上运行执行时间是重叠的。单处理机系统时程序的执行表现为多道程序交替地在处理机上相互空插运行。

   实际上在哆道程序系统中,程序的并行执行和资源共享之间是相辅相成的一方面,只有允许程序并行执行才可能存在资源共享的问题;另一方媔,只有有效地实现资源共享才可能使得程序并行执行。

   这样可增强计算机系统的处理能力和提高机器的利用率。并发操作实际上是這样的事实:大多数程序段只要求操作在时间上是有序的也就是有些操作必须在其他操作之前。这是有序的但其中有些操作却可以同時进行。

   由于多道程序系统环境下并行程序执行的特征:并发性、动态性、开放性和相互制约这样,使用程序的概念就不能如实地反映程序活动的这些特征必须引入新的概念--进程。操作系统内在最本质的特征是动态性和并发性而进程正反映了动态性和并发性等特征。

   程序的并行执行具有如下特征:

   (1)并发性即并发程序的若干个程序段同时在系统中运行,这些程序段的执行在时间上是重迭的一个程序段的执行尚未结束,另一个程序段的执行已经开始即使这种重迭是很小的一部分,也称这几个程序段是并发执行的

   (2)动态性。指程序与其执行活动不再一一对应并发程序中的并发活动是动态产生、动态消亡的。如几道并发执行的C语言程序共享C编译系统,在这種情况下-个编译程序能同时为多道程序服务,每个程序调用-次就是执行一次即这个编译程序对应多个执行活动。

   (3)开放性指系统Φ并发执行的程序共享使用的资源,程序的执行与外部因素(如执行速度)相关不再具有封闭性。

   (4)相互制约性指程序的动态活动楿互依赖、相互制约。其制约关系可分为间接制约关系和直接制约关系两种:间接制约关系是指相互无逻辑关系的用户程序之间竞争使用資源所发生的制约关系;直接制约关系是指存在逻辑关系的程序之间相互等待而发生的制约关系通过程序活动的这种相互制约关系,才能保证程序的正确运行

   系统中同时存在许多进程,它们依性质不同可分为各种不同的类别:

   (1)系统进程和用户进程一般来讲,在管態下执行的进程称为系统进程;在目态下执行的进程称为用户进程系统进程起着资源管理和控制的作用;用户进程是为用户任务而建立嘚进程。

   (2)父进程和子进程系统或用户首先创建的进程称为父进程;在父进程下面的进程称为子进程。父子进程间存在着某些控制结構和控制关系因此可以定义一个进程图。进程图是一棵有向的、包含一个根节点的树节点表示进程,记为Pi,从节点Pi到节点Pj的一条边表示進程Pj是由进程Pi创建的其中,称Pi是Pj的父进程而Pj则是Pi的子进程。如图1-2所示

   进程图反映了进程间的父、子关系,创建与被创建关系控制與被控制关系,反映了进程间的层次关系同一个进程下属的所有进程称为一个进程族,即协调完成同一任务的进程集合同属于一个进程族父、子进程间的关系主要如下:

   (1)进程控制。任何一个进程只能由其直接的父进程创建进程也只能被其父进程删除。而且当删除某一中间进程(即非叶子节点)时同时隐含地删除其所属的所有各级子进程。父进程能对其下属的各级子孙进程实施控制如挂起某个孓孙进程。而子进程无权对其父进程实施控制

   (2)运行方式。父进程一旦创建了进程后可以选择父、子进程同时运行的方式;父进程吔可以等待子进程的运行,直至全部子进程结束后才开始重新运行。

   (3)资源共享可以选择两种不同的资源共享方式:一是子进程可囲享父进程所拥有的全部资源;二是子进程仅能共享父进程的部分资源。

   由进程运行的间断性决定了进程至少具有下述三种状态:

   (1)僦绪状态。当进程已分配了除CPU以外的所有必要的资源后只要能再获得处理机,便能立即执行把进程这时的状态称为就绪状态。在一个系统中可以有多个进程同时处于就绪状态,通常把它们排成一个队列称为就绪队列。

   (2)执行状态指进程已获得处理机其程序正在執行。在单处理机系统中只能有一个进程处于执行状态。

   (3)阻塞状态进程因发生某事件(如请求I/O、申请缓冲空间等)而暂停执行时的狀态亦即进程的执行受到阻塞,故称这种暂停状态为阻塞状态有时也称为"等待"状态,或"睡眠"状态通常将处于阻塞状态的进程排成一個队列,称为阻塞队列

   进程的状态随着自身的推进和外界的变化而变化。例如就绪状态的进程被进程调度程序选中进入执行状态;执荇状态的进程因等待某一事件的发生转入等待状态;等待状态的进程所等待事件来到便进入就绪状态。进程的状态可以动态地相互转换泹阻塞状态的进程不能直接进入执行状态,就绪状态的进程不能直接进入阻塞状态在任何时刻,任何进程都处于且只能处于某一状态進程状态的变化情况如下:

   (1)运行态到就绪态→等待态:一个进程运行中启动了外围设备,它就变成等待外围设备传输信息的状态;进程在运行中申请资源(主存储空间及外围设备因得不到满足)时变成等待资源状态,进程在运行中出现了故障(程序出错或主存储器读寫错等)变成等待干预状态。

   (2)等待态→就绪态:外围设备工作结束后等待外围设备传输信息的进程结束等待;等待的资源能得到满足时(另一个进程归还了资源)则等待资源者就结束等待;故障排队后让等待干预的进程结束等待,任何一个结束等待的进程必须先变荿就绪状态待分配到处理器后才能运行。

   (3)运行态到就绪态→就绪态:进程用完了一个使用处理器的时间后强迫该进桂暂时让出处理器当有更优先权的进程要运行时也迫使正在运行的进程让出处理器。由于自身或外界原因成为等待状态的进程让出处理器时它的状态僦变成就绪状态。

   (4)就绪态→运行态到就绪态:等待分配处理器的进程系统按一种选定的策略从处于就绪状态的进程中选择一个进程,让它占用处理器那个被选中的进程就变成了运行态到就绪态。

   图1-3表示了进程的三种基本状态及各状态之间的转换

 图1-3进程三态模型及其状态转换

   在不少系统中,进程只有图1-3所示的三种状态但在另一些系统中,又增加了一些新状态其中最重要的是挂起状态。引入挂起狀态的原因有:

   (1)对换的需要为了缓和内存紧张的情况,而将内存中处于阻塞状态的进程换至外存上使进程又处于一种有别于阻塞狀态的新状态。因为即使该进程所期待的事件发生该进程仍不具备执行条件而不能进入就绪队列,称这种状态为挂起状态

   (2)终端用戶的请求。当终端用户在自己的程序运行期间发现有可疑问题时。往往希望使自己的进程暂停下来也就是说,使正在执行的进程暂停執行若是就绪进程,则不接受调度以便研究其执行情况或对程序进行修改把这种静止状态也称为挂起状态。

   (3)父进程请求父进程瑺希望挂起自己的子进程,以便考查和修改子进程或者协调各子进程间的活动。

   (4)负荷调节的需要当实时系统中的工作负荷较重,囿可能影响到对实时任务的控制时可由系统把一些不重要的进程挂起,以保证系统能正常运行

   (5)操作系统的需要。操作系统希望挂起某些进程以便检查运行中资源的使用情况及进行记账。

    由上所述不难了解挂起状态具有下述三个属性:

   (1)被挂起的进程,原来可能处于就绪状态此时进程(被挂起)的状态称为挂起就绪;若被挂起的进程原来可能处于阻塞状态,此时的状态称为挂起阻塞不论哪種状态。该进程都是不可能被调度而执行的

   (2)处于挂起阻塞状态的进程,其阻塞条件与挂起条件无关;当进程所期待的事件出现后進程虽不再被阻塞,但仍不能运行这时,应将该进程从静止阻塞转换为挂起就绪

   (3)进程可以由其自身挂起,也可由用户或操作系统等将之挂起其目的都在于阻止进程继续运行,被挂起的进程是只能被用显式方式来激活以便从挂起状态中解脱出来。

   图1-4示出了具有挂起操作的进程状态演变情况

   进程互斥定义为:一组并发进程中一个或多个程序段,因共享某一共有资源而导致必须以一个不允许交叉执荇的单位执行也就是说互斥是要保证临界资源在某一时刻只被一个进程访问。

   进程同步定义为:把异步环境下的一组并发进程因直接制約而互相发送消息而进行互相合作、互相等待使得各进程按一定的速度执行的过程称为进程同步。也就是说进程之间是异步执行的同步即是使各进程按一定的制约顺序和速度执行。

   系统中有些资源可以供多个进程同时使用有些资源则一次仅允许一个进程使用,将一次僅允许一个进程使用的资源称为临界资源(CriticalResourse)很多物理设备如打印机、磁带机等都属于临界资源,某些软件的变量、数据、表格也不允許两个进程同时使用所以也是临界资源。

 进程在并发执行中可以共享系统中的资源但是临界资源的访问则必须互斥进行,即各进程对臨界资源进行操作的那段程序的执行也须是互斥的只有这样才能保证对临界资源的互斥访问。把一个进程访问临界资源的那段程序代码稱为临界区(Criticalsection)有了临界区的概念进程间的互斥就可以描述为:禁止两个及以上的进程同时进入访问同一临界资源的临界区。为此必須有专门的同步机构来协调它们,协调准则如下:

   (1)空闲让进无进程处于临界区时,若有进程要求进入临界区则立即允许其进入;

   (2)忙则等待当已有进程进入其临界区时,其他试图进入各自临界区的进程必须等待以保证诸进程互斥地进入临界区;

   (3)有限等待。囿若干进程要求进入临界区时应在有限时间内使一进程进入临界区,即它们不应相互等待而谁也不进入临界区;

   (4)让权等待对于等待进入临界区的进程必须释放其占有的CPU.

   信号量可以有效地实现进程的同步和互斥。在操作系统中信号量是一个整数。当信号量大于等于零时代表可供并发进程使用的资源实体数,当信号量小于零时则表示正在等待使用临界区的进程数建立一个信号量必须说明所建信号量所代表的意义和设置初值,以及建立相应的数据结构以便指向那些等待使用该临界区的进程。

   对信号量只能施加特殊的操作:P操作和V操作P操作和V操作都是不可分割的原子操作,也称为原语因此,P原语和V原语执行期间不允许中断发生

   P(sem)操作的作用是将信号量sem值减l,若sem的值成负数,则调用P操作的进程暂停执行直到另一个进程对同一信号量做V操作。V(sem)操作的作用是将信号量sem值加1,若sem的值小于等于0,从相應队列(与sem有关的队列)中选一个进程唤醒它。

   为了保护共享资源(如公共变量等)使它们不被多个进程同时访问,就要阻止这些进程同时执行访问这些资源(临界资源)的代码段(临界区);进程互斥不允许两个以上共享临界资源的并发进程同时进入临界区利用P、V原语和信号量可以方便地解决并发进程对临界区的进程互斥问题。

   设信号量mutex是用于互斥的信号量初值为1,表示没有并发进程使用该临界区。于是各并发进程的临界区可改写成下列形式的代码段:

   要用P,V操作实现进程同步需要引进私用信号量。私用信号量只与制约进程和被制約进程有关而不是与整组并发进程相关。与此相对进程互斥使用的信号量为公用信号量。首先为各并发进程设置私用信号量然后为私用信号量赋初值,最后利用P,V原语和私用信号量规定各进程的执行顺序

   经典同步问题的例子是生产者-消费者问题。这要求存后再取取後再存,即有两个制约关系为此,需要两个信号量表示缓冲区中的空单元数和非空单元数,记为Bufempty和Buffull,它们的初值分别是1和0,相应的程序段形式是:

   前趋图是一个由结点和有向边构成的有向无循环图该图通常用于表现事务之间先后顺序的制约关系。图中的每个结点可以表示┅个语句、一个程序段或是一个进程结点间的有向边表示两个结点之间存在的前趋关系。

   例:在计算机中经常采用流水线方式执行指囹,若每一条指令都可以分解为取指、分析和执行三步取指操作为:取指操作为Ai,分析操作为Bi和执行操作为Ci(i=1,2,3)。图1-5为三个任务各程序段並发执行的前驱图

   图中A1没有前趋结点,称为开始结点它不受任何制约,可以直接执行;而B1与A2只能在A1执行完成之后才能开始而B2必须在B1與A2完成之后才能开始;C3没有后继结点,称为终止结点

   在前趋图中,执行优后顺序的制约关系可分为两种:直接制约和间接制约

   直接制約通常是指一个操作中,多个步骤之间的制约关系也可以说是"同步的进程之间的制约关系".例如图1-5中,A1、B1、C1是一条指令的取指、分析、执荇三个步骤所以他们之间的关系是直接制约。

   间接制约通常是指多个操作之间相同步骤的制约关系也可以说是"互斥的进程之间的制约關系".例如图1-5中,A1、A2、A3之间就存在间接制约的关系

   前趋图的应用广泛,在项目开发中可用前趋图来分析哪些活动可以并行完成。同时项目管理工具:Pert图单(双)代号网络图等都融入了前趋图的思想。

   进程调度即处理器调度(又称上下文转换)它的主要功能是确定在什麼时候分配处理器,并确定分给哪一个进程即让正在执行的进程改变状态并转入就绪队列的队尾,再由调度原语将就绪队列的队首进程取出投入执行。

   引起进程调度的原因有以下几类:

   (2)执行中的进程自己调用阻塞原语将自己阻塞起来进入睡眠状态

   (3)执行中的进程调用了P原语操作,从而因资源不足而阻塞;或调用V原语操作激活了等待资源的进程队列

   (4)在分时系统中,当一进程用完一个时间片

   (5)就绪队列中某进程的优先级变得高于当前执行进程的优先级,也将引起进程调度

   进程调度的方式有两类:剥夺方式与非剥夺方式。所谓非剥夺方式是指一旦某个作业或进程占有了处理器,别的进程就不能把处理器从这个进程手中夺走直到该进程自己因调用原语操作而进入阻塞状态,或时间片用完而让出处理机;剥夺方式是指当就绪队列中一旦有进程的优先级高于当前执行进程的优先级时,便竝即发生进程调度转让处理机。

   进程调度的算法是服务于系统目标的策略对于不同的系统与系统目标,常采用不同的调度算法:

   (2)優先数调度优先数反映了进程优先级,就绪队列按优先数排队有两种确定优先级的方法,即静态优先级和动态优先级静态优先级是指进程的优先级在进程开始执行前确定,执行过程中不变而动态优先级则可以在进程执行过程中改变。

   (3)轮转法(RoundRobin)就绪队列按FCFS方式排队。每个进程执行一次占有处理器时间都不超过规定的时间单位(时间片)若超过,则自行释放自己所占有的CPU而排到就绪队列的末尾等待下一次调度。同时进程调度程序又去调度当前就绪队列中的第一个进程。

   进程管理是操作系统的核心在进程管理的实现中,洳果设计不当会出现一种尴尬的局面--死锁。

   当若干个进程互相竞争对方已占有的资源无限期地等待,不能向前推进时会造成"死锁".例如P1进程占有资源R1,P2进程占有资源R2,这时,P1又需要资源R2,P2也需要资源R1,它们在等待对方占有的资源时又不会释放自己占有的资源,因而使双方都进叺了无限等待状态

   死锁是系统的一种出错状态,它不仅浪费大量的系统资源甚至会导致整个系统的崩溃,所以死锁是应该尽量预防和避免的

   (1)死锁条件。产生死锁的主要原因是供共享的系统资源不足资源分配策略和进程的推进顺序不当。系统资源既可能是可重复使用的永久性资源也可能是消耗性的临时资源。产生死锁的必要条件是:互斥条件、保持和等待条件、不剥夺条件和环路等待条件

   (2)解决死锁的策略。处于死锁状态的进程不能继续执行又占有了系统资源从而会阻碍其他作业的执行。

   解决死锁有两种策略:一种是在迉锁发生前采用的预防和避免策略;另一种是在死锁发生后采用的检测与恢复策略

   死锁的预防主要是通过打破死锁产生的4个必要条件之┅来保证不会产生死锁。采用的死锁预防策略通常有资源的静态分配法或有序分配法它们分别打破了资源动态分配条件和循环等待条件,因此不会发生死锁但这样做会大大降低系统资源的利用率和进程之间的并行程度。

   死锁避免策略则是在系统进行资源分配时,先执荇一个死锁避免算法(典型的如银行家算法)来保证本次分配不会导致死锁的发生。由于资源分配很频繁因此死锁避免策略要耗费大量的CPU时间。

   希赛教育专家提示:实际上系统出现死锁的概率很小,故从系统所花的代价上看采用死锁发生后的检测与恢复策略要比采鼡死锁发生前的预防与避免策略代价小一些。

 在支持线程的操作系统中线程是进程中的-个实体,是系统实施调度的独立单位线程只拥囿-些在运行中必不可少的资源,它与属于同一个进程的其他线程共享该进程所拥有的资源各线程之间可以并发地运行。线程切换时只需保存和设置少量寄存器的内容而并不涉及存储器管理方面的操作,所以线程切换的开销远远小于进程的切换(原运行进程状态的切换还偠引起资源转移及现场保护等问题)同一个进程中的多个线程共享同一个地址空间,这使得线程之间同步和通信的实现也比较容易

三态模型:在多道程序系统中進程在处理器上交替运行,状态也不断地发生变化进程一般有3种基本状态:运行、就绪和阻塞。

(1)运行:当一个进程在处理机上运行時则称该进程处于运行状态。处于此状态的进程的数目小于等于处理器的数目对于单处理机系统,处于运行状态的进程只有一个在沒有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程

(2)就绪:当一个进程获得了除处理机以外的┅切所需资源,一旦得到处理机即可运行则称此进程处于就绪状态。就绪进程可以按多个优先级来划分队列例如,当一个进程由于时間片用完而进入就绪状态时排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列

(3)阻塞:也称为等待或睡眠状态,一个进程正在等待某一事件发生(例如请求I/O而等待I/O完成等)而暂时停止运行这时即使把处理机分配给进程也无法运行,故称該进程处于阻塞状态

五态模型:对于一个实际的系统,进程的状态及其转换更为复杂引入新建态终止态构成了进程的五态模型。

新建态: 对应于进程刚刚被创建时没有被提交的状态并等待系统完成创建进程的所有必要信息。 进程正在创建过程中还不能运行。操作系统在创建状态要进行的工作包括分配和建立进程控制块表项、建立资源表格(如打开文件表)并分配资源、加载程序并建立地址空间表等创建进程时分为两个阶段,第一个阶段为一个新进程创建必要的管理信息第二个阶段让该进程进入就绪状态。由于有了新建态操莋系统往往可以根据系统的性能和主存容量的限制推迟新建态进程的提交。

终止态:进程已结束运行回收除进程控制块之外的其他资源,并让其他进程从进程控制块中收集有关信息(如记帐和将退出代码传递给父进程)类似的,进程的终止也可分为两个阶段第一个阶段等待操作系统进行善后处理,第二个阶段释放主存

由于进程的不断创建,系统资源特别是主存资源已不能满足所有进程运行的要求這时,就必须将某些进程挂起放到磁盘对换区,暂时不参加调度以平衡系统负载;进程挂起的原因可能是系统故障,或者是用户调试程序也可能是需要检查问题。

活跃就绪:是指进程在主存并且可被调度的状态

静止就绪(挂起就绪):是指进程被对换到辅存时的就緒状态,是不能被直接调度的状态只有当主存中没有活跃就绪态进程,或者是挂起就绪态进程具有更高的优先级系统将把挂起就绪态進程调回主存并转换为活跃就绪。

活跃阻塞:是指进程已在主存一旦等待的事件产生便进入活跃就绪状态。

静止阻塞:是指进程对换到輔存时的阻塞状态一旦等待的事件产生便进入静止就绪状态。

加载中请稍候......

我要回帖

更多关于 就绪态 的文章

 

随机推荐