嵌入式操作系统服务机制

在这里插入图片描述

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。搜索关注公粽号 《机器和智能》 回复关键词 “python项目实战” 即可获取美哆商城视频资源!


博主介绍:
CSDN优质创作者,CSDN实力新星,CSDN内容合伙人;
阿里云社区专家博主;
华为云社区云享专家;
51CTO社区入驻博主,掘金社区入驻博主,支付宝社区入驻博主,博客园博主。


嵌入式操作系统服务机制

    • 1. 嵌入式操纵系统模型
    • 2. 内核基本服务——多任务机制
    • 3. 实时性与可调度性
    • 4. 任务管理与实时调度
    • 5. 优先级翻转 Priority Inversion
    • 6. 任务间通信机制
    • 7. 分区存储管理机制


专栏:《嵌入式软硬件》


1. 嵌入式操纵系统模型

超微内核: 规模最小,OS核心,主要完成中断、事件分发,部分可对多核处理器资源进行分配。

微内核: 扩展了任务调度等功能。

内核: 增加了任务间同步能力等服务。

执行体: 包括了私有内存模块,IO服务及其它复杂机制,大多商用嵌入式实时操作系统都是此形式。

操作系统: 提供了用户交互接口、文件系统、数据库、安全服务等组件的执行体,是一个完整的系统组件。

2. 内核基本服务——多任务机制

内核分为抢占式内核和非抢占式内核。

任务task

任务是指“需要完成工作的一个特定部分”,强调应用属性,是EOS(嵌入式系统)中的一个软件对象。

任务控制块TCB

①TCB是进行任务管理的数据结构:任务上下文及任务ID、状态、指向下一个要执行任务的TCB的指针、优先级等内容和属性。内核基于TCB中的信息,将相同状态的任务挂载到相应的任务队列中分类管理。

②任务状态由内核维护,包括运行、就绪、阻塞、睡眠、挂起等。

③任务优先级:优先级分为静态优先级和动态优先级,最低优先级的中断程序也要比最高优先级的任务先执行。

任务上下文(Task Context)及其切换

主要是保护现场,任务上下文是多任务系统中,任务被中断时所必需保存的最小数据集,涉及分配给任务的内存区域(包括堆栈)以及处理器的寄存器组等资源。

任务调度器

是内核中以就绪队列为主要对象的任务管理组件,以特定策略从就绪队列中选取要执行的任务,在内核态切换任务的上下文并跳转到该任务PC寄存器所指的位置。

抢占式调度:EDF调度等;

非抢占式调度:时间片轮转等;

中断

构成多任务系统的一种基本方式,最大中断禁止时间,即中断延迟时间,执行高优先级中断时不会响应低优先级中断,时间越小越好。

中断响应时间是指从中断发生到中断处理程序开始执行的时间间隔。

数据共享问题

多个任务间共享数据空间,可能存在读写、谢谢操作的竞争。

3. 实时性与可调度性

实时是指系统能够在限定的响应时间内提供所需水平的服务,实时系统是指计算的正确性不仅取决于程序的逻辑正确性,也取决于结果的产生时间。

逻辑或功能正确 logical or functional correctness,是指产生正确结果。

时间正确 timing correctness,是指在预定时间内完成计算。

对于嵌入式系统来说,一定要关注时间正确性。

任务的时间属性

任务的时间属性包括:就绪/释放时间、截止期、执行时间(真正持有CPU的时间)、完成时间、响应时间、滞后时间(超过截止期的时间,负时间表示提前完成)。

硬实时:截止期之前必须执行完。硬实时系统:含多个硬实时任务,比如飞行控制、核电站、机器狗等。软实时:允许超过截止期,统计思想,滞后时间越长,逻辑结果可信度越差。软实时系统:多媒体、视频安防、火灾监控、城市交通调度。

可调度性

从任务角度:可调度feasible schedule,对于每一个具有截止期要求的任务,不论何时只要在释放时间后启动,就都有可能在截止期前玩成。

从调度算法角度:schedulable,对一个调度算法,一组任务总是有可行的调度方案是每个任务在截止期前完成,如果一个系统中的所有任务都是可调度的,就说这个系统是实时的。

调度优化:optimal schedule,只要存在,调度算法总是可以找到这个可执行的调度序列。

错失率:miss rate,已执行任务中,完成执行但是超过截止期的任务所占的比例。丢失率:loss rate,丢弃的任务所占的比例。失效率:invalid rate,错失率+丢失率。

4. 任务管理与实时调度

任务管理

任务管理是内核的核心功能之一,基本操作包括:

  • 任务创建:在内存中为任务控制块和栈分配空间,初始化并激活任务;
  • 任务删除:结束任务执行,删除任务实体并释放其所占用的资源或挂起任务;
  • 任务控制:软件中通过系统调用,对任务运行状态进行动态控制;

