精华内容
下载资源
问答
  • 这幅代表着有一个挂起状态进程状态转换。 但是有两个比较明显的错误: 只有阻塞状态才能执行挂起状态挂起状态结束后,进程直接就进入了就绪队列。 所以,我们需要两个额外的状态来完善这幅: 阻塞且被...

    在这里插入图片描述
    这幅图代表着有一个挂起状态的进程状态转换图。

    但是有两个比较明显的错误

    • 只有阻塞状态才能执行挂起状态。
    • 挂起状态结束后,进程直接就进入了就绪队列。

    所以,我们需要两个额外的状态来完善这幅图:

    • 阻塞且被挂起
    • 就绪但被挂起

    在这里插入图片描述
    虚线为可能发生, 但非必须发生
    注意: 从阻塞/挂起 -> 就绪/挂起,是可以发生的。有人可能会有疑问,既然等待IO时被挂起,数据拿出内存,那回头IO发生时还能写进内存吗?数据不是已经都被挪出去了吗?挪出去的仅仅是用户程序和用户数据。我们的IO命令已经写在了由系统管理的缓存当中,IO发生时,内容也被写进了缓存。

    展开全文
  • 活动状态是位于内存中的进程所拥有的状态,处于外存中的进程则是静止状态 转载于:https://www.cnblogs.com/Alsace/archive/2013/03/19/2969387.html

      活动状态是位于内存中的进程所拥有的状态,处于外存中的进程则是静止状态

    转载于:https://www.cnblogs.com/Alsace/archive/2013/03/19/2969387.html

    展开全文
  • 计算响应比 进程排序 (逆序算法) , 首节点是响应比最高节点 高响应比算法模拟器 控制进程状态
  • 进程挂起状态解析

    千次阅读 多人点赞 2020-05-16 19:53:48
    而在这些状态之外还存在着一个状态,我们称之为挂起状态,它既可以是我们客户主动使得进程挂起,也可以是操作系统因为某些原因使得进程挂起。总而言之引入挂起状态的原因有以下几种: 用户的请求:可能是在程序运行...

    引言

    以前对于这个概念始终比较模糊,遂在解决后记录博客,希望帮助到有同样问题的朋友。

    挂起状态是什么?

    我们一般认为进程有五个状态,即新建态,就绪态,阻塞态,运行态,终止态
    在这里插入图片描述
    而在这些状态之外还存在着一个状态,我们称之为挂起状态,它既可以是我们客户主动使得进程挂起,也可以是操作系统因为某些原因使得进程挂起。总而言之引入挂起状态的原因有以下几种:

    1. 用户的请求可能是在程序运行期间发现了可疑的问题,需要暂停进程
    2. 父进程的请求考察,协调,或修改子进程
    3. 操作系统的需要对运行中资源的使用情况进行检查和记账
    4. 负载调节的需要有一些实时的任务非常重要,需要得到充足的内存空间,这个时候我们需要把非实时的任务进行挂起,优先使得实时任务执行
    5. 定时任务一个进程可能会周期性的执行某个任务,那么在一次执行完毕后挂起而不是阻塞,这样可以节省内存
    6. 安全系统有时可能会出现故障或者某些功能受到破坏,这是就需要将系统中正在进行的进程进行挂起,当系统故障消除以后,对进程的状态进行恢复

    既然我们知道了挂起状态引入的原因,那么我们再来看看带有挂起状态的进程状态转移过程:
    在这里插入图片描述

    相比于一般的五个状态的进程状态转移图,我们引入了两种挂起状态的类型,即就绪挂起状态阻塞挂起状态。它们的区别就是就绪挂起状态其实还是在内存中的,而后者是在外存中的。接下来我们说一说新加入的几个状态转化的步骤:

    1. 运行状态->就绪挂起状态:这里发生在客户在程序正在运行是直接挂起程序。注意这里的箭头是单向的,所以在就绪挂起状态结束以后实际上是执行激活步骤,进入就绪状态,等待处理机调度。
    2. 阻塞状态->阻塞挂起状态:当内存空间比较紧缺的时候,如果有存在在内存中的,而且是处于阻塞状态的进程,那么就让他更需要内存的程序占用内存,自己进入阻塞挂起状态,PCB等数据存入外存。因为现在这个进程也不能进入就绪状态,这个程序在内存中是没有什么作用的。
    3. 阻塞挂起状态->就绪挂起状态:当阻塞状态等待的IO事件或其他事件到来的时候状态发生改变。
    4. 就绪挂起状态->就绪状态:如果内存中没有就绪态进程,操作系统需要调入一个进程继续执行。此外,当处于就绪/挂起状态的进程比处于就绪态的任何进程的优先级都要高时,也可以进行这种转换。这种情况的产生是由于操作系统设计者规定,调入高优先级的进程比减少交换量更重要
    5. 就绪状态->就绪挂起状态:通常,操作系统更倾向于挂起阻塞态进程而不是就绪态进程,因为就绪态进程可以立即执行,而阻塞态进程占用了内存空间但不能执行。但如果释放内存以得到足够空间的唯一方法是挂起一个就绪态进程,那么这种转换也是必需的。并且,如果操作系统确信高优先级的阻塞态进程很快就会就绪,那么它可能选择挂起一个低优先级的就绪态进程,而不是一个高优先级的阻塞态进程。

    挂起状态和阻塞状态有什么区别?

    这里大多来自其他博主的文章,有以下几个方面的区别:

    1. 是否释放CPU:阻塞(pend)就是任务释放CPU,其他任务可以运行,一般在等待某种资源或信号量的时候出现。挂起(suspend)不释放CPU,如果任务优先级高就永远轮不到其他任务运行。一般挂起用于程序调试中的条件中断,当出现某个条件的情况下挂起,然后进行单步调试。
    2. 是否主动:显然阻塞是一种被动行为,其发生在磁盘,网络IO,wait,lock等要等待某种事件的发生的操作之后。因为拿不到IO资源,所以阻塞时会放弃 CPU的占用。而挂起是主动的,因为挂起后还要受到CPU的监督(等待着激活),所以挂起不释放CPU,比如sleep函数,站着CPU不使用。
    3. 与调度器是否相关:任务调度是操作系统来实现的,任务调度时,直接忽略挂起状态的任务,但是会顾及处于pend下的任务,当pend下的任务等待的资源就绪后,就可以转为ready了。ready只需要等待CPU时间,当然,任务调度也占用开销,但是不大,可以忽略。可以这样理解,只要是挂起状态,操作系统就不在管理这个任务了。

    上面我们提到了sleep函数和wait函数,我们把它们单独拎出来看看:

    sleep()和wait()函数的区别:

    1. 两者比较的共同之处是:两个方法都是使程序等待多少毫秒
    2. 最主要区别是:sleep()方法没有释放锁。而wait()方法释放了锁,使得其他线程可以使用同步控制块或者方法
    3. sleep()指线程被调用时,占着CPU不工作,形象的说明为“占着CPU”睡觉

    sleep(2000)表示:占用CPU,程序休眠2秒。
    wait(2000)表示:不占用CPU,程序等待2秒。

    如何主动挂起程序

    ctrl+z:挂起,程序放到后台,程序没有结束。
    jobs:查看被挂起的程序工作号

    恢复进程执行时,有两种选择:fg命令将挂起的作业放回到前台执行;用bg命令将挂起的作业放到后台执行
    格式:fg 工作号;bg 工作号

    总结

    挂起状态一般不被放在进程的常用状态之一,常见的,”五大“状态里就没有挂起状态,但其实际上还是非常重要的,值得我们每一个人好好学习。

    参考:

    展开全文
  • 进程挂起状态详细分析

    万次阅读 多人点赞 2016-12-11 00:03:24
     事实上还存在被挂起进程。    交换的需要 前面中三个基本状态(就绪态、运行态和阻塞态)提供了一种为进程行为建立模型的系统方法,并指导操作系统的实现。  但是,可以证明往模型中增加其他状态也是合理的...


      通常我们所认为的进程有五大状态,新建态,就绪态,阻塞态,运行态,退出态

      下面是示意图:


      事实上还存在被挂起的进程。

      

      交换的需要 前面图中三个基本状态(就绪态、运行态和阻塞态)提供了一种为进程行为建立模型的系统方法,并指导操作系统的实现。

      但是,可以证明往模型中增加其他状态也是合理的。下面考虑一个没有使用虚拟内存的系统,每次执行中的进程必须完全载入内存。因此,所有队列中的所有进程必须驻留在内存中。

      内存保存多个进程,当一个进程正在等待是,处理器可以转移到另一个进程,但是CPU比I/O要快的多,以至于内存中所有进程都在等待I/O的情况很常见。因此,即使是多道程序设计,大多数时候处理器仍然可能处于空闲状态。


      一种解决办法是扩充内存适应更多的进程。有以下缺点:1.内存的价格 2.程序对内存空间需求的增长速度比内存价格下降的速度快。因此,更大的内存往往导致更大的进程,而不是更多的进程。

      另一种解决方案是交换。包括把内存中某个进程的一部分或全部移到磁盘中。当内存中没有处于就绪状态的进程时,操作系统就把被阻塞的进程患处到磁盘中的”挂起队列“(suspend queue),即暂时保存从内存中”驱逐“出来的被挂器的进程队列。操作系统再次之后取出挂起队列中的另一个进程,或者接受一个新进程的请求,将其纳入内存运行。


      “交换”(swapping)是一个I/O操作,因而可能使问题更恶化。但是由于磁盘I/O一般是系统中最快的I/O(相对于磁带或者打印机I/O),所以交换通常会提高性能。

      

      现在有两种进程模型,一种是包含单挂起态的模型,一种是包含两个挂起态的模型。

      分别如图:


      包含两个挂起态的模型如图:


      与之前五个转换模型相比,比较重要的新转换如下:

    • 阻塞->阻塞/挂起:如果没有就绪进程,则至少一个阻塞进程被换出,为另一个没有阻塞的进程让出空间。如果操作系统确定当前正在运行的进程,或者就绪进程为了维护基本的性能要求而需要更多的内存空间,那么,即使有可用的就绪态进程也可能出现这种转换。
    • 阻塞挂起->就绪挂起:如果等待的事件发生了,则处于阻塞/挂起状态的进程可转换到就绪/挂起态。注意,这要求操作系统必须能够得到挂起进程的状态信息
    • 就绪/挂起->就绪:如果内存中没有就绪态进程,操作系统需要调入一个进程继续执行。此外,当处于就绪/挂起状态的进程比处于就绪态的任何进程的优先级都要高时,也可以进行这种转换。这种情况的产生是由于操作系统设计者规定,调入高优先级的进程比减少交换量更重要。
    • 就绪->就绪/挂起:通常,操作系统更倾向于挂起阻塞态进程而不是就绪态进程,因为就绪态进程可以立即执行,而阻塞态进程占用了内存空间但不能执行。但如果释放内存以得到足够空间的唯一方法是挂起一个就绪态进程,那么这种转换也是必需的。并且,如果操作系统确信高优先级的阻塞态进程很快就会就绪,那么它可能选择挂起一个低优先级的就绪态进程,而不是一个高优先级的阻塞态进程。
      通俗的说,就是挂起不挂起,不光要考虑为进程让出空间,不光要考虑是否就绪,还要考虑进程的优先级。

      还需要考虑的几种其他转换有:
    • 新建->就绪挂起及新建->就绪:当创建一个新进程时,该进程或者加入就绪队列,或者加入就绪/挂起队列。不论哪种情况,操作系统都必须建立一些表管理进程,并为进程分配地址空间。操作系统可能更倾向于在初期执行这些辅助工作,这使得它可以维护大量的未阻塞的进程。通过这一策略,内存中经常会没有足够的足够的空间分配给新进程。因此使用了(新建->就绪/挂起)转换。另一方面,我们可以证明创建进程时适时(just-in-time)原理,即尽可能推迟创建进程以减少操作系统的开销,并在系统被阻塞态进程阻塞时允许操作系统执行进程创建任务。
    • 阻塞/挂起->阻塞:这种转化在设计中比较少见,如果一个进程没有准备好执行,并且不在内存中,调入它又有什么意义?但是考虑到下面的情况:一个进程终止,释放了一些内存空间,阻塞/挂起队列中有一个进程优先级比就绪/挂起队列中任何进程的优先级都要高,并且操作系统有理由相信阻塞进程的事件很快就会发射管,这时,把阻塞进程而不是就绪进程调入内存是合理的。
    • 运行->就绪/挂起:通常当分配给一个运行进程的时间期满时,它将转换到就绪态。但是,如果由于位于阻塞/挂起队列中具有较高优先级的进程变得不再被阻塞,操作系统抢占这个进程,也可以直接把这个运行进程转换到就绪/挂起队列中,并释放一些内存空间。
    • 各种状态/退出:在典型情况下,一个进程在运行时终止,或者是因为它已经完成,或者是因为出现了一些错误条件。但是,在某些操作系统中,一个进程可以被创建它的进程终止,或者当父进程终止时终止。如果允许这样,则进程在任何状态时都可以转换到退出态。
      挂起的其他用途:到目前为止,挂起进程的概念与不在内存中的进程概念是等价的。一个不再内存中的进程,不论是否在等待一个事件,都不能立即执行。

      总结一下挂起进程的概念:
      
      1.进程不能立即执行
      2.进程可能是或不是正在等待一个事件。如果是,阻塞条件不依赖于挂起条件,阻塞事件的发生不会使进程立即被执行。
      3.为阻止进程执行,可以通过代理把这个进程置于挂起状态,代理可以是进程自己,也可以是父进程或操作系统。
      4.除非代理显示地命令系统进行状态转换,否则进程无法从这个状态中转移。

      下面一张表展示挂起进程的原因:

      好,暂时就到这里了。

    展开全文
  • 进程的基本状态及转换和阻塞及挂起的理解

    万次阅读 多人点赞 2018-06-24 16:12:26
    概念描述: 就绪状态 :一个进程获得了除处理机外的一切所需资源,一旦得到处理机即可运行,则称此进程处于就绪状态。 执行状态:当一个进程在处理机...挂起状态:由于IO的速度慢于CPU的运算速度,经常出现CPU等待...
  • 操作系统之进程的各种状态   进程状态: 就绪状态:当进程获得除CPU外的所有资源的时候,只要在获得CPU就可以执行(万事俱备只欠CPU)在一个系统中处于就绪状态进程可能有多个,通常将它们排成一个队列,称...
  • 前趋(Precedence Graph),是指一个有向无循环,可记为DAG(Directed Acyclic Graph),它用于描述进程之间执行的先后顺序。中的每个结点可用来表示一个进程或程序段,乃至一条语句,结点间的有向边则表示两个...
  •  理解了什么是挂起和挂起有什么用后,看一下有挂起状态进程状态。可以把就绪状态和阻塞状态划分为静止和活动,通过一张来看一下状态的转换。 可以看到虚线上面的和基本状态演变相似,下面多了 静止就绪 和...
  • 进程 PCB 进程挂起

    2019-03-08 13:59:00
    进程:一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。 只有当一个程序被OS加载到内存中,cpu对其执行时,这个过程是动态的,称为进程。 7-2 进程的组成 包含了正在运行的一个程序的所有状态...
  • 解决Windows挂起状态

    万次阅读 2016-05-13 21:44:56
    手动排除Windows的挂起状态 有些软件安装时可能遇到下面的提示: 遇到了以下问题  安装程序检测到计算机重新启动的过程可能暂停。建议退出安装  序,重新启动计算机,然后再重试。 如下: 挂起...
  • 进程的基本状态 就绪状态(Ready):进程已处于准备好运行的状态,即进程已分配到除CPU以外的所有必要资源后,只要获得...挂起操作和进程状态的转换: (1)挂起:将进程从内存转到外存。 (2)引入挂起操作的原因: ①
  • 进程挂起

    千次阅读 2014-10-30 16:24:44
    本小节为大家介绍被挂起进程。 3.2.4 被挂起进程 交换的需要 前面描述的三个基本状态(就绪态、运行态和阻塞态)提供了一种为进程行为建立模型的系统方法,并指导操作系统的实现。许多实际的...
  • 操作系统进程状态模型

    千次阅读 2019-02-23 13:22:13
    这三个状态合起来,就是操作系统的“三状态进程模型”,如下: 然后我们可能会疑惑,进程难道天生就是就绪态吗?而且进程执行完后又是什么态呢? 实际上,进程还具有创建态和终止态。 创建态:系统已经为该进程...
  • 进程七态及挂起和阻塞的区别

    千次阅读 2020-05-12 21:54:40
    静止就绪:指进程在外存中不能被直接调度的就绪状态,只有当主存中没有活跃就绪态进程,或者是挂起进程具有更高的优先级,系统将把挂起就绪态进程调回主存并转换为活跃就绪。 活跃阻塞:指进程在内存中等待的事件...
  • 进程状态(含状态变迁

    万次阅读 多人点赞 2017-08-20 10:49:31
    一、三态模型:三态模型:在多道程序系统中,进程在处理器上交替运行,状态也不断地发生变化。进程一般有3种基本状态:运行、就绪和阻塞。(1)就绪:当一个进程获得了除处理机以外的一切所需资源,一旦得到处理机...
  • 由于多个进程在并发执行时共享系统资源,致使它们在运行过程中呈现间断性的运行规律,所以进程在其生命周期内可能具有多种状态。 一、进程的三种基本状态 1. 就绪状态 进程已分配到除CPU之外的所有必要资源,只要再...
  • 操作系统进程状态和状态转换详解

    千次阅读 多人点赞 2019-11-01 10:28:55
    进程状态的转换与PCB详解 ​ 返回主目录 ​ 之前的有博文对进程和线程的区别进行了详细的介绍,并且说明了引入进程的目的是为了能够使程序并发的执行,并且可以对并发执行的程序加以描述和控制。这篇博文,我们...
  • 简单来说, 进程等待是进程的一种状态, 是父进程等待子进程退出时的一个过程 为什么要进程等待 简单来讲, 因为要避免产生僵尸进程. 进程在退出的时候, 会关闭所有的文件描述符, 释放在用户空间中分配的内存, 但是 ...
  • 第一个可用于等待指定的 PID,后者可用于等待具有指定名称的进程。 例子: $ waitpid -v 5323 5266 5323: waiting 5266: waiting 5323: received SIGINT 5323: exited with status 0 5266: received SIGSEGV ...
  • 操作系统-进程状态转换

    万次阅读 多人点赞 2019-03-23 11:30:01
    答:因为就绪态只需要等待处理机,而阻塞态可能在等待输入输出,即使分配给处理机也是徒劳,所以两状态图不妥。对于调度进程,只需要等待就绪队列里的进程,因为阻塞状态可以转换到就绪队列里去。 进程五状态 ...
  • 挂起等待态→挂起就绪态:引起进程等待的事件发生之后,相应的挂起等待态进程将转换为挂起就绪态 ​ 挂起就绪态→就绪态:当内存中没有就绪态进程,或者挂起就绪态进程具有比就绪态进程更高的优先级,系统将把...
  • 进程是指一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。也就是说程序在对数据进行处理的时候,操作系统是如何维护的。 进程的组成 1 进程的特点 动态性:操作系统可动态的创建、结束...
  • 进程控制是进程管理中最基本的功能,主要包括创建新进程、终止已完成的进程、将因发生异常情况而无法继续运行的进程置于阻塞状态、负责进程运行中的状态转换等功能。 进程控制一般由OS的内核中的原语来实现的。 操作...
  • 进程控制:七状态模型

    千次阅读 2021-03-06 16:16:49
    首先,进程的七状态模型,分为:创造、就绪、执行、堵塞、终止、挂起就绪、挂起阻塞。 进程 进程没有一个规定的定义,一般定义为: 进程是程序的一次执行 进程是一个程序及其数据在处理机上顺序执行时所发生的活动 ...
  • 记录一些日常会用到的linux真心好用的操作。 后台运行 临时后台运行 如果只是临时有一个命令需要长时间...因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于...
  • 操作系统之进程状态和转换详解

    万次阅读 多人点赞 2017-04-22 19:15:31
    进程的状态和转换三态模型一个进程从创建而产生至撤销而消亡的整个生命周期,可以用一组状态加以刻划,根据三态模型,进程的生命周期可分为如下三种进程状态: 1. 运行态(running):占有处理器正在运行 2. 就绪态...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,528
精华内容 25,411
关键字:

具有挂起状态的进程状态图