热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

嵌入式操作系统基础

一、嵌入式操作系统1、嵌入式操作系统的基本概念嵌入式操作系统是支持嵌入式应用的操作系统,它是一种用途广泛的系统软件。负责嵌入式系统的全部软、硬件资源的分配、任务调

一、嵌入式操作系统

1、嵌入式操作系统的基本概念

嵌入式操作系统是支持嵌入式应用的操作系统,它是一种用途广泛的系统软件。
负责嵌入式系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。
嵌入式系统引入操作系统的原因:
1)从技术上解决了嵌入式系统标准化、层次化的问题;
2)基于嵌入式操作系统,更容易形成有效的技术和资源积累;
3)嵌入式操作系统是嵌入式系统重要的运行环境和开发平台,它的集成度和可用性直接关系到嵌入式系统的效率。


2、嵌入式操作系统发展历程

(1)无操作系统的嵌入式算法阶段
(2)简单监控式的实时操作系统阶段
(3)通用的嵌入式实时操作系统阶段
(4)以网络为标志的嵌入式系统阶段


3、嵌入式操作系统内核分类及基本结构

内核分类:
(1)宏内核(典型的有Linux、Unix)
(2)微内核(典型的有Nucleus、Uitron、uCOS)
基本结构按照层次划分:
(1)应用服务层
(2)系统层
(3)核心层
(4)硬件接口层


4、嵌入式操作系统内核的基本功能模块

进程管理
操作系统需要为进程分配资源,实现进程间共享和交换信息,保护进程资源,以及实现进程间同步。在一个多线程系统中,进程成了资源管理器,线程成为程序的基本执行单元。
作用是决定在特定的时刻要运行和等待哪个任务、如何调度、保护执行环境等。操作系统为每一个任务维护了一个称为任务控制块的数据结构,记录进程的有关信息,包括任务的环境、状态等。
任务也称线程,是一简单的程序,可认为CPU完全属于该程序自己;
被赋予一定的优先级,有自己的一套CPU寄存器和堆栈空间;
任务状态:休眠,就绪,运行,等待;

多任务
单CPU,轮番服务于一系列任务中的某一个;
使CPU的利用率达到最高;
带来诸如死锁,重入等诸多问题。
任务调度方法
1)优先级调度(优先级抢占和优先级不抢占)
优先级抢占是指当高优先级任务被激活后,立即中止当前任务的执行,抢占CPU运行;优先级不抢占是指当有高的优先级任务被激活后,不中止当前任务的执行,不抢占CPU运行,而是放在任务就绪队列中,在当前执行的任务结束后,从任务就绪队列中选择优先级最高的任务运行

5、任务调度方法
2)轮转调度
任务管理者让就绪任务按照一个固定的时间顺序轮流运行。
3)时间片调度
任务管理者根据各任务不同的情况在不同数量的单位时间的时间片内运行。
在嵌入式操作系统中很难明确哪一种调度方法是最好的,要根据被嵌入的系统的实际情况来优化选择。实际的嵌入式操作系统中一般都配有这三种调度函数的库函数,以满足不同用户的不同需求。

内存管理
虚拟存储管理器管理就是通过操作系统对内存和外存的管理,可以使应用程序获得比计算机实有的内存更大的编址空间,使每个程序都可以享有一个独立的虚拟存储空间。
 静态内存分配
动态内存分配
在内存分配的策略上,一个通用的嵌入式操作系统往往可以提供几种分配策略,而用户在开发自己的嵌入式系统时可以进行合理选择,体现了嵌入式操作系统的可裁减性。
存储管理另外一个重要问题——内存保护

中断管理
在嵌入式系统中,中断可以使CPU从查询方式解放出来。
计算机系统处理外部事件有两种方式:中断和查询。在多任务操作系统中,由于使用查询方式处理事件和I/O请求会大量占用CPU的时间,严重消耗系统的有限资源。因此无论是一般的操作系统还是嵌入式操作系统,都使用中断方式来处理事件或I/O请求。

中断管理
中断处理上,一般操作系统与嵌入式操作系统的不同之处在于现场保护。
一般操作系统的现场保护是由操作系统来完成的,在中断处理完成之后,也由操作系统恢复现场。
在嵌入式操作系统中,由于受到代码量的限制,中断现场的保护由中断处理程序来完成。在中断处理程序的入口要保护在中断处理程序中要用到的寄存器,在中断处理完成后恢复。通过这种方法,减少了代码量,提高了中断响应时间。但损失了系统的安全性,增加了调试的难度。

