鸿蒙OpenHarmony【小型系统基础内核(进程管理调度器)】子系统开发

news2024/9/24 23:52:35

调度器

基本概念

OpenHarmony LiteOS-A内核采用了高优先级优先 + 同优先级时间片轮转的抢占式调度机制,系统从启动开始基于real time的时间轴向前运行,使得该调度算法具有很好的实时性。

OpenHarmony 的调度算法将 tickless 机制天然嵌入到调度算法中,一方面使得系统具有更低的功耗,另一方面也使得 tick 中断按需响应,减少无用的 tick 中断响应,进一步提高系统的实时性。

OpenHarmony 的进程调度策略支持 SCHED_RR(时间片轮转),线程调度策略支持 SCHED_RR 和 SCHED_FIFO(先进先出)。

OpenHarmony 调度的最小单元为线程。

运行机制

OpenHarmony 采用进程优先级队列 + 线程优先级队列的方式,进程优先级范围为0-31,共有32个进程优先级桶队列,每个桶队列对应一个线程优先级桶队列;线程优先级范围也为0-31,一个线程优先级桶队列也有32个优先级队列。

图1 调度优先级桶队列示意图

1

OpenHarmony 在系统启动内核初始化之后开始调度,运行过程中创建的进程或线程会被加入到调度队列,系统根据进程和线程的优先级及线程的时间片消耗情况选择最优的线程进行调度运行,线程一旦调度到就会从调度队列上删除,线程在运行过程中发生阻塞,会被加入到对应的阻塞队列中并触发一次调度,调度其它线程运行。如果调度队列上没有可以调度的线程,则系统就会选择KIdle进程的线程进行调度运行。

图2 调度流程示意图 2

开发指导

接口说明

接口名称描述
LOS_Schedule触发系统调度
LOS_GetTaskScheduler获取指定任务的调度策略
LOS_SetTaskScheduler设置指定任务的调度策略
LOS_GetProcessScheduler获取指定进程的调度策略
LOS_SetProcessScheduler设置指定进程的调度参数,包括优先级和调度策略

开发流程

说明: 系统启动初始化阶段,不允许触发调度。

以上就是本篇文章所带来的鸿蒙开发中一小部分技术讲解;想要学习完整的鸿蒙全栈技术。可以在结尾找我可全部拿到!
下面是鸿蒙的完整学习路线,展示如下:
1

除此之外,根据这个学习鸿蒙全栈学习路线,也附带一整套完整的学习【文档+视频】,内容包含如下

内容包含了:(ArkTS、ArkUI、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、鸿蒙南向开发、鸿蒙项目实战)等技术知识点。帮助大家在学习鸿蒙路上快速成长!

鸿蒙【北向应用开发+南向系统层开发】文档

鸿蒙【基础+实战项目】视频

鸿蒙面经

2

为了避免大家在学习过程中产生更多的时间成本,对比我把以上内容全部放在了↓↓↓想要的可以自拿喔!谢谢大家观看!
3

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

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

相关文章

gRPC介绍

gRPC 是一个由谷歌开发的现代开源高性能 RPC 远程过程调用( Remote Procedure Calls)框架,具备良好的兼容性,可在多个开发环境下运行。 相较于目前主流的 HTTP API 接口,gRPC 接口采用了领先的 HTTP/2 底层架构设计作…

input文本框随其中内容而变化长

