软件架构考试基础知识 002:进程的状态与其切换

进程状态转换的说明

在操作系统中,进程的状态表示其当前的执行情况和资源占用情况。进程状态的转换反映了操作系统如何管理和调度进程。以下是进程状态转换的说明:


1. 三态模型(Three-state Model)

三态模型是最基础的进程状态模型,它将进程的状态分为以下三种:

  1. 运行态(Running)
  2. 就绪态(Ready)
  3. 阻塞态(Blocked)
状态转换图
   +-------+          +-------+          +-------+
   |       |          |       |          |       |
   | Ready |<-------->|Running|<-------->|Blocked|
   |       |          |       |          |       |
   +-------+          +-------+          +-------+

状态说明
  1. 运行态(Running)

    • 进程正在CPU上执行,占用CPU资源。
    • 只有当前进程才会处于运行态,其他进程要么等待CPU,要么等待某些外部事件。
  2. 就绪态(Ready)

    • 进程已经准备好执行,等待CPU分配资源。
    • 就绪态的进程被放入一个就绪队列中,等待调度器将其调度到CPU上运行。
  3. 阻塞态(Blocked)

    • 进程由于等待某些外部事件(如I/O操作完成、信号量等)而暂停执行。
    • 一旦外部事件满足,进程会从阻塞态转换到就绪态。
状态转换
  • 就绪态 → 运行态:进程被调度器选择并分配CPU资源。
  • 运行态 → 就绪态:当前运行进程的时间片用完,或更高优先级的进程进入就绪态。
  • 运行态 → 阻塞态:进程需要等待外部事件(如I/O操作)。
  • 阻塞态 → 就绪态:外部事件完成,阻塞状态的进程可以再次进入就绪态。

2. 五态模型(Five-state Model)

五态模型是三态模型的扩展,增加了两个新状态,分别是新建态(New)终止态(Terminated)。五态模型更详细地描述了进程的生命周期。

状态转换图
   +-------+          +-------+          +-------+          +-------+          +-------+
   |       |          |       |          |       |          |       |          |       |
   |  New  |--------->| Ready |<-------->|Running|<-------->|Blocked|<-------->|Terminat|
   |       |          |       |          |       |          |       |          |       |
   +-------+          +-------+          +-------+          +-------+          +-------+

状态说明
  1. 新建态(New)

    • 进程刚刚被创建,尚未被操作系统调度。
    • 操作系统会为进程分配资源(如内存)并将其加入就绪队列。
  2. 就绪态(Ready)

    • 同三态模型中的就绪态。
  3. 运行态(Running)

    • 同三态模型中的运行态。
  4. 阻塞态(Blocked)

    • 同三态模型中的阻塞态。
  5. 终止态(Terminated)

    • 进程完成执行或被操作系统终止。
    • 操作系统会回收该进程的资源。
状态转换
  • 新建态 → 就绪态:操作系统完成进程的初始化,将其加入就绪队列。
  • 就绪态 → 运行态:进程被调度器选择并分配CPU资源。
  • 运行态 → 就绪态:时间片用完或更高优先级进程抢占。
  • 运行态 → 阻塞态:进程等待外部事件。
  • 阻塞态 → 就绪态:外部事件完成,进程从阻塞态转换到就绪态。
  • 运行态 → 终止态:进程完成执行或被操作系统终止。
  • 阻塞态 → 终止态:进程在阻塞状态下被操作系统强制终止。

三态模型 vs 五态模型

模型状态数量特点适用范围
三态模型3简单,适合描述基本的进程调度教学、基础操作系统设计
五态模型5详细,适合描述完整进程生命周期现代操作系统、复杂调度场景

总结

  • 三态模型是理解进程调度的基础模型,适合描述CPU调度和资源分配的简单场景。
  • 五态模型是三态模型的扩展,增加了新建态和终止态,适合描述现代操作系统中进程的完整生命周期。
  • 五态模型更符合现代操作系统的实际调度机制,尤其是在支持多任务、多用户和复杂调度算法的系统中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/952394.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构C语言描述11(图文结合)--二叉搜索树(BST树)的实现(数据采用KV存储形式进行封装)

