热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

进程的三种状态以及转换

1.进程的三种基本状态   进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态。 就绪(Ready)状态   当进程已分配到除CPU以外的所有必要的资源,

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:一般无关,但当就绪队列为空时,一个进程被唤醒转入就绪队列后,调度程序使该进程占有处理机(但是同一个进程)。


推荐阅读
  • 本课程深入探讨了 Python 中自定义序列类的实现方法,涵盖从基础概念到高级技巧的全面解析。通过实例演示,学员将掌握如何创建支持切片操作的自定义序列对象,并了解 `bisect` 模块在序列处理中的应用。适合希望提升 Python 编程技能的中高级开发者。 ... [详细]
  • 当前物联网领域十大核心技术解析:涵盖哪些关键技术?
    经过近十年的技术革新,物联网已悄然渗透到日常生活中,对社会产生了深远影响。本文将详细解析当前物联网领域的十大核心关键技术,包括但不限于:1. 军事物联网技术,该技术通过先进的感知设备实现战场环境的实时监测与数据传输,提升作战效能和决策效率。其他关键技术还包括传感器网络、边缘计算、大数据分析等,这些技术共同推动了物联网的快速发展和广泛应用。 ... [详细]
  • 本文详细介绍了在Windows XP系统中安装和配置Unix打印服务的方法,以支持远程行式打印机(LPR)功能。对于同时使用Windows 2000 Server打印服务器和Unix打印服务器的网络环境,该指南提供了实用的步骤和配置建议,确保不同平台之间的兼容性和高效打印。 ... [详细]
  • 投融资周报 | Circle 达成 4 亿美元融资协议,唯一艺术平台 A 轮融资超千万美元 ... [详细]
  • 在Python网络编程中,多线程技术的应用与优化是提升系统性能的关键。线程作为操作系统调度的基本单位,其主要功能是在进程内共享内存空间和资源,实现并行处理任务。当一个进程启动时,操作系统会为其分配内存空间,加载必要的资源和数据,并调度CPU进行执行。每个进程都拥有独立的地址空间,而线程则在此基础上进一步细化了任务的并行处理能力。通过合理设计和优化多线程程序,可以显著提高网络应用的响应速度和处理效率。 ... [详细]
  • 本文详细探讨了Zebra路由软件中的线程机制及其实际应用。通过对Zebra线程模型的深入分析,揭示了其在高效处理网络路由任务中的关键作用。文章还介绍了线程同步与通信机制,以及如何通过优化线程管理提升系统性能。此外,结合具体应用场景,展示了Zebra线程机制在复杂网络环境下的优势和灵活性。 ... [详细]
  • Shell参数详解与应用
    本文详细介绍了Shell参数的种类及其应用,内容简洁明了,结构清晰。通过深入解析各类参数的功能和使用方法,旨在帮助读者更好地理解和掌握Shell编程技巧,提升实际操作能力。 ... [详细]
  • 互斥锁(Mutual Exclusion,简称Mutex)是多线程编程中的一种同步机制,用于确保同一时间只有一个线程能够访问共享资源,从而避免数据竞争和不一致的问题。信号量(Semaphore)则是一种更为通用的同步工具,不仅能够控制对资源的访问,还能管理资源的数量。本文将深入探讨这两种机制的工作原理、应用场景以及它们在实际开发中的优缺点,帮助读者更好地理解和使用这些重要的并发控制手段。 ... [详细]
  • 深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用
    深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用 ... [详细]
  • 考前准备方面,我的考试时间安排在上午11点至12点,只需提前20分钟到达考场的接待休息区即可。由于我居住在福田区,交通便利,可以选择多种方式前往考场。为了确保顺利通过考试,我建议考生提前熟悉考试流程和环境,并合理规划出行时间,以保持良好的心态和状态。此外,考前复习应注重理论与实践相结合,多做模拟题,加强对重点知识点的理解和掌握。 ... [详细]
  • 本书详细介绍了在最新Linux 4.0内核环境下进行Java与Linux设备驱动开发的全面指南。内容涵盖设备驱动的基本概念、开发环境的搭建、操作系统对设备驱动的影响以及具体开发步骤和技巧。通过丰富的实例和深入的技术解析,帮助读者掌握设备驱动开发的核心技术和最佳实践。 ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • 字节跳动青训营:Go语言进阶培训与依赖管理深入解析
    本文详细探讨了字节跳动青训营中关于Go语言进阶培训的核心内容,重点讲解了并行与并发的区别、Goroutine的使用、CSP模型及Channel机制在并发安全中的应用,并介绍了LockWithGroup的实现方式。此外,文章还深入解析了Go语言的依赖管理机制,包括GoPath、GoVendor和GoModule的使用方法及其在依赖分发和回源过程中的作用。 ... [详细]
  • Prim算法在处理稠密图时表现出色,尤其适用于边数远多于顶点数的情形。传统实现的时间复杂度为 \(O(n^2)\),但通过引入优先队列进行优化,可以在点数为 \(m\)、边数为 \(n\) 的情况下显著降低时间复杂度,提高算法效率。这种优化方法不仅能够加速最小生成树的构建过程,还能在大规模数据集上保持良好的性能表现。 ... [详细]
  • Java服务问题快速定位与解决策略全面指南 ... [详细]
author-avatar
钟z4z萍
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有