实现实时系统的总目标:让紧急任务能够尽可能地先执行并且尽可能快的完成执行。

所需资源+高优先级+抢占式调度机制+尽快拿到资源

任务调度

任务调度器根据调度算法和策略从就绪队列选择要执行的任务。切换上下文+任务调度。

单调速率调度rate monotonic scheduling,RMS,静态优先级调度算法,衍生的单调截至期调度deadline monotonic scheduling,DMS。RMS是一种静态优先级调度算法,优先级一旦分配好就固定不变,分配原则是任务周期越短即执行速率越快,则优先级越高。

最早截止期调度Earliest deadline first scheduling,EDF,动态优先级调度算法,任务优先级在系统运行过程中随着某些因素动态变化,核心思想是截止期最近的任务拥有最高优先级。

时间片轮转调度Round Robin scheduling,RR。相同优先级就绪任务的调度算法,每个任务只执行固定的时间片,然后由调度器在就绪队列中选择下一个任务。

5. 优先级翻转 Priority Inversion

低优先级任务持有高优先级任务所需要的临界资源,从而导致高优先级任务被延迟执行,高优先级任务会抢占低优先级任务所持有的CPU,但需要等待低优先级任务主动放弃所持有的临界资源,此时高优先级任务被阻塞,此时CPU返还低优先级任务,如果再来一个中优先级任务,它不需要等待临界资源,直接抢占CPU执行,这时,中优先级的任务先于高优先级的任务执行完成,这就造成了优先级翻转。优先级翻转的本质就是低优先级的任务持有高优先级任务执行所需要的资源,导致中优先级的任务先于高优先级任务被阻塞执行。

解决方法有如下几种:

①优先级继承协议priority inheritance protocol,PIP

优先级翻转问题发生时,让持有共享资源的子优先级任务获取被阻塞高优先级任务的优先级,以尽快执行完并释放共享资源,进而使高优先级任务能尽快响应。也就是说,通过优先级继承来防止中优先级的任务插队。

②优先级天花板协议priority ceiling protocol,PCP

priority ceiling即为每一个临界资源赋予一个较高优先级。务在临界资源以外时,以原有的优先级运行。当一个任务t尝试获取一组所需临界资源中的一个资源s时,如果任务t的优先级严格大于已被其他任务所持有的临界资源的优先级天花板,任务能够获得该临界资源;否则的话,任务t被阻塞,而且持有临界资源的任务继承任务t的优先级。总之就是,任务有优先级,资源也有优先级,预防了死锁和阻塞传递。

③原始天花板优先级协议original ceiling priority protocol,OCPP

每个任务都有一个默认的优先级,各共享资源分别有一个静态天花板优先级,设定为使用该资源的任务的最大优先级;每个任务有一个动态优先级,是其静态优先级和继承自阻塞者任务的优先级中的最大者;当一个任务申请一个资源时,如果动态优先级高于任何被其他任务持有的资源的优先级天花板时,该任务将能够获得所申请资源。(预防死锁)

④立即天花板优先级协议immediate ceiling priority protocol,ICPP

任务具有静态优先级,每个资源具有静态优先级天花板;任务的动态优先级是其静态优先级及其所持有的资源的优先级天花板的最大值。

6. 任务间通信机制

共享内存(通信机制)

原生机制:公共内存空间+数据结构,比如说全局变量,在两个或多个人物之间交换数据。

当多任务同时访问,且有写操作时会产生数据共享问题,需要考虑互斥。

可使用的数据结构有:共享数组(线性缓冲区)、循环数组(环形缓冲区)、链表、指针变量等。

数据通信+行为协同

①消息队列(是一种内核机制)

内核机制:为多任务交互提供的以消息为单元的数据交互,内核可以同时创建、维护多个消息队列,每个队列有独立的ID,队列中的消息数量和长度可变。

FIFO队列,优先级消息队列。

队列占用内存太大,数据量太大,可以将数据映射为无数据类型指针。要在不同的任务间传递数据,先将数据放在缓冲区中,然后再将指向这个缓冲区的指针放入队列中,接收任务读取指针,依指针读取数据,由接受任务释放指针。

②消息邮箱

内核机制:可以看作是非常短的消息队列,消息指针或短队列。用于任务间少量数据通信,可用于任务间同步(此时不再关注消息内容)。

数据通信

管道:是一种内核机制,在任务见提供消息流的IO对象。流式通道,通常是完全面向字节流的,可按照M个字节写入,N个字节读出。由内核自带的API如创建、读出、写入管道等函数。可以使用标准IO或者文件读写函数对管道操作,管道具有消息队列和邮箱不具备的特性,管道作为IO设备,可使用标准的select函数来读管道。

