Zephyr【2】-----内核调度[1]

内核调度

  1. Zephyr 内核的调度器是基于什么原则选择当前执行线程的?

总是选择优先级最高的就绪线程作为当前线程。

当多个线程优先级相同时,调度器会如何选择?

  1. 线程的 “就绪状态” 和 “非就绪状态” 分别指什么?哪些情况会导致线程进入非就绪状态?

有无阻塞执行的因子来区分就绪和非就绪态。
未启动、等待内核对象、等待超时服务、被挂起、已结束或终止

  1. 协作式线程和抢占式线程在优先级范围、执行特性上有何本质区别?如何通过动态调整优先级实现两者的转换?

协作:优先级为负数,一旦成为当前线程则一直执行直到主动释放cpu

抢占:优先级非负,运行时可以被任何更高优先级的线程或者协作式的线程抢占。

初始值优先级可以在线程启动后动态增加或减少,通过改变线程优先级可以改变线程的调度方式

  1. 协作式线程如果需要执行长时间计算,可能会带来什么问题?可以通过哪些方法解决?

会导致优先级高于或者等于该线程的其他所有线程的调度被延迟到一个不可接受的时间之后

解决:协作式线程可以自身间或性的放弃cpu,让其他线程得以执行,具体来说,可以 1. 调用 k_yield,把线程放到调度器维护的优先级排列的就绪线程链表中,然后调用调度器 2. k_sleep()使该线程在一段指定时间内变为非就绪态的线程。

  1. 抢占式时间片的作用是什么?其时间片大小是否可配置?当时间片结束时,调度器会对当前抢占式线程执行什么操作?

将同优先级的线程得到调度,可以配置,可以运行期间修改

时间片结束时,会检查当前线程是否可以抢占,如果可以,则对该线程隐式调用 k_yield(),让其他同优先级的就绪线程在该线程再次被调度前得到运行。

  1. 调度器锁(k_sched_lock()和k_sched_unlock())的功能是什么?如果持有调度器锁的线程进入非就绪状态,再次恢复执行时锁的状态会如何变化?

抢占式线程希望在执行某个特殊的操作时不被抢占,可以使用k_sched_lock()。临时变成协作式线程。

会把这个锁定的线程切换出去

  1. 线程睡眠(k_sleep())和忙等待(k_busy_wait())的核心区别是什么?分别适用于什么场景?

延迟一段时间后再执行,到达执行时间后,线程变为就绪态,然后才能再次被调度

忙等待不会交出cpu给其他线程

  1. 若要让某个抢占式线程在执行特定操作时不被抢占,应如何实现?操作完成后又该如何处理?

调用调度器锁

配置选项CONFIG_NUM_COOP_PRIORITIES和CONFIG_NUM_PREEMPT_PRIORITIES分别影响什么?举例说明它们如何定义线程的优先级范围。

当 ISR(中断服务程序)触发时,对当前正在执行的线程(包括协作式和抢占式)会产生什么影响?

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

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

相关文章

LangChain内置工具包和联网搜索

目录 一、什么是智能体?工具包又是什么? 二、智能体(Agent)的出现是为了解决哪些问题? 三、LangChain里面创建工具方式 3.1 tool 装饰器:用来定义一个简单的工具函数,, 可以直接给函数加上这个装饰器,让函数成为可调用的工具…

用c++做游戏开发至少要掌握哪些知识?

成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于用C做游戏开发的相关内容! 关…

vue3使用summernote

一、安装 npm install summernote-vue jquery summernote bootstrap popperjs/core二、summernoteEditor.vue <template><div ref"editorRef"></div> </template><script setup> import {ref, onMounted, onBeforeUnmount, watch} f…

低代码平台的性能测试实践与挑战

一、引言 近年来&#xff0c;低代码平台&#xff08;Low-Code Platform&#xff09;正在快速改变企业软件开发方式。Gartner 预测&#xff0c;到 2025 年&#xff0c;超过 70% 的应用开发将基于低代码或无代码技术。通过“拖拉拽建模 图形化逻辑 一键发布”&#xff0c;企业…

Stereolabs ZED系列与ZED X立体相机系列对比:如何根据项目需求选择?

Stereolabs是全球领先的三维视觉技术公司&#xff0c;专注于为机器人、自动化和空间感知等领域提供高性能视觉解决方案。其ZED立体相机系列包括ZED和ZED X两大系列&#xff0c;分别针对多场景三维感知和工业级应用设计&#xff0c;为企业和开发者提供了丰富的选择。ZED系列&…

Spring Boot登录认证实现学习心得:从皮肤信息系统项目中学到的经验

前言 最近通过一个皮肤信息管理系统的项目实践&#xff0c;深入学习了Spring Boot框架中登录认证功能的实现方式。这个项目涵盖了从后端配置到前端集成的完整流程&#xff0c;让我对现代Web应用的安全机制有了更深刻的理解。本文将分享我在这个过程中的学习心得和技术要点。 …

【初阶数据结构】双向链表

文章目录 双向链表1.申请节点2.链表初始化3.尾插4.打印链表5.头插6.尾删7.头删8.查找9.指定位置插入10.删除pos节点11.链表的销毁12.程序源码 双向链表 链表分类 8种 (带头/不带头 单向/双向 循环/循环) 最常用两种 单链表(不带头单向不循环链表) 双向链表&#xff08;带头双向…

