目录
一、嵌入式系统概念
【系统架构设计师】四、嵌入式基础知识(体系结构|嵌入式系统|多核处理器)
【系统架构设计师】四、嵌入式基础知识(软件|软件设计|硬件|式总线逻辑)
二、嵌入式系统软件架构原理与特征
2.1 两种典型的嵌入式系统架构模式
大多数嵌入式系统都具备实时特征,那么,这种嵌入式系统的典型架构可概括为两种模式,即层次化模式架构和递归模式架构。
2.1.1 层次化模式架构
位于高层的抽象概念与低层的更加具体的概念之间存在着依赖关系。层次化模式架构主要设计思想是:
(1)当一个系统存在高层次的抽象,这些抽象的表现形式是一个个的抽象概念,而这些抽象概念需要具体的低层概念进行实现时,就可采用层次化模式。
(2)分层模式结构只包含了一个主要的元素(域包)和它的接口,以及用来说明模式结构的约束条件。
(3)层次化模式可以分为两种:封闭型和开放性。封闭型的特征是:一层中的对象只能调用同一层或下一个底层的对象提供的方法。而开放型一层中的对象可以调用同一层或低于该层的任意一层的对象提供的方法。
2.1.2 递归模式架构
递归模式解决的问题是:需要将一个非常复杂的系统进行分解,并且还要确保分解过程是可扩展的,即只要有必要,该分解过程就可以持续下去。在创建这种模式的实例时,通常使用两种相反的工作流程。
● 自顶向下: 自顶向下的工作流从系统层级开始并标识结构对象,这些对象提供实现协作的服务。在实时系统和嵌入式系统中,大多数情况下是基于某个标准方法,将系统分成一个个子系统。当开发人员逐步降低抽象层级,向下推进时,容易确保开发者的工作没有偏离用例中所规定的需求。
● 自底向上: 自底向上专注于域的构造——首先确定域中的关键类和关系。这种方法之所以可行是因为:开发者以往有丰富的开发经验,并能将其他领域所获得的知识映射到当前开发所在的域中。通过这种方法,最终开发者会到达子系统级的抽象。
三、嵌入式操作系统
3.1 嵌入式操作系统定义
嵌入式操作系统 (Embedded Operating System,EOS)是指用于嵌入式系统的操作系统。通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。
嵌入式操作系统与通用操作系统相比,具备以下主要特点:
可剪裁性,可移植性,强实时性,强紧凑性,高质量代码,强定制性,标准接口,强稳定性,弱交互性,强确定性,操作简捷、方便,较强的硬件适应性,可固化性。
嵌入式操作系统分为面向控制、通信领域以及面向消费电子产品两类。嵌入式操作系统的架构如下图所示:
从嵌入式操作系统体系架构看,主要存在4种结构:整体结构、层次结构、客户/服务器结构和面向对象结构。
整体结构也称为模块结构或无序结构,它是基于结构化程序设计的一种软件设计方法。下图给出了传统嵌入式操作系统的体系结构。
3.2 嵌入式操作系统的基本功能
3.2.1 操作系统内核架构
内核是操作系统的核心部分,它管理着系统的各种资源。内核可以看成连接应用程序和硬件的一座桥梁,是直接运行在硬件上的最基础的软件实体。目前从内核架构来划分,可分为宏内核 (Monolithic Kernel)和微内核 (Micro Kernel)。
宏内核。用于管理用户程序和硬件间的系统资源,在宏内核中用户服务和内核服务在同一空间中实现,代码耦合度非常高,内核的功能组件代码可以互相调用。
微内核。微内核管理所有系统资源,在微内核中用户服务和内核服务在不同空间中实现,系统结构清晰,代码量少。
3.2.2 任务管理
任务管理是嵌入式操作系统最基本功能之一,这里的任务 (task)是指嵌入式操作系统调度的最小单位,类似于一般操作系统进程或线程的概念。
任务的工作状态最简单的可分为三种:执行态、就绪态和阻塞态,其转换关系见下图:
(1)执行状态:任务获得处理机,程序在处理机中执行。
(2)就绪状态:任务已获得处理机以外资源,待获得处理机即可执行。
(3)阻塞状态:执行状态任务因等待事件发生无法执行而放弃处理机。
3.2.1.1 实时调度方法
嵌入式操作系统大都支持优先级抢占调度算法和时间片轮转调度算法。在实时系统的任务调度中,存在大量的实时调度方法,大致可以概述为主要三种划分:
(1)离线 (Off-Line)和在线(On-Line)调度。
(2)抢占 (Preemptive)和非抢占 (Non-Preemptive)调度。
(3)静态(Static)和动态(Dynamic)调度等。
3.2.1.2 典型强实时调度算法
实时调度算法中还有强实时调度算法,具体可以分为:
(1)最早截止时间优先(Earliest Deadline First,EDF)调度算法:根据任务截止时间确优先级,截止时间越早,其优先级越高。
(2)最低松弛度优先(Least Laxity First,LLF)调度算法:根据任务紧急或松弛程度确定优先级,紧急程度越高,优先级越高。
(3)单调速率(Rate Monotonic Scheduling,RMS)调度算法:根据任务周期确定有限期,周期越短,优先级越高。这种算法被认为是最优的。
3.2.3 任务间通信
任务间通信管理也是嵌入式操作系统的关键功能之一。它主要为操作系统的应用程序提供多种类型的数据传输、任务同步/异步操作等手段。由于嵌入式操作系统是为应用提供管理、硬件支持、协调任务和中断处理程序等功能,具备着多任务能力,那么操作系统任务之间一般存在以下关系:相互独立、竞争、同步、通信。
要实现多任务间的协同工作,操作系统必须提供任务间的通信手段。嵌入式操作系统一般都会提供多任务间通信的方法,常用的通信方式包括:
● 共享内存:数据的简单共享。
● 信号量:基本的互斥和同步。
● 消息队列:同一CPU内多任务间消息传递。
● Socket和远程调用:任务间透明的网络通信。
● Signals (信号):用于异常处理。
四、嵌入式数据库
与传统数据库相比,嵌入式数据库系统有以下几个主要特点:嵌入式、实时性、移动性、伸缩性。
4.1 嵌入式数据库分类
嵌入式数据库可以按照如下方式分类:
(1)按嵌入对象分为:软件嵌入数据库、设备嵌入数据库、内存数据库。
(2)按系统结构分为:嵌入数据库、移动数据库、小型 C/S 结构数据库。
(3)按存储位置分为:①基于内存的数据库系统;②基于文件的数据库;③基于网络的数据库。
4.2 基于内存的数据库系统
基于内存的数据库系统(Main Memory Database System,MMDB) 是实时系统和数据库系统的有机结合。内存数据库是支持实时事务的最佳技术,其本质特征是以其“主拷贝”或“工作版本”常
驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。
典型产品是 eXtremeDB 嵌入式数据库,它具有:
● 内存数据库,实时性强,安全可靠
● 可最小化支持持久数据所必需的资源
● 保持极小的必要堆空间
● 维持极小的代码体积
● 通过紧密的集成持久存储和宿主应用程序语言消除额外的代码层
● 提供对动态数据结构的本地支持
4.3 基于文件的数据库
基于文件的数据库(File Database,FDB)系统就是以文件方式存储数据库数据,即数据按照一定格式储存在磁盘中。使用时由应用程序通过相应的驱动程序甚至直接对数据文件进行读写。
典型产品是 SQLite,它的特点是:
● 无须安装配置,应用程序只须携带一个动态链接库
● 非常小巧, For Windows 3.3.8版本的DLL文件才374KB
● ACID事务支持, ACID即原子性、一致性、隔离性、和持久性 (Atomic Consistent Isolated和Durable)
● 数据库文件可以在不同字节顺序的机器间自由的共享,比如可以直接从Windows移植到Linux或MAC
● 支持数据库大小至2TB
4.4 基于网络的数据库
基于网络的数据库 (Netware Database,NDB)系统是基于手机4G/5G 的移动通信基础之上的数据库系统,在逻辑上可以把嵌入式设备看作远程服务器的一个客户端。实际上,嵌入式网络数据库是把功能强大的远程数据库映射到本地数据库,使嵌入式设备访问远程数据库就像访
问本地数据库一样方便。
嵌入式网络数据库主要由三部分组成:客户端、通信协议和远程服务器。
嵌入式网络数据库系统的特点是:无需解析SQL语句;支持更多的SQL操作;客户端小、无须支持可剪裁性。
4.5 嵌入式数据库的一般架构
数据库服务器架构:数据库客户端通常通过数据库驱动程序(如JDBC、ODBC 等)访问数据库服务器,数据库服务器再操作数据库文件。数据库服务是一种客户端服务器模式,客户端和服务器是完全两个独立的进程。它们可以分别位于在不同的计算机甚至网络中。客户端和服务器通过TCP/IP 进行通信。这种模式将数据与应用程序分离,便于对数据访问的控制和管理。
嵌入式数据库架构:嵌入式数据库不需要数据库驱动程序,直接将数据库的库文件链接到
应用程序中。应用程序通过API访问数据库,而不是TCP/IP。 因此,嵌入式数据库的部署是与
应用程序在一起的。比如常见的版本控制器SubVersion,它所用的嵌入式数据库就是跟应用程
序放在一起的。
数据库服务器和嵌入式数据库对比如下:
(1)数据库服务器通常允许非开发人员对数据库进行操作,而在嵌入式数据中通常只允许应用程序对其进行访问和控制。
(2)数据库服务器将数据与程序分离,便于对数据库访问的控制。而嵌入式数据库则将数据的访问控制完全交给应用程序,由应用程序来进行控制。
(3)数据库服务器需要独立的安装、部署和管理,而嵌入式数据通常和应用程序一起发布,不需要单独地部署一个数据库服务器,具有程序携带性的特点。
嵌入式数据库有其自身的特殊需要,它应具备的功能包括以下4点:
● 足够高效的数据存储机制;
● 数据安全控制(锁机制);
● 实时事务管理机制;
● 数据库恢复机制(历史数据存储)。
一般嵌入式数据库可划分成数据库运行处理、数据库存取、数据管理、数据库维护
和数据库定义等功能。
在嵌入式环境下开发实时数据库系统需要特别解决的以下几个设计问题:
(1)存储空间管理模块。嵌入式实时数据库系统由于采用了内存缓冲的技术,必然要涉及
嵌入式操作系统的内存管理,因此,用户必须了解系统对内存的分配机制,并设计自己的内存
管理程序。系统运行时,由该模块通过实时O S 向系统申请内存缓冲区,作为共享的内存数据
区使用。之后,将历史数据库中的初始化数据调入内存区对这些空白内存进行初始化。
(2)数据安全性、完整性控制模块。实时数据库设计中必须考虑数据的安全性,①用户访问数据的合法性,②指系统的安全性。完整性是指用户对实时数据或历史数据的各种操作必须符合一定的语义,可通过完整性约束条件来实现。
(3)事务并发控制模块。在实时数据库中的封锁粒度通常选择一张关系表为一个单位(如模拟量关系表为一个封锁单位)。
(4)实时数据转储模块。该模块实现的功能是将实时数据存储为历史数据,通常由该模块
先将历史数据保存在内存缓冲区中,缓冲区满时才一次性写入磁盘;读历史数据时,先从缓冲
区内取数据,取不到数据时再进行文件的读写。
(5)运行日志管理模块。日志文件可以用来进行事务故障恢复和系统故障恢复。
相关推荐
【系统架构设计师】二十一、面向服务架构设计理论与实践①-CSDN博客文章浏览阅读396次,点赞16次,收藏8次。为适应日益增长的用户访问量和产品的快速更新迭代,导致SOA 架构向更细粒度、更通用化程度发展,就成了所谓的微服务了。 SOA 与微服务的区别在于如下几个方面:(1)微服务相比于SOA 更加精细,微服务更多地以独立的进程的方式存在,互相之间并无影响;(2)微服务提供的接口方式更加通用化,例如HTTP RESTful 方式,各种终端都可以调用,无关语言、平台限制;(3)微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合。https://shuaici.blog.csdn.net/article/details/140764750【系统架构设计师】二十、云原生架构设计理论与实践①-CSDN博客文章浏览阅读841次,点赞13次,收藏13次。云原生架构是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、可观测性、灰度等),使业务不再有非功能性业务中断困扰的同时,具备轻量、敏捷、高度自动化的特点。云原生的代码通常包括三部分:业务代码、三方软件、处理非功能特性的代码。https://shuaici.blog.csdn.net/article/details/140695519【系统架构设计师】十九、层次式架构设计理论与实践①-CSDN博客文章浏览阅读895次,点赞32次,收藏10次。层次式体系结构设计是一种常见的架构设计方法,也称为 N 层架构设计,它将系统组成为一个层次结构,每一层为上层服务,并作为下层客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层接口只对相邻的层可见。层次式体系结构的每一层最多只影响两层,同时只要给相邻层提供相同的接口,也允许每层用不同的方法实现,这种方式也为软件重用提供了强大的支持。大部分的应用会分成表现层(或称为展示层)、中间层(或称为业务层)、访问层(或称为持久层)和数据层。https://shuaici.blog.csdn.net/article/details/140684710