同步

事件与事件组是基于同步模型的所人物之间,任务与中断服务程序之间,任务与操作系统资源之间的通信机制。每个任务的TCB中会包含一个二进制的事件寄存器,寄存器的每一位对应一个事件,即二进制事件标志。允许多个任务阻塞在同一个事件上,事件到来时内核依据任务优先级从阻塞在该事件的任务队列中选择并释放一个任务,允许一个任务等待在“与”或者“或”逻辑的事件组上。

同步/互斥

信号量是多任务操作系统内核重要的服务机制,用于任务与任务,任务与终端服务程序之间的同步。信号量有二进制信号量、互斥信号量、计数信号量等。

信号

软中断信号,内核提供的任务间异步通信服务,用于改变任务的控制流,以异步方式操作,所发送的信号仅在接收进程被调度时才有机会被处理,不同的EOS的信号机制有不同特性。

7. 分区存储管理机制

操作系统存储管理,重点是对物理内存及虚拟内存的管理,外部存储器的管理有文件系统负责。

静态使用:静态变量、全局变量,不会引起内存的不可预测访问,可靠但利用率低。

动态使用:动态存储器管理,分区存储器管理,按需分配、不可靠、利用率低。

静态内存管理

提前将内存分段划分为多个区域,以供不同的代码或系统功能使用,至少包括:代码区、数据区、可动态使用存储区。

动态内存管理

malloc、free,会产生碎片。

分区池机制

基本思想是对内存中的堆资源进行提前分配,创建一组确定大小的内存块block,一组内存块组成内存池pool,一组内存池构成一个分区partition。

内存是提前确定好的,在使用时进行逻辑操作。

逻辑的分配删除只是表示某块内存空闲或者占用,而不是物理上的删除和分配,物理上的分配在初始化时就已经完成了。EOS应用具有一定的确定性,系统初始化阶段进行存储资源预分配对于提高实时软件进行效率很有意义。

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


❗❗❗重要❗❗❗☞关注下方公粽号 《机器和智能》 回复关键词 “python项目实战” 即可获取美哆商城视频资源!

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

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

相关文章

三一充填泵:煤矿矸石无害化充填,煤炭绿色高效开采的破局利器

富煤贫油少气是我国的能源禀赋特征,决定了我国以煤炭为主的能源结构,煤炭为国民经济发展提供了重要的基础。煤炭开采过程会对土地、地下水、空气等环境造成较大的污染,但大宗固废煤矸石无害化充填的技术手段可以有效改善这样的情况&#xff0…

【Linux】线程详解完结篇——信号量 + 线程池 + 单例模式 + 读写锁

线程详解第四篇 前言正式开始信号量引例信号量的本质信号量相关的四个核心接口生产消费者模型用环形队列实现生产者消费者模型基于环形队列的生产消费模型的原理代码演示单生产者单消费者多生产者多消费者 计数器的意义 线程池基本概念代码 单例模式STL,智能指针和线程安全STL中…

【JavaEE】_构造HTTP请求与HTTPS

目录 1. 构造HTTP请求 1.1 form标签构造HTTP请求 1.1.1 form标签构造GET请求 1.1.2 form标签构造POST请求 1.2 通过ajax构造HTTP请求 1.3 form与ajax 1.4 使用ajax构造HTTP请求 2.HTTPS 2.1 对称加密 2.2 非对称加密 2.3 证书 1. 构造HTTP请求 1.1 form标签构造HTT…

NPDP产品经理知识(产品创新种的市场调研)

1. 复习产品设计与开发工具 创意生成: scamper也叫蹦蹦法 心智图就是思维导图:mindmaping 原型法--故事板:创意生成的时候做的 人种学--民族志 六顶思考帽:白色红色黑色蓝色。。。 概念设计: AOMI:卡…

Hive【Hive(六)窗口函数】

窗口函数(window functions) 概述 定义 窗口函数能够为每行数据划分 一个窗口,然后对窗口范围内的数据进行计算,最后将计算结果返回给该行数据。 语法 窗口函数的语法主要包括 窗口 和 函数 两个部分。其中窗口用于定义计算范围…

最全MacBook选购指南 | 看完你就知道怎么买

最全MacBook选购指南 | 看完你就知道怎么买 作为MacBook的老用户大大小小的型号也都用了不少 那这么多台MacBook到底怎么选呢💡 . ☑️M1和Intel的MacBook有什么差别呢? 下半年苹果发布的两款MacBook都是苹果自研的芯片M1。在此之前苹果一直用的都是Inte…

ESP32设备驱动-I2C-LCD1602显示屏驱动

