实时性、uc/OS-Ⅱ、空间域隔离、动态内存分配、隔离域间通信

文章目录

  • [1]闫广明. 嵌入式系统内存空间域隔离技术的研究与实现[D].哈尔滨工程大学,2011.
    • 国外研究现状
    • 国内研究现状
    • 内存空间域隔离技术
      • 段保护技术[8]
      • 段匹配技术
      • 地址沙箱技术[7]
      • 基于MMU或MPU的页表技术

[1]闫广明. 嵌入式系统内存空间域隔离技术的研究与实现[D].哈尔滨工程大学,2011.

如何利用MMU在不影响实时性的前提下实现嵌入式系统中各个任务之间的隔离保护。 为了满足嵌入式操作系统对可靠性和实时性的要求,需要一种能够适用于嵌入式操作系统的、具有隔离保护功能的、实时性好的内存管理模块。

国外研究现状

无MMU:

  1. 利用静态源代码分析来检测内存访问冲突、指针越界和非法跳转进而实现任务间的隔离,没有实现真正的内存保护,无法解决程序运行期间访问非法内存地址的问题[5,6]。
  2. 基于软件技术的动态故障隔离技术[7]。对软件模块分区,把不可信模块加载到容错分区中;改进编译后的目标代码,将在容错分区中不安全的间接跳转或间接读写指令前填充判断代码,防止此分区内指令访问其它分区内容。软件实现难度大,需要对机器代码二次编译,涉及到大量的汇编代码插入,不宜移植,会恶化系统的实时性。

uCLinux 是基于 Linux 的嵌入式操作系统,为了满足低端的微控制器,无 MMU,屏蔽了 Linux 的虚拟内存机制,系统运行在实地址上,内核和应用程序运行在同一特权级上,相互没有隔离,这就导致任何应用程序的运行错误可能会对其它应用程序或内核造成影响。并不是高可靠的嵌入式操作系统。
Linux 虽然可以应用在具有 MMU 的嵌入式系统中,但传统 Linux 的内存管理和保护机制是面对平均访问情况设计的,实时性很差,通过改进有 RTLinux 和 L4Linux。

具有MMU:在嵌入式系统上实现内存保护机制不仅要考虑应用程序的隔离,还要考虑系统实时性的问题。

  1. 基于硬件MMU和外存交换技术的的虚拟内存保护技术(分段和分页机制来实现任务间的隔离)。这种内存保护技术己经在服务器操作系统和桌面操作系统中得到了大量应用,但存在任务切换时间不确定,实时性差等缺点,无法直接应用在嵌入式操作系统中。
  2. RTLinux 采用实时任务与内核共享内核空间的方式。非实时任务运行在用户空间。内核空间与用户空间之间采用和特权级机制进行隔离。这样用户空间的运行错误不会影响到实时任务的运行,起到了一定的隔离保护作用。但是实时任务与内核之间却没有任何保护,当实时任务出错时会影响到整个系统的稳定性。所以也不能满足嵌入式操作系统对可靠性的全部要求。
  3. [16] 一方面解决传统内存保护粒度过粗问题(传统的内存保护都是以页为基础的),能精确到字一级的访问保护,通过在内存中建立每个内存地址的访问权限表,每次内存访问都要通过此表的权限检查,若不通过则抛出异常;另一方面加快权限的验证速度,对现有的 MMU 进行改造,加入权限表高速缓存,把常用的访问权限表放在缓存中,当访问某个内存地址时只需要访问权限表缓存即可迅速获得此地址的权限,不需要再次访问内存中的权限表了,减少访存次数,这种细粒度的内存保护方法需要改进现有 CPU 硬件,CPU 需要集成此类高速缓存。类似方法还有:Linux 内核多尺寸页的保护[17],[18] 将精细内存保护应用到基于权能的实时系统上。
  4. uc/OS-Ⅱ 是一种面向嵌入式系统的实时操作系统,具有实时性强、体积小、移植方便、代码清晰、可裁剪、易于扩展的特点,但其内存管理过于简单,任务间没有任何保护,且核心任务实现结构多采用全局变量来实现,无法保障各个任务间的安全性,使其很难应用在安全关键系统场合。uc/OS-Ⅲ 加入了基于 MMU 的空间隔离模块 uC/MMU,但由于其为商业软件,具体实现技术未公开。