从 Prompt 管理到人格稳定:探索 Cursor AI 编辑器如何赋能 Prompt 工程与人格风格设计(下)

六、引入 Cursor AI 编辑器的开发流程革新 在整个系统开发过程中&#xff0c;我大量采用了 Cursor 编辑器作为主要的开发环境&#xff0c;并获得以下关键收益&#xff1a; 具备 AI 补全与代码联想功能&#xff1a;支持通过内置 Copilot 模型对 Python、FastAPI、YAML、JSON 等…

Spark运行架构

Spark框架的核心是一个计算引擎&#xff0c;整体来说&#xff0c;它采用了标准master-slave的结构  如下图所示&#xff0c;它展示了一个Spark执行时的基本结构&#xff0c;图形中的Driver表示master&#xff0c;负责管理整个集群中的作业任务调度&#xff0c;图形中的Executo…

基于未合入PR创建增量patch的git管理方法

目录前言准备操作步骤精准移植基础PR到本地分支修改代码鸿蒙编译、调试、测试具体编译指令、测试步骤这里带过&#xff0c;这不是本文论述重点创建diff文件工作仓库应用最新patch总结前言 作为程序员&#xff0c;多人协同开发同一个需求是正常的。即使是自己一个人搞需求&…

git真正更新项目

背景 Fetch all remote后flutter代码都拉下来&#xff0c;都是Android项目应用不上&#xff1b;git–>update project才生效&#xff01;&#xff01;&#xff01;

AI时代如何拓展Web前端开发的边界

文章目录 1 从“页面仔”到“智能体验构建者”——前端的变与不变2 AI 如何重塑 Web 前端&#xff1a;从开发到用户体验的革命2.1 AI 赋能开发效率&#xff1a;前端工程师的“超级外挂”2.1.1 智能代码辅助与生成2.1.2 自动化测试与 Bug 定位 2.2 AI 提升用户体验&#xff0c;构…

chrome webdrive异常处理-session not created falled opening key——仙盟创梦IDE

注册表错误 :EKKOK:chromeinstallerut1 Lgoogle update settings.cc:26b falled opening key .( e\Update\ClientStateMedium 8A69D345-D564-463c-AFF1-A69D9E530F96} to set usagestats 连接超时 disconnected: received Inspector.detached eventfailed to check if windo…

【Java EE初阶 --- 多线程(进阶)】JUC

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 &#xff0c;Java 欢迎大家访问~ 创作不易&#xff0c;大佬们点赞鼓励下吧~ 文章目录 JUC组件ReentrantLock与s…

免费静态网站搭建

免费静态网站搭建 内容简介搭建步骤GitHub仓库创建Jekyll安装使用Jekyll安装指南Jekyll快速搭建测试Jekyll后续玩法 内容简介 &#x1f6a9;Tech Contents&#xff1a;GithubPage/Jekyll/Custom URLs &#x1f431;GitHub Pages&#xff1a;静态网站托管服务&#xff0c;自动将…

MySQL 8.0 OCP 1Z0-908 题目解析(21)

题目81 Choose two. Examine the modified output: mysql> SHOW SLAVE STATUS\G *************************** 1. row ***************************Slave_IO_Running: YesSlave_SQL_Running: YesSeconds_Behind_Master: 1612Seconds_Behind_Master value is steadily gro…

Web前端开发-HTML、CSS

文章目录是什么&#xff1f;HTML快速入门VS Code开发工具基础标签&样式新浪新闻-标题标题排版标题样式标题样式-1标题样式-2超链接新浪新闻-正文新浪新闻-正文排版新浪新闻-页面布局表格标签表单标签表单标签-表单项是什么&#xff1f; HTML快速入门 VS Code开发工具 基础标…

Vue.js状态管理: Vuex在大型项目中的实际应用

# Vue.js状态管理: Vuex在大型项目中的实际应用 ## 一、Vuex核心架构与大型项目适配 ### 1.1 状态管理&#xff08;State Management&#xff09;的本质需求 在复杂前端系统中&#xff0c;组件间的数据传递成本随项目规模呈指数级增长。根据Vue官方统计&#xff0c;超过500个组…

C++开发:结构体作为函数形参的值传递与引用传递

笔者定义了一个结构体变量&#xff0c;用于作为函数的形参&#xff0c;定义如下&#xff1a;struct CardParameters {float* Average nullptr;int averageSize 0; }; 需求描述&#xff1a;结构体变量作为函数的形参&#xff0c;在函数体中给指针变量分配内存空间并赋值&#…

【unity小技巧】在 Unity 中将 2D 精灵添加到 3D 游戏中,并实现阴影投射效果,实现类《八分旅人》《饥荒》等等的2.5D游戏效果

注意&#xff1a;考虑到unity小技巧的内容比较多&#xff0c;我将该内容分开&#xff0c;并全部整合放在【unity小技巧】专栏里&#xff0c;感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言实战1、在3D场景中&#xff0c;新建一些不同形状的2D图片2、我们新建一个Lit材质3…