操作系统与应用程序的接口—API从操作系统的角度来看,提供给用户的有两类接口,分别为:
(1)人机界面;
(2)操作系统提供给用户的开发用户应用程序的API函数,即系统调用。
嵌入式操作系统只能面向被嵌入系统的实际要求,确定系统调用,以便达到在提供最有效的系统调用的同时具有最小的代码量。

本书所称的任务将用来描述一个处理器或一个处理器网络调度或执行的一个工作单元,也称为潜在的或实际的并行处理过程。并不考虑各种任务是由一个处理器网络并行执行还是由一个单一处理器以并行方式执行。

6、任务的调度是由嵌入式操作系统的内核完成的,调度的方式主要有以下三种:
(1)不可抢占(不可剥夺)式调度
(2)可抢占(可剥夺)式调度
(3)时间片轮转调度

(1)不可抢占(不可剥夺)式调度
也称为合作型多任务,是基于任务优先级的。一个任务一旦获得处理器就独占处理器运行,直至该任务结束进入等待状态,才将处理器的使用权让位给优先级最高的处于就绪状态的任务。

(2)可抢占(可剥夺)式调度
可抢占式调度也是基于任务优先级的,当前正在运行的任务必须随时让位给优先级更高的处于就绪态的其他任务。

(3)时间片轮转调度
当两个或两个以上任务有同样的优先级时,某个任务运行事先规定的时间额定(一段时间),然后切换至另外的任务,这就是时间片轮转调度。
在满足以下条件时,将CPU的使用权交给下一个就绪任务:
当前任务进入等待状态;
当前任务在事先规定的时间定额内转为等待状态;
当前任务事先规定的时间定额已用完。
大多数嵌入式操作系统对不同优先级的任务采用基于优先级的抢占式调度法,对相同优先级的任务则采用时间片轮转调度法。

7、嵌入式操作系统下的任务间通信

任务通信是指不同任务之间或任务与中断服务之间的信息传递。
通信方式有两种:
(1)通过全局变量进行通信
(2)通过消息邮箱或消息队列,由一个或若干个指针型变量进行通信。

(1)通过全局变量进行通信
每个任务在处理共享数据时必须是排他的,可采用以下方法。
控制中断,当任务与中断或任务共享数据时,任务在处理共享数据前需关闭中断,处理完共享数据后再打开中断;
控制任务切换,当任务间共享数据时,任务在处理共享数据前需禁止任务切换,处理完共享数据后再允许任务切换;
采用TAS(Test And Set)操作,即处理允许标志控制法;
利用信号量,信号量实际上是一种约定机制,其作用是控制共享资源的使用权、标志某事件的发生和使两个任务同步。
(2)通过消息邮箱或消息队列进行通信

(2)通过消息邮箱或消息队列进行通信

8、嵌入式操作系统实时性要求
嵌入式系统由于是嵌入到被控对象体系中的一个电子系统,与对象系统密切相关。而不同的对象系统会有不同的响应时间要求,体现了嵌入对象对时间响应要求的多样性。
根据嵌入式应用系统的激励-运行-响应特性,形成了以软件运行时间T为主要指标来表征系统的响应能力。而软件运行时间T与指令速度、编程技巧、程序优化等有关,是一个在应用系统设计中
可以改变的参数,它表现了嵌入式应用系统实时能力的可变更性。

响应时间的多样性要求与响应时间可调整性,是嵌入式系统实时性分析的基本出发点。


推荐阅读
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • 深入解析JVM垃圾收集器
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版,详细探讨了JVM中不同类型的垃圾收集器及其工作原理。通过介绍各种垃圾收集器的特性和应用场景,帮助读者更好地理解和优化JVM内存管理。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本文将详细介绍如何在Linux操作系统中执行PHP脚本,包括环境配置、命令使用及验证方法。对于需要在Linux环境下开发或部署PHP应用的用户来说,这是一篇非常实用的文章。 ... [详细]
  • 本文探讨了 Spring Boot 应用程序在不同配置下支持的最大并发连接数,重点分析了内置服务器(如 Tomcat、Jetty 和 Undertow)的默认设置及其对性能的影响。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
author-avatar
博菡
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有