ARINC653 标准:阐述模块化综合航空电子设备使用的应用软件的基础操作环境,定义航空应用与下层操作环境之间的接口和数据交换的模式以及服务的行为,并描述嵌入式航空电子软件的运行环境,其中特别提到的是在安全关键系统中必需使用空间隔离和时间隔离技术来保障多任务环境下的各个任务之间的安全。此规范成为了绝大多数安全关键系统的事实标准。很多著名的安全关键系统软件公司都在此标准基础上开发了新的嵌入式操作系统以适用于各种安全关键系统。

国内研究现状

  1. DeltaOS。国产的高可靠嵌入式实时操作系统,可以嵌入到以 32 位微控制器为核心的各种智能设备中,作为应用程序的支撑环境。特别是其已经被成功应用于航空/航天的高可靠性设备。据报道该操作系统于2005年进行了升级,加入了符合 ARINC653 规范的高可靠模块并使用MMU实现物理空间隔离。
  2. EOSnux。以 Linux 操作为蓝本,不适合实时性要求高的嵌入式系统。
  3. Hopen OS。北京凯思昊鹏软件工程技术有限公司自主研发的一款嵌入式实时操作系统,其核心一般为左右。其特点是占用空间小、实时性好、易于定制、支持多任务和多线程。但其任务间并无任何保护措施,并不是高可靠的嵌入式操作系统。

实验室方案:

  1. 熊光泽等学者在其开发的S-CRTOS系统上借鉴ARINC653思想,实现了基于空间和时间隔离保护机制[23]。S-CRTOS主要采用两种方式来实现应用与内核以及应用之间的隔离和保护,第一种方式是使用MMU,第二种方式是TRAP系统调用。但对其实现方法和系统实时性未作深入说明。
  2. 龚育昌、唐玲等学者在分析现有操作系统安全机制的基础上,针对空间隔离技术的不足之处,提出了功能隔离的新思想[24]。功能隔离可以提供更细致的隔离粒度,并可使不同类别的功能请求在相互隔离的执行域中执行,从而提高系统的可靠性与安全性。但该思想主要面向访问的安全性,对系统的实时性影响未做讨论。而在嵌入式系统中不仅要满足安全性要求,实时性也必须要考虑。
  3. 学者欧庆于证明了在分区内核系统中,其隔离安全性通过系统层层结构中的分区隔离机制能够得到实现[25]。
提出了一种在 ARM9 等有 MMU 的微控制器上实现具有空间域隔离功能的嵌入式操作系统模型。+ 在空间域上采用硬分区思想实现进程之间、进程与内核间、进程与空闲内存间、线程与其堆栈间的隔离;+ 通过资源预留机制保障关键任务的内存需求,通过内存限额机制防止恶意进程占用大量内存;+ 在时间域上采用两级调度,进程间采用抢占式调度,保障高优先级任务的实时性;+ 在内存管理上,本系统采用两级内存管理来提高内存的使用效率和管理的实时性;+ 进程内部采用 TLSF 算法进行动态内存管理,保证了内存分配的实时性和低碎片性;+ 在进程间采用固定分区大小的动态内存管理方式,保证了实时性和隔离性;+ 简化了MAC机制以实现具有实时性的I/O访问保护。在保证实时性的前提下提高了I/O空间的访问安全性;

内存空间域隔离技术

  1. 基于软件的隔离技术
  • 段保护技术
  • 段匹配技术
  • 地址沙箱技术
  1. 基于硬件与软件的隔离技术
  • 基于MMU或MPU的页表技术

段保护技术[8]

代码段、数据段、堆栈段和全局段。

这种技术对于缺少虚拟内存的嵌入式系统而言,通过提供一个完整的自动软件技术实现了段保护,提高了系统的可靠性。

在目标代码中的内存访问指令前插入优化过的运行时检测代码,如果发现要访问的段地址与当前段寄存器冲突,则抛出异常,并在系统失效或崩溃前做出矫正动作。

实现方法与具体硬件结构和机器语言息息相关,很难有良好的移植性。