<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><title>input文本框随其中内容而变化长</title><style>.input-length {border: 1px solid #ccc;padding: 5px;min-width: 10px;width: auto;}.in…

cobbler自动批量安装多版本操作系统

本次虚拟化环境为VMware Workstation Pro&#xff0c;cobbler服务端为CentOS7.9&#xff0c;需要自动安装的版本为CentOS7.9和CentOS8.1 目录 一、安装cobbler服务端1、修改YUM源2、关闭防火墙3、安装软件包4、cobbler环境配置5、解决语法问题6、启动服务7、导入镜像8、自定义…

828华为云征文|华为云Flexus X实例:极速搭建个人代码仓库GitLab平台

目录 前言 一、Flexus云服务器X介绍 1.1 Flexus云服务器X实例简介 1.2 Flexus云服务器X实例特点 1.3 Flexus云服务器X实例使用场景 二、Flexus云服务器X购买 2.1 Flexus X实例购买 2.2 重置密码 2.3 登录服务器 三、Flexus X 实例安装GitLab 3.1 GitLab镜像下载 3.2 GitLab部署…

yolov8模型在猫脸关键点检测识别中的应用【代码+数据集+python环境+GUI系统】

yolov8模型在猫脸关键点检测识别中的应用【代码数据集python环境GUI系统】 yolov8模型在猫脸关键点检测识别中的应用【代码数据集python环境GUI系统】 背景意义 猫脸关键点检测是计算机视觉领域的一个重要研究方向&#xff0c;它基于深度学习、机器学习等技术&#xff0c;通过…

手机文件压缩与解压:节省流量的实用技巧

首先&#xff0c;节省存储空间是手机文件压缩的一大优势。随着我们拍摄照片、录制视频、下载文件等&#xff0c;手机的存储空间很容易被占满。 通过压缩文件&#xff0c;可以减小文件的大小&#xff0c;从而释放更多的存储空间。例如&#xff0c;一些大型的文档、图片和视频文…

MySQL:进阶巩固-存储过程

目录 一、存储过程的概述二、存储过程的基本使用2.1 创建存储过程2.2 使用存储过程2.3 查询指定数据库的存储过程以及状态信息2.4 查看某个存储过程的定义2.5 删除存储过程2.6 案例 三、存储过程的变量设置3.1 系统变量3.2 用户自定义变量3.3 局部变量 四、IF判断五、参数六、C…

自动化学习3:日志记录及测试报告的生成--自动化框架搭建

一.日志记录 1.配置文件pytest.ini&#xff1a;将日志写入文件方便日后查询或查看执行信息。 需要将文件处理器&#xff08;文件存放位置/时间/格式等等&#xff09;添加到配置文件中的【日志记录器】 # pytest.ini [pytest] # ---------------日志文件&#xff0c;需要配合…

虚拟机使用FileZilla软件实现文件互传

软件版本&#xff1a;FizeZilla 3.63.2 VirtualBox7.0.20 1.设置桥接模式(网卡) 2.查看ip 在控制台输入ifconfig 3.在终端打开控制台安装FTP服务 sudo apt-get install vsftpd 等待软件自动安装&#xff0c;安装完成以后使用 VI命令打开 /etc/vsftpd.conf&#xff0c;命令…

8086的指令系统

今天上午综测答辩结束&#xff0c;感觉就很一般&#xff0c;但是我昨晚也操心到觉都没睡好&#xff0c;今天中午舍友玩P5吵得我也没睡着&#xff0c;感觉脑袋昏昏沉沉&#xff0c;汇编上课没认真听讲&#xff0c;晚上来补一补。还是采用GPT来讲解&#xff08;水文字&#xff09…

Unity开发绘画板——02.创建项目

1.创建Unity工程 我们创建一个名为 DrawingBoard 的工程&#xff0c;然后先把必要的工程目录都创建一下&#xff1a; 主要包含了一下几个文件夹&#xff1a; Scripts &#xff1a;存放我们的代码文件 Scenes &#xff1a;工程默认会创建的&#xff0c;存放场景文件 Shaders &…

9.22日常记录

1.memccpy函数 memccpy是一个用于内存复制的函数&#xff0c;它的原型通常在<cstring>&#xff0c;memccpy函数的作用是从源内存区域复制字节到目标内存区域&#xff0c;直到遇到特定的字符或者复制了指定数量的字节为止。 返回值: 如果在复制过程中找到了指定的字符&am…

科大讯飞智能体Python SDK接入流程

第一步&#xff1a;注册账号​ 进入https://passport.xfyun.cn/login&#xff0c;根据提示注册或登陆账号。 ​ 第二步&#xff1a;创建智能体 进入这个网页创建智能体&#xff0c;填好信息&#xff1a; https://xinghuo.xfyun.cn/botcenter/createbot?createtrue&qu…

lkhgjfjghkbhjk

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

http增删改查四种请求方式操纵数据库

注意&#xff1a;在manage.py项目入口文件中的路由配置里&#xff0c;返回响应的 return语句后面的代码不会执行&#xff0c;所以路由配置中每个模块代码要想都执行&#xff0c;不能出现return 激活虚拟环境&#xff1a;venv(我的虚拟环境名称&#xff09;\Scripts\activate …

ubuntu下检查端口是否占用问题,编写shell脚本检查端口是否占用

1.创建脚本 touch check_port.sh2.粘贴以下内容到check_port.sh中 #!/bin/bash# 检查端口是否被占用的函数 check_port() {local port80local result$(sudo lsof -i:$port)if [[ -z "$result" ]]; thenecho "端口 $port 未被占用。"elseecho "警告:…

水电站/水库大坝安全监测系统完整解决方案

一、背景 在当今社会&#xff0c;随着全球对清洁能源需求的日益增长&#xff0c;水电站作为可再生能源的重要组成部分&#xff0c;其安全稳定运行显得尤为重要。水电站&#xff0c;尤其是大型水库大坝&#xff0c;不仅承载着发电、防洪、灌溉等多重功能&#xff0c;还直接关系…

二分查找法求解一元三次方程组

本题使用二分查找求解 #include <iostream> #include <algorithm> #include <cmath> using namespace std;double a,b,c,d;// 求出方程的值 double f(double x) {return a*pow(x,3)b*pow(x,2)c*xd; }void find(double l,double r) {// 若精度在可控范围内…

每日一练:二叉树的层序遍历

102. 二叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 一、题目要求 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,n…

Python常见Json对比库deepdiff、json_tools、jsonpatch

对比两个json对象差异&#xff0c;常见的第三方对比库deepdiff、json_tools、jsonpatch都能够满足我们的需求。 用法&#xff1a; deepdiff from deepdiff import DeepDiffa {"name": "yanan", "pro": {"sh": "shandong"…