前言 这个专栏将会用纯C实现常用的数据结构和简单的算法&#xff1b;有C基础即可跟着学习&#xff0c;代码均可运行&#xff1b;准备考研的也可跟着写&#xff0c;个人感觉&#xff0c;如果时间充裕&#xff0c;手写一遍比看书、刷题管用很多&#xff0c;这也是本人采用纯C语言…

rabbitmq的三个交换机及简单使用

提前说一下&#xff0c;创建队列&#xff0c;交换机&#xff0c;绑定交换机和队列都是在生产者。消费者只负责监听就行了&#xff0c;不用配其他的。 完成这个场景需要两个服务哦。 1直连交换机-生产者的代码。 在配置类中创建队列&#xff0c;交换机&#xff0c;绑定交换机…

【数据库系统概论】第6章 (二)范式(重点讲在函数依赖范畴内)

目录 第一范式&#xff08;1NF&#xff09; 第二范式&#xff08;2NF&#xff09; 第三范式&#xff08;3NF&#xff09; BC范式&#xff08;BCNF&#xff09; 多值依赖 第四范式&#xff08;4NF&#xff09; 范式&#xff08;Normalization&#xff09; 是一种结构化的设…

Supermaven 加入 Cursor:AI 编码新篇章

引言 2024 年 11 月 11 日&#xff0c;我们迎来了一个激动人心的时刻——Supermaven 正式加入 Cursor&#xff01; 这一合作标志着 AI 编程工具进入了一个新的发展阶段&#xff0c;为开发者提供更智能、更高效的编码体验。本文将带您了解此次合并的背景、意义以及未来的发展方…

通信与网络安全管理之ISO七层模型与TCP/IP模型