段匹配技术

把嵌入式系统中的指令分为安全指令和不安全指令。针对不安全指令(跳转指令、访存指令)进行检查。

不安全指令可分为:可静态验证的指令(不通过运行就可确定其访问地址的指令)和不可静态验证的指令(其访问地址在程序运行时可能变化的指令)。

  • 可静态验证的指令(可直接修改目标代码的相关指令,保证不会访问非法的内存区域):直接转移指令(goto、call)、存储静态变量经常使用立即地址模式、
  • 不能静态验证的指令(需要在每一个不安全的指令前插入检验代码,检测目标地址):有些通过寄存器等寻址方式间接跳转的指令、用寄存器存储的目标地址、

该技术需要四个专门的寄存器(可以通过重定向编译器,使用对性能影响较小的寄存器集):1. 存储指令地址、2. 存储数据地址、3. 存储段位移量、4. 存储段标识符

该技术采用了指令分类操作和专用寄存器方式,能够进一步提高软件隔离技术的执行效率。由于其专用寄存器的使用依赖于具体编译器,很多商业编译器是不公开源码的,且该技术与特定处理器相关,移植困难。

地址沙箱技术[7]

在段匹配技术的基础上通过不提供故障处理能力来提高运行效率。

在段匹配技术中,把每一个不安全指令的插入代码中的地址高位填充为预定的段标识符,地址填充并不捕捉非法地址,它仅仅阻止影响的扩散,保证当前任务的访存地址都在本段内部。地址填充需要在每一个不安全的存储或跳转指令前插入两条算术指令:1. 清除段标识符位并把结果存储到专用寄存器 2. 设置段标识符的正确值。

需要五个专门的寄存器。

地址沙箱技术能够进一步减小软件的开销,无论是地址沙箱技术、段保护、还是段匹配技术都会影响原有程序的执行时间,会恶化系统的实时性。

基于MMU或MPU的页表技术

  1. 虚拟地址到物理地址的映射。
  2. 提供硬件机制的存储器访问授权。

内存中的每个页表项都可以设定对某内存区的访问权限,当访问不可访问权限的存储器时,会有一个存储器异常通知处理器。系统软件可以捕获这个异常来判断是否有非法的存储器访问。可以捕获和处理这种异常来实现空间域保护。

  1. 位图法

一般用在内存保护单元中,实现物理内存的权限控制,将物理内存分成几个区域,每个区域通过内存管理单元中的特定寄存器决定其访问权限。访问权限一般包括读、写、可执行,灵活性差,在高端MMU中已摒弃。

  1. 分页法
  2. 分段法
  3. 多级分页法
  4. 段页法
  5. 短路段树法

以上的方法虽然都能够实现内存保护和隔离,但是并不是都适合嵌入式操作系统,尤其是实时操作系统,因为嵌入式操作系统往往都有多任务和实时性要求。因此在进行嵌入式系统设计时还是需要根据系统规模的大小和实时性的要求来决定使用何种方法。若每个任务内存空间要求不高,则使用分页法能够满足嵌入式操作系统对多任务和实时性的需求。若每个任务内存空间要求较高,则建议使用分段法或者段页法。

