精华内容
下载资源
问答
  • 进程间的状态切换

    千次阅读 2019-05-21 21:31:27
    进程之间的状态切换。下文中以单核计算机为例。 在任意时刻下,通常只有一个进程可以被加载到计算机的CPU上运行。 三状态模型 任何一个进程在它的生命周期内都会处于下面三种状态,使用这三种状态可以简单描述运行在...

    点击此处阅读原文

    进程之间的状态切换。下文中以单核计算机为例。

    在任意时刻下,通常只有一个进程可以被加载到计算机的CPU上运行。

    三状态模型

    任何一个进程在它的生命周期内都会处于下面三种状态,使用这三种状态可以简单描述运行在计算机上的进程之间的状态切换,进程的一生都处在这三种状态间相互转换。

    • 运行态(Running):指该进程正在被CPU调度运行。
    • 就绪态(Ready):指该进程满足被CPU调度的所有条件但此时并没有被调度执行。
    • 阻塞态(Blocked):指该进程正在等待某事件的发生之后才可以继续被CPU调度运行。

    三状态模型之间的切换

    CPU在调度进程时,只会去操作系统维护的处于就绪态的进程PCB链表中调度,所以三状态模型之间的切换只有4种切换方式:

    • 就绪态—>运行态:当操作系统的调度程序从就绪态的链表中调度一个进程时,该进程的进程状态就会被切换为运行态,与此同时CPU即会开始运行此进程。
    • 运行态—>就绪态:当一个进程的时间片到达,CPU必须去调度下一个进程时,此时处于运行态的进程的进程状态就会被切换为就绪态并重新进入操作系统就绪态的进程链表。
    • 运行态—>阻塞态:当CPU正在运行一个进程时,该进程此时需要等待一个时间的完成才能继续运行(例如:程序的I/O流 …),这时操作系统就会将该进程的进程状态切换为阻塞状态,直到进程所需要的等待事件完成。
    • 阻塞态—>就绪态:进程从运行态直接切换为阻塞态,当进程所需要的事件完成之后,操作系统不会直接将该进程的状态切换为运行态,而是将该进程的状态切换为就绪态,等待CPU的调度。

    FE8Sfg.png

    Linux操作系统的进程状态转换

    Linux操作系统的进程

    /*
    * The task state array is a strange "bitmap" of * reasons to sleep. Thus "running" is zero, and * you can test for combinations of others with * simple bit tests. */
    static const char * const task_state_array[] = { 
        "R (running)", /* 0 */ 
        "S (sleeping)", /* 1 */ 
        "D (disk sleep)", /* 2 */ 
        "T (stopped)", /* 4 */ 
        "t (tracing stop)", /* 8 */ 
        "X (dead)", /* 16 */ 
        "Z (zombie)", /* 32 */ 
    };
    

    从Linux源码中可以看出,Linux下有7中进程状态:

    • R运行状态(Running):处于运行状态的进程并不带表一定就正在被CPU调度运行,它包括了正在被CPU运行的进程和可以被CPU调度运行的程序,也就是说改状态包含了三状态模型中的就绪态和运行态。
    • S睡眠状态(Sleeping):处于改状态的进程表示该进程正在等待某时间的完成,通常也称为可中断睡眠状态,该状态属于三状态模型中的阻塞态。
    • D磁盘休眠状态(disk sleep):该状态也叫做不可中断睡眠状态,处于该状态的进程通常都在等待I/O操作的结束,该状态也属于三状态模型中的阻塞态。
    • T停止状态(stopped):我们可以通过向进程发送SIGSTOP信号让目标进程处于停止状态,通过向处于停止状态的进程发送SIGCON信号让目标进程继续运行,该状态也属于三状态模型中的阻塞态。
    • t追踪停止状态(tracing stop)
    • X死亡状态(dead):该状态只是一个返回状态,不会在任务列表中见到,该状态属于退出状态。
    • Z僵尸状态(zombie):当一个进程退出,但它的父进程并没有去收回该进程的信息时,该进程所处的状态叫做僵尸状态,该状态属于退出状态。

    Linux系统进程状态间的切换

    FEaoQS.png

    创建一个新进程,操作系统会为该新进程创建一个空白PCB(task_struct),用来存储该进程的各项信息。

    展开全文
  • 简单的进程之间的状态模拟, 通过链表的增删,实现任务状态切换进程占用内存的分配回收
  • 进程状态 导言 在上篇说到,进程是程序的一次执行。在这个执行过程中,有时进程正在被CPU处理,有时又需要等待CPU的服务,可见,进程存在多种状态。为了方便对各个进程的管理,操作系统需要将进程合理地划分为几种...

    进程状态

    导言

    在上篇说到,进程是程序的一次执行。在这个执行过程中,有时进程正在被CPU处理,有时又需要等待CPU的服务,可见,进程存在多种状态。为了方便对各个进程的管理,操作系统需要将进程合理地划分为几种状态。
    下面介绍进程的三种基本状态和另外两种状态。


    三种基本状态

    • 运行态
      进程拥有了CPU资源和其他所需资源。(比如打印机资源,当打印机准备好,打印机才能为该进程服务)
    • 就绪态
      进程拥有了其他所需资源,但还没拥有CPU资源。(当打印机准备好,该进程等待CPU的调度)
    • 阻塞态
      进程既没有CPU资源也没有其他所需资源。(当打印机资源在准备的时候,该进程不占用打印机资源,而且CPU会执行其他进程的指令)
      在这里插入图片描述

    另外两种状态

    当我们刚开始运行程序的时候,操作系统需要为该进程分配所需的内存空间等系统资源,并为其创建、初始化PCB。(如 分配进程标识符PID),此时,该进程就处于创建态。而当进程结束时 (正常结束或者由于bug导致进程无法继续执行下去,如 整数除0错误),操作系统会回收分配给该进程的系统资源以及撤销该进程的PCB…,目的是为了撤销该进程,此时,该进程就处于终止态。

    • 创建态
      进程正在被创建,操作系统为该进程分配系统资源、初始化PCB。
    • 终止态
      进程正在被撤销,操作系统会回收该进程拥有的系统资源、撤销PCB。

    在这里插入图片描述

    进程状态的转换

    看下图。
    在这里插入图片描述在这里,进程由"运行态–>阻塞态"是进程主动请求的,是一种主动行为。 (比如 进程主动请求打印机资源,由于打印机资源的准备需要花时间,所以,CPU会执行"原语",让该进程会进入阻塞态)
    但是,进程由"阻塞态–>就绪态"不是进程自身控制的,是一种被动行为。(比如 请求的打印机资源准备好了,那打印机会给CPU发信号。之后,CPU会执行"原语",让进程会进入就绪态)

    "原语"可以实现进程状态的转换,会在下一节中介绍。


    总结

    在这里插入图片描述

    感谢

    以上内容大部分来自于王道操作系统系列视频教学。

    展开全文
  • 进程切换与模式切换

    千次阅读 2021-06-06 22:26:16
    进程切换与模式切换 进程切换 定义: 在某个时刻,操作系统中断一个正在运行的进程,将另一个进程置于运行模式,并将...模式切换可在不改变运行态进程状态的情况下发生,此时保存上下文并在以后恢复上下文需要的开销

    进程切换与模式切换

    进程切换

    定义:

    在某个时刻,操作系统中断一个正在运行的进程,将另一个进程置于运行模式,并将控制权交给后者

    切换时机:

    它可以发生在正在运行进程将控制权交给操作系统之后的任何时刻

    切换的事件:

    1. 中断
    2. 陷阱
    3. 系统调用

    模式切换

    定义:

    与用户程序相关联的处理器执行模式(用户模式)和与操作系统相关联的处理器模式(内核模式)之间的切换,
    进程切换必须在操作系统的内核模式下进行

    模式切换与进程切换的理解

    模式切换可在不改变运行态进程状态(有一些中断/异常不会引起进程状态转换,不会引起进程切换,只是在处理完成后把控制权交还给被中断进程。)的情况下发生,此时保存上下文并在以后恢复上下文需要的开销很少。但是若当前正运行进程将转换为另一种状态(就绪(如时钟中断)、阻塞(如系统调用)等),则操作系统必须让环境产生实质性的变化。

    展开全文
  • linux进程状态切换

    千次阅读 2015-05-16 17:18:20
     当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。  执行(Running)状态 当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。 ...

    1.进程的三种基本状态

        进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态。

     就绪(Ready)状态

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

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

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

    2.进程三种状态间的转换

    一个进程在运行期间,不断地从一种状态转换到另一种状态,它可以多次处于就绪状态和执行状态,也可以多次处于阻塞状态。图3_4描述了进程的三种基本状态及其转换。

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

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

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

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


    例:

    题目:某系统的状态转换图如图所示。

    状态转换图

    (1)分别说明引起状态转换1、2、3、4的原因,并各举一个事件。
    (2)为什么在转换图中没有就绪到阻塞和阻塞到运行的转换方向?
    (3)一个进程的状态变换能够引起另一个进程的状态变换,说明下列因果变迁是否可能发生,原因是什么?
    (a)3→1(b)2→1(c)3→2(d)3→4(e)4→1

    答: (1)
    1:就绪->执行, 当前运行进程阻塞,调度程序选一个优先权最高的进程占有处理机;
    2:执行->就绪, 当前运行进程时间片用完;
    3:执行->阻塞,当前运行进程等待键盘输入,进入了睡眠状态。
    4:阻塞->就绪,I/O操作完成,被中断处理程序唤醒。

    (2)就绪进程没有占有处理机,也即没有经过运行,其状态就不会改变。
    阻塞状态进程唤醒后先要进入就绪队列,才会被调度程序选中,进入了执行状态。

    (3)
    (a) 3→1: 可能,当前运行进程阻塞,调度程序选一个优先级最高的进程占有处理机。
    (b)2→1:可能,当前运行进程优先级下降,调度程序选一个优先级最高的进程占有处理机。
    (c)3→2: 不可能,占有CPU的一个进程不能同时进入两个状态;在单CPU的系统中,状态3发生后,cpu没有执行进程,故不会发生状态转换2。
    (d)3→4:一般不可能,不相干的两个事件。状态转换3是由于运行进程等待资源而发生的,这并不会使得阻塞队列中的进程得到资源而进入就绪队列。但在Unix中,当系统的0#进程因runin标志而睡眠时,有(在内存)进程睡眠,就会唤醒0#进程,使其进入就绪状态,以便将该进程和在盘交换区就绪进程交换位置。
    (e)4→1:一般无关,但当就绪队列为空时,一个进程被唤醒转入就绪队列后,调度程序使该进程占有处理机(但是同一个进程)。

    展开全文
  • 进程状态与各状态间的切换

    千次阅读 2014-05-30 19:11:59
    进程状态简单分为ready, running, wait。(就绪,运行,等待)
  • 操作系统-进程状态转换图

    万次阅读 多人点赞 2019-03-23 11:30:01
    对于调度进程,只需要等待就绪队列里的进程,因为阻塞状态可以转换到就绪队列里去。 进程状态状态进程已经创建,但未被OS接纳为可执行进程。(还没有申请到相应的资源)。 就绪态:进程...
  • 进程的三种状态及相互之间的切换

    千次阅读 2018-07-14 10:24:20
    1.进程的三种基本状态     进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态。  就绪(Ready)状态     当进程已...
  • Linux下的进程进程间的状态转换

    千次阅读 2018-06-10 22:31:36
    在计算机中,操作系统的定位是一个管理者,对上管理在系统中运行的进程,对下通过驱动程序管理各种硬件。 说到进程,首先得稍微解释一下,什么叫做程序。 程序:程序是以某种语言编写,为完成某个特定任务的一系列...
  • 操作系统之进程状态和转换详解

    万次阅读 多人点赞 2017-04-22 19:15:31
    进程的状态和转换三态模型一个进程从创建而产生至撤销而消亡的整个生命周期,可以用一组状态加以刻划,根据三态模型,进程的生命周期可分为如下三种进程状态: 1. 运行态(running):占有处理器正在运行 2. 就绪态...
  • 只要获得处理机便可立即执行,这时的进程状态称为就绪状态。 2:执行状态 当进程已获得处理机,其程序正在处理机上执行 ,此时的进程状态称为执行状态。 3:阻塞状态 正在执行的进程,由于等待某个事件发生而无法 ...
  • Android 进程的五种状态

    千次阅读 2018-06-25 07:45:25
    Android系统中的进程分为五大类:前台进程,可见进程,服务进程,后台进程,空进程。前台进程 目前正在屏幕上显示的进程和一些系统进程。举例来说,Dialer Storage,Google Search等系统进程就是前台进程;再举例来...
  • 进程切换与中断处理

    千次阅读 2015-03-14 10:24:39
    进程的运行就是依靠一条条指令的执行来实现它的既定目标,而一条条指令的执行依靠的还是CPU中各个寄存器中的数值、状态,故我们实验中改变了寄存器的状态就达到了进程切换的目的;而时钟中断则是操作系统自身发出的...
  • 进程切换过程

    万次阅读 2019-10-17 11:03:20
    进程切换,实质上就是被中断运行进程与待运行进程的上下文切换。从主观上来理解。只分为两步: 1.切换新的页表,然后使用新的虚拟地址空间 2.切换内核栈,加入新的内容(PCB控制块,资源相关),实现上下文切换 现在...
  • Linux进程状态转换图

    千次阅读 2014-08-13 22:33:17
    进程正在被CPU执行,或已经准备就绪随时可由调度程序执行,则称该进程为处于运行状态(running)。进程可以在内核态运行,也可以在用户态运行。当系统资源已经可用时,进程就被唤醒而进入准备运行状态,该状态称为...
  • 操作系统进程状态和状态转换详解

    千次阅读 多人点赞 2019-11-01 10:28:55
    进程状态的转换与PCB详解 ​ 返回主目录 ​ 之前的有博文对进程和线程的区别进行了详细的介绍,并且说明了引入进程的目的是为了能够使程序并发的执行,并且可以对并发执行的程序加以描述和控制。这篇博文,我们...
  • C#实现进程状态转换

    2011-12-15 16:57:58
    用C#实现进程基本状态的转换 Winform界面形式 对学习C#很有帮助
  • 进程上下文和处理器状态切换

    千次阅读 2017-04-03 12:48:31
    进程上下文VS中断上下文 1.内和空间和用户空间 内核空间和用户空间是现代操作系统的两种工作模式,内核模块运行在内核空间,而用户态应用程序运行在用户空间。它们代表不同的级别,而对系统资源具有不同的访问权限...
  • 实现进程切换

    千次阅读 2018-03-17 21:38:26
    1.直接执行的下一个问题是在进程之间实现切换 直接执行的下一个问题是在进程之间实现切换。在进程之间切换应该很简单,对吗?操作系统应该决定停止一个进程,启动另一个进程。有什么大不了的?但是它实际上有点棘手:...
  • 进程切换与线程切换

    2020-09-07 21:44:56
    进程切换分两步: 切换页目录以使用新的地址空间 切换内核栈和硬件上下文 对于linux来说,线程和进程的最大区别就在于地址空间,对于线程切换,第1步是不需要做的,第2是进程和线程切换都要做的。 切换的性能...
  •  程序运行在非特权状态,当前的进程只能使用当前进程的资源,不能进入其他的进程空间或内核空间。内核态:  简单的理解为,所有的系统资源都可以使用。2、用户态和内核态的切换方式有三种 系统调用 比如调用fork...
  • 进程切换和线程切换

    千次阅读 2019-08-11 09:52:12
    这种行为被称为进程切换(process switch)、任务切换(task switch)或上下文切换(content switch)。 原文 :https://www.cnblogs.com/kkshaq/p/4547725.html 进程切换分两步: 1.切换页目录以使用新的地址...
  • 进程概念: 1)正在执行的程序 2)正在计算机上执行的程序实例 3)能分配处理器并由处理器执行的实体 进程的两个基本元素是程序...会处于各种状态:Linux下的进程状态:static const char * const task_state_ar
  •  当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。  执行(Running)状态 当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。  ...
  • Linux - 进程生命周期

    千次阅读 2018-02-27 11:40:00
    本文参考了【深入Linux内核架构】Linux...下图描述了进程之间的状态关系: 进程的三种基本状态:运行:该进程此刻正在执行等待:进程能够运行,但没有得到许可,因为CPU分配给另一个进程。调度器可以在下一次任务...
  • 实验一: 进程状态转换及PCB的模拟

    万次阅读 多人点赞 2018-04-07 17:16:58
    2)深入了解进程控制块和进程状态之间的转换。3)掌握进程调度算法。实验预备知识1)进程的状态2)进程的结构——PCB进程都是由一系列操作(动作)所组成,通过这些操作来完成其任务。因此,不同的进程,其内部操作也...
  • 在threadA执行时,被调度了执行了threadB, 那么在threadB执行完之后是如何恢复threadA进程能够继续执行的呢? 我们从代码中去寻找答案, 系统调度是schedule()函数,那么我们就从schedule()函数看起 schedule() -->...
  • 进程的5种状态:创建态、就绪态、运行态、阻塞态、终止态 创建态完成创建进程的一系列工作进入就绪态。 就绪态除处理机外的其他条件都已具备,等待进程被调度则可进入运行态,若时间片已到或处理机被抢占进程将...
  • 进程切换与中断

    千次阅读 2020-03-21 10:15:28
    进程切换指从正在运行的进程中收回处理器,让待运行进程来占有处理器运行。 实质上就是被中断运行进程与待运行进程的上下文切换进程切换必须在操作系统内核模式下完成,这就需要模式切换。 模式切换又称处理器...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 320,498
精华内容 128,199
关键字:

进程状态切换