I2C-LCD1602显示屏驱动 1、LCD1602介绍 LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块。它是由字符型液晶显示屏(LCD)、控制驱动主电路HD44780及其扩展驱动电路HD44100,以及少量电阻、电容元件和结构件等装配在PCB板上而组成。 通过前面的实例我们知道,并口方式…

asp.net班级管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net班级管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语言开发 asp.net班级管理系统 二、功能介绍 1…

国庆作业 day 2

select实现服务器并发 #include<myhead.h> #define ERR_MSG(msg) do{\fprintf(stderr, "__%d__:", __LINE__); \perror(msg);\ }while(0)#define PORT 8888 //端口号&#xff0c;范围1024~49151 #define IP "192.168.0.103" //本…

c++运算符重载实现

#include <iostream> #include <cstring> using namespace std; class myString { private:char *str;int size; public://无参构造myString():size(10){str new char[size]; //构造出一个长度为10的字符串strcpy(str,""); //赋值为空串}//有…

基于transformer的心脑血管心脏病疾病预测

视频讲解:基于transformer的心脑血管疾病预测 完整数据代码分享_哔哩哔哩_bilibili 数据展示: 完整代码: # pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple/ # pip install optuna -i https://pypi.tuna.tsinghua.edu.cn/simple/ import numpy as np …

硬件知识:U盘相关知识介绍,值得收藏

目录 什么是U盘&#xff1f; U盘根据结构有哪几种&#xff1f; 根据U盘的存储介质、外形、功能分类有哪几种&#xff1f; 什么是U盘&#xff1f; U盘&#xff0c;全称为USB闪存盘&#xff0c;是一种以闪存芯片作为数据存储介质的移动存储设备。U盘的历史可以追溯到1998年&am…

优化方法的应用(optimtool.example)

import optimtool as oo from optimtool.base import np, sp, pltpip install optimtool>2.4.2优化方法的应用&#xff08;optimtool.example&#xff09; import optimtool.example as oeLasso问题&#xff08;Lasso&#xff09; oe.Lasso.[函数名]([矩阵A], [矩阵b], [因…

Spring基础以及核心概念(IoC和DIQ)

1.Spring是什么 Spring是包含了众多工具方法的IoC容器 2.loC&#xff08;Inversion of Control &#xff09;是什么 IoC:控制反转,Spring是一个控制反转容器(控制反转对象的生命周期) Spring是一个loC容器&#xff0c;我们之前学过的List/Map就是数据存储的容器&#xff0c;to…

搭建在线python运行环境

常遇到需要一个小工具&#xff0c;比如生成作息时间表&#xff0c;今天就搭建一个可在线使用的python运行环境 当然也可以交给ChatGPT完成 1、安装canda wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2019.03-Linux-x86_64.shyum install -y bzi…

c#设计模式-结构型模式 之 装饰者模式

&#x1f680;介绍 在装饰者模式中&#xff0c;装饰者类通常对原始类的功能进行增强或减弱。这种模式是在不必改变原始类的情况下&#xff0c;动态地扩展一个对象的功能。这种类型的设计模式属于结构型模式&#xff0c;因为这种模式涉及到两个类型之间的关系&#xff0c;这两个…

时序预测 | MATLAB实现EMD-iCHOA+GRU基于经验模态分解-改进黑猩猩算法优化门控循环单元的时间序列预测

时序预测 | MATLAB实现EMD-iCHOAGRU基于经验模态分解-改进黑猩猩算法优化门控循环单元的时间序列预测 目录 时序预测 | MATLAB实现EMD-iCHOAGRU基于经验模态分解-改进黑猩猩算法优化门控循环单元的时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 EMD-iCHOAGR…

【C语言】利用数组处理批量数据(字符数组)

前言:前面已经介绍了&#xff0c;字符数据是以字符的ASCII代码存储在存储单元中的&#xff0c;一般占一个字节。由于ASCII代码也属于整数形式&#xff0c;因此在C99标准中&#xff0c;把字符类型归纳为整型类型中的一种。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x…

(32)测距仪(声纳、激光雷达、深度摄影机)

文章目录 前言 32.1 单向测距仪 32.2 全向性近距离测距仪 32.3 基于视觉的传感器 前言 旋翼飞机/固定翼/无人车支持多种不同的测距仪&#xff0c;包括激光雷达&#xff08;使用激光或红外线光束进行距离测量&#xff09;、360 度激光雷达&#xff08;可探测多个方向的障碍…

Java中阻塞队列原理、特点、适用场景

文章目录 阻塞队列对比、总览阻塞队列本质思想主要队列讲解ArrayBlockingQueueLinkedBlockingQueueSynchronousQueueLinkedTransferQueuePriorityBlockingQueueDelayQueueLinkedBlockingDeque 阻塞队列对比、总览 阻塞队列本质思想 阻塞队列都是线程安全的队列. 其最主要的功能…