【文献心得】内存隔离技术相关推荐

  1. 【文献心得】内存隔离技术研究现状调研

    文章目录 内存隔离相关技术 学术研究成果 工业嵌入式操作系统方案 参考文献 嵌入式系统的应用广泛,嵌入式操作系统对实时性和可靠性要求严苛,为了满足嵌入式操作系统对可靠性和实时性的要求,迫切需要一种能够 ...

  2. 阿里大规模业务混部下的全链路资源隔离技术演进

    作者:钱君.南异 审核&校对:溪洋.海珠 编辑&排版:雯燕 混部顾名思义,就是将不同类型的业务在同一台机器上混合部署起来,让它们共享机器上的 CPU.内存.IO 等资源,目的就是最大限 ...

  3. 深度 | 数据湖分析算力隔离技术剖析

    简介: 随着越来越多的企业开始做数据湖分析,数据量的持续增加,数据分析需求也会越来越多,在一个共享的数据湖分析引擎,如何防止多租户之间的查询相互影响是一个很通用的问题,本文以阿里云DLA Presto ...

  4. 关于网络隔离技术与网闸的理解

    一.网络隔离的概念 两个或两个以上的计算机或网络,不相连,不相通,相互断开,同时在需要的时候能够做到两者间的信息交换. 概念来源:人工烤盘.轮渡.Sneakernet 二.常见的网络攻击类型 1.入侵 ...

  5. 内存隔离_Windows 10中的“核心隔离”和“内存完整性”是什么?

    内存隔离 Windows 10's April 2018 Update brings "Core Isolation" and "Memory Integrity&quo ...

  6. Linux 操作系统原理 — 内存管理 — 页式内存管理技术

    目录 文章目录 目录 虚拟内存技术 页式内存管理技术 虚拟内存技术 虚拟内存技术是操作系统实现的一种高效的物理内存管理方式,具有以下作用: 使得进程间彼此隔离:通过将物理内存和虚拟地址空间联系起来,并 ...

  7. 交换机端口隔离技术应用

    某公司,由于业务要求,为了保障服务器高可用性,对服务器实现了NLB群集技术.万事有利就有弊,由于NLB群集在实际环境中一般采用多播技术,交换机同一出口下的节点均为收到大量广播,一些网络延时要求较小(如 ...

  8. Android 图片缓存之内存缓存技术LruCache,软引用

    Android 图片缓存之内存缓存技术LruCache,软引用

  9. 图片缓存之内存缓存技术LruCache,软引用

    图片缓存之内存缓存技术LruCache,软引用 每当碰到一些大图片的时候,我们如果不对图片进行处理就会报OOM异常, 这个 问题曾经让我觉得很烦恼 ,后来终于得到了解决, 那么现在就让我和大家一起分享 ...

  10. 数据库的事务隔离技术 之 MVCC

    在mysql中,提供了两种事务隔离技术,第一个是mvcc,第二个是next-key技术. 这个在使用不同的语句的时候可以动态选择.不加lock in share mode之类的就使用mvcc.否则使用 ...

最新文章

  1. php网站如何静态化链接,建站教程之网站URL静态化处理
  2. Graphviz之DT:手把手教你使用可视化工具Graphviz将dot文件转为结构图的png文件
  3. JS替换地址栏参数值
  4. [能力提升][费曼学习法]学习方法
  5. HSF/Dubbo序列化时的LocalDateTime, Instant的性能问题
  6. Thymeleaf Error resolving template [index],template might not exist or might not be accessible
  7. 怎么改vue项目的标题_vue修改项目名
  8. git注意事项(持续更新中)
  9. 程序反编译找pdf打开密码_即时密码保护PDF文件的免费工具
  10. opencv 曲线拟合
  11. 在线大学计算机资源,计算机专业常用网站及数据库-计算机及自动化专业网上资源.ppt...
  12. 【微信小程序---如何引入阿里巴巴图标步骤】
  13. 行星运动轨迹的程序实现
  14. FPGA入门经历的阶段
  15. Mysql-DATE_FORMAT()日期格式
  16. python批量读取图片处理并保存
  17. GlidedSky爬虫-IP屏蔽1
  18. 想学3D建模,选对行业也很重要!这些热门行业的发展趋势你要知道
  19. CPU卡程序设计实例(二十六)卡和ESAM之间外部认证
  20. 【程序员眼中的统计学(4)】离散概率分布的运用:善用期望

热门文章

  1. 峰瑞资本李丰:共享经济如何改造专业且非标准化的服务业
  2. 数据仓库项目实例(马蜂窝数据仓库)
  3. 计算机中桌面中不显示U盘图标,电脑不显示u盘怎么回事 电脑不显示u盘的解决办法...
  4. 我的大学十年 -- 林锐
  5. 教大家写特征码扫描工具来自动寻找CALL地址
  6. va_list可变参数理解(va_start/va_end...)
  7. java sort 时间排序_java collection.sort()根据时间排序list
  8. css动画效果轮播图片
  9. elementUI的Upload的手动上传及限制数量后隐藏上传样式
  10. ae缺少效果opticalflares_Optical Flares 镜头光晕AE插件