17-任务状态

任务状态

实时操作系统的核心就是高效的管理各个任务与任务之间的通信。

任务状态通常分为以下四种:

就绪(Ready)

运行(Running)

阻塞(Blocked)

挂起态(Suspended)

阻塞:如果当前任务在等待某个时序或外部中断时,就说这个任务处于阻塞态(任务被挂起,任务被延时、任务正在等待信号量、读写队列、读写事件等等)

挂起态:处于挂起态的任务对于调度器是不可见的。

进入挂起态的唯一方法就是挂起函数

从挂起态恢复的唯一方法就是恢复函数(一个普通恢复函数,一个用于中断的恢复函数)

理解挂起态和阻塞态的区别

当任务有较长的时间不允许运行时,可以将其挂起,这是调度器就不会管这个任务的任何信息

任务处于阻塞的时候,系统还需要判读处于阻塞态的这个任务是否超时,是否可以解除阻塞

总之:任务处于挂起态,系统就不会去管这个任务,任务处于阻塞态,系统还需要时不时去看一下这个阻塞是否可以解除

  1. 创建任务,任务就会被放到就绪态
  2. 当任务在就序列表中的优先级最高的时候,调度器就会将任务从就绪态变成运行态
  3. 当正在执行的任务被阻塞,此时就绪态中有一个优先级更高的任务,此时就会执行这个优先级更高的任务,当阻塞结束后,系统仍然再执行高优先级的任务,此时阻塞结束的那个任务就会进入就绪态。
  4. 当前正在执行的任务遇到任务被延时、等待某个时序、等待某个中断、等待信号量等等,任务就会从运行态进入阻塞态
  5. 当阻塞完成时,任务就会重新进入就绪

6、7、8、任务从就绪态、运行态、阻塞态进入挂起态就必须通过挂起函数来进入挂起态

9、任务从挂起态进入就绪态,只能通过恢复函数来进入就绪态。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JavaScript】JavaScript 变量 ① ( JavaScript 变量概念 | 变量声明 | 变量类型 | 变量初始化 | ES6 简介 )

文章目录 一、JavaScript 变量1、变量概念2、变量声明3、ES6 简介4、变量类型5、变量初始化 二、JavaScript 变量示例1、代码示例2、展示效果 一、JavaScript 变量 1、变量概念 JavaScript 变量 是用于 存储数据 的 容器 , 通过 变量名称 , 可以 获取 / 修改 变量 中的数据 ; …

【SpringCloud】微服务重点解析

微服务重点解析 1. Spring Cloud 组件有哪些? 2. 服务注册和发现是什么意思?Spring Cloud 如何实现服务注册和发现的? 如果写过微服务项目,可以说做过的哪个微服务项目,使用了哪个注册中心,常见的有 eurek…

计算机网络(基础篇)复习笔记——体系结构/协议基础(持续更新中......)

目录 1 计算机网络基础相关技术Rip 路由更新操作 2 体系结构(OSI 7层, TCP/IP4层)应用层运输层网络层IPv4无分类域间路由选择 CIDRIPV6 数据链路层循环冗余校验CRC协议设备 物理层传输媒体信道复用技术宽带接入技术数据通信 3 网络局域网(以太网Ethernet) 4 通信过程编码:信道极…

【c++】string模拟实现

string类的接口 namespace zjw {class string{public:typedef char* iterator;typedef const char* const_iterator;private:char* _str;int _size;int _capacity;};这里的迭代器直接使用原生指针来封装。 _str为指向string数组的首地址的指针。 _size为string数组的大小。 …

Python实例☞组织结构案例

实例一&#xff1a; ❶要求☞ 使用while循环模拟用户登录 ❷程序代码☞ i1 while i<4: nameinput("请输入您的姓名&#xff1a;") passwardinput("请输入你的密码&#xff1a;") if name"鯨殤" and passward"88888": print(&quo…

代码随想录刷题day18|找树左下角的值路径总和中序后序构造二叉树

文章目录 day18学习内容一、找树左下角的值1.1、思路1.2、错误写法1.2.1、为什么这么写是错的&#xff1f; 1.3、正确写法 二、路径总和2.1、思路2.2、正确写法12.2.1、这种写法回溯思想体现在哪里&#xff1f; 2.3、正确写法22.3.1、这种写法回溯思想体现在哪里&#xff1f; 2…

面向切面编程(AOP)介绍(横切关注点、通知(增强)、连接切入点、切面)

1. 面向切面编程思想AOP AOP&#xff1a;Aspect Oriented Programming面向切面编程 AOP可以说是OOP&#xff08;Object Oriented Programming&#xff0c;面向对象编程&#xff09;的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构&#xff0c;用于模拟公…

【理解指针(二)】

文章目录 一、指针的运算&#xff08;1&#xff09;指针加整数&#xff08;2&#xff09;指针减指针&#xff08;指针关系运算&#xff09; 二、野指针&#xff08;1&#xff09;野指针的成因&#xff08;1.1&#xff09;指针未初始化&#xff08;1.2&#xff09;指针的越界访问…

idea2023版使用废弃类没有删除线处理方法

idea2023版使用废弃类没有删除线处理方法 新版Idea使用废弃类时,默认是黄色警告处理方法1. 打开file -> setting2. 编辑(Editor) -> 检查(Inspections) -> 搜索Deprecated API usage 新版Idea使用废弃类时,默认是黄色警告 处理方法 1. 打开file -> setting 2. 编…

微服务---Eureka注册中心

目录 一、服务中的提供者与消费者 二、Eureka工作流程 三、搭建Eureka服务 四、服务拉取 五、总结 1.搭建EurekaServer 2.服务注册 3.服务发现 一、服务中的提供者与消费者 服务提供者&#xff1a;一次业务中&#xff0c;被其他微服务调用的服务。即提供接口给其他微服务。…

<Linux> 初识线程

目录 前言&#xff1a; 一、什么是线程 &#xff08;一&#xff09;基本概念 &#xff08;二&#xff09;线程理解 &#xff08;三&#xff09;线程与进程的关系 &#xff08;四&#xff09;简单实用线程 &#xff08;五&#xff09;重谈虚拟地址空间 1. 页表的大小 2…

编码器-解码器模型(Encoder-Decoder)

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 编码器-解码器模型简介 Encoder-Decoder算法是一种深度学习模型结构&#xff0c;广泛应用于自然语言处理&#xff08;NLP&#xff09;、图像处理…