一.ISO参考模型 OSI七层模型一般指开放系统互连参考模型 (Open System Interconnect 简称OSI&#xff09;是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型&#xff0c;为开放式互连信息系统提供了一种功能结构的框架。 它从低到高分别是…

【灵码助力安全3】——利用通义灵码辅助智能合约漏洞检测的尝试

前言 随着区块链技术的快速发展&#xff0c;智能合约作为去中心化应用&#xff08;DApps&#xff09;的核心组件&#xff0c;其重要性日益凸显。然而&#xff0c;智能合约的安全问题一直是制约区块链技术广泛应用的关键因素之一。由于智能合约代码一旦部署就难以更改&#xf…

网络安全设备主要有什么

网络安全设备指的肯定是硬件设备了&#xff0c;国内卖安全硬件的没几家&#xff0c;天融信&#xff0c;启明星辰&#xff0c;绿盟&#xff0c;深信服&#xff0c;就这四家卖的比较齐全吧&#xff0c;上它们官网看一下&#xff0c;就知道市面上主要的网络安全设备有哪些了。分类…

Springboot3.4整合jsp

文章目录 环境 springboot3.4 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency> <!--用于编译jsp--> <!-- Tomcat Embed Jasper --> <dependency>…

软件自动定时启动器

点击添加软件&#xff0c;可以添加可执行文件软件&#xff0c;设置启动的时间&#xff0c;也可以设置关闭的时间 注意&#xff0c;时间为00&#xff1a;00&#xff1a;00 等于没设置&#xff0c;这个时间不在设置范围&#xff0c;其他任何时间都可以 1.1更新 1&#xff1a;修复…

[java基础-集合篇]LinkedList源码粗析

LinkedList 的数据结构 实现List、Deque 接口&#xff0c;基于 双向链表实现的列表。与基于数组的 ArrayList 不同&#xff0c;基于链表的LinkedList 允许在列表的任何位置快速地插入和删除元素。 Java中LinkedList实现了Deque&#xff0c;它提供了 add, offer, remove, poll, …

error: linker `link.exe` not found

开始学习rust&#xff0c;安装好rust的环境&#xff0c;开始从hello world开始&#xff0c;结果用在win10环境下&#xff0c;使用vs code或cmd窗口编译rust报错&#xff1a; PS E:\study_codes\rust-demo\chart01> rustc hello.rs error: linker link.exe not found| note:…

STM32使用ITM调试_通过仿真器实现串口打印

IDE&#xff1a;CLion MCU: STM32F407VET6 工具&#xff1a;OpenOCD Telnet 一、简介 调试单片机时&#xff0c;如果要打印数据往往需要另接一根线通过USB转TTL接到电脑上。但这样做往往并不方便&#xff0c;尤其是身边没有USB转TTL工具时。这时可以使用单片机自带的ITM单元…

网络基础1 http1.0 1.1 http/2的演进史

http1.0 1.1 http/2的演进史&#x1f60e; &#xff08;连接复用 队头阻塞 服务器推送 2进制分帧&#xff09; 概述 我们主要关注的是应用层 传输层 http协议发展历史 http的报文结构&#xff1a;起始行 Header Body http的典型特征 http存在的典型问题 Keep Alive机制 chun…

汽车牌照识别系统的设计与仿真(论文+源码)

1设计原理 车牌识别系统的设计是一项利用车辆的动态视频或者静态图像实现牌照区域定位车牌号码识别的技术。其硬件部分通常包括触发设备、拍摄设备、照明设备、图像收集设备、进行车牌号码识别的处理器等&#xff0c;其软件的关键部分包含车牌区域定位的算法、车牌字符的分割算…

springboot 集成 mybatisplus

本案例版本 springboot 3.1.12 mybatis-plus 3.5.9 源码地址 stormlong/springboot-mybatisplus 集成 mybatis-plus 官方文档&#xff1a;快速开始 | MyBatis-Plus 引入依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-…

本地服务器Docker搭建个人云音乐平台Splayer并实现远程访问告别烦人广告

前言 大家好&#xff01;今天我要给大家分享的是如何在Ubuntu上用Docker快速搭建高颜值无广告的某抑云音乐播放器Splayer的详细流程&#xff0c;并且结合cpolar内网穿透工具实现远程访问。如果你是音乐爱好者&#xff0c;经常需要在外办公或旅行&#xff0c;这个教程绝对能让你…

phpenc加密程序源码

免费扩展加密程序&#xff0c;类似于sg11加密&#xff0c;支持单个PHP&#xff08;免费&#xff09;文件以及批量PHP文件&#xff08;ZIP压缩包格式&#xff09;源码加密的保护平台&#xff0c;加密后的源码文件保持原有代码结构&#xff0c;可以跨平台运行&#xff0c;可以运行…

牛客网刷题 ——C语言初阶(6指针)——BC106 上三角矩阵判定

1. 题目描述——BC106 上三角矩阵判定 牛客网OJ题链接 描述 KiKi想知道一个n阶方矩是否为上三角矩阵&#xff0c;请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵&#xff0c;主对角线为从矩阵的左上角至右下角的连线。 示例 输入&#xff1a; 3 1 2 3 0 4 5 0 0…

kafka消费堆积问题探索

背景 我们的商城项目用PHP写的&#xff0c;原本写日志方案用的是PHP的方案&#xff0c;但是&#xff0c;这个方案导致资源消耗一直降不下来&#xff0c;使用了20个CPU。后面考虑使用通过kafka的方案写日志&#xff0c;商城中把产生的日志丢到kafka中&#xff0c;在以go写的项目…

计算机网络 笔记 数据链路层3(局域网,广域网,网桥,交换机)

局域网: LAN:在某一区域内由多台计算机互联成的计算机组&#xff0c;使用广播信道 特点&#xff1a; 覆盖范围有限&#xff1a;通常局限在几千米范围内&#xff0c;比如一栋办公楼、一个校园或一个工厂等相对较小的地理区域。 数据传输速率高&#xff1a;一般能达到 10Mbps…