首页 工作计划 工作总结 事迹材料 心得体会 述职报告 疫情防控 思想汇报 自查报告 党建材料 策划方案 教案设计 范文大全
  • 工作计划
  • 工作总结
  • 事迹材料
  • 心得体会
  • 述职报告
  • 疫情防控
  • 思想汇报
  • 自查报告
  • 党建材料
  • 策划方案
  • 教案设计
  • 范文大全
  • 汽车电子操作系统存储保护机制的设计

    时间:2023-06-01 12:25:05 来源:正远范文网 本文已影响 正远范文网手机站

    zoޛ)j馐LD䏣<#ky汽车电子操作系统存储保护的机制。通过对系统进行域的划分,并根据域的配置信息来规定域之间的相互访问的约束关系。底层基于存储管理单元(MMU)的支持,设计TLB的管理,任务切换以及系统调来支持域之间访问的约束和隔离从而达到保护作用。通过分析和测试基于硬件的存储保护机制,表明该设计能有效地达到存储保护的要求,并且系统有较好的性能。

    关键词:嵌入式系统;汽车电子;存储保护;AUTOSAR

    中图分类号:TP316.2 文献标识码:A 文章编号:1007-9599 (2012) 22-0000-02

    存储保护机制是实时嵌入式系统中保证系统安全可靠运行的重要方法。尤其是在对安全性要求极高的嵌入式汽车电子领域,存储保护凸显出越来越大的重要性。作为嵌入式系统的一个领域,早期的汽车电子操作系统标准,如OSEK OS并不支持存储保护的机制。这些年来随着存储保护机制作用的不断凸显,汽车电子操作系统也吸纳了存储保护的机制,并把它作为可配置功能的一部分写入了规范中(AUTOSAR OS)。根据AUTOSAR OS规范的要求,基于硬件平台MPC5634设计并实现了一种汽车电子操作系统的存储保护机制。

    MPC5634中的存储管理单元(MMU)是整个保护机制的硬件基础[2],而域是整个保护机制的逻辑划分。在航空电子等多种高可靠领域里,其保护机制也是建立在域的概念上的[1]。通过配置将系统划分为多个域,来使系统中不同的区域相互隔离保护开来。这样即使某一个域中的程序运行出现了问题也不会破坏其它域的正常运行。为了支持域之间的隔离和保护,需要基于存储管理单元(MMU)设计若干模块,包括TLB的初始化和管理、进程切换和系统调用。

    通过存储管理机制,可以在不大幅影响原有系统性能的前提下安全可靠地共享一个微控制器。存储保护的另外一个好处就是可以简化调试的工作,因为通过存储保护机制可以检查到许多很难发现的错误[3]。

    1 系统总体设计

    1.1 AUTOSAR OS的存储保护方案

    AUTOSAR OS是在原有OSEK OS的基础之上扩展改进而来的。原有OSEK OS并不具有存储保护功能,所有的应用包括内核都具有一样的特权级,对于它们之间的访问没有限制和约束。

    为了在其基础之上实现AUTOSAR OS所要求的存储保护功能,需要在原有系统之上扩展并构建域,它的主要特点是:

    1)支持两态,即特权态和用户态。

    操作系统与可信的应用程序运行在特权态,不可信的应用程序运行在用户态。

    2)支持域之间及域与操作系统的存储保护。

    在操作系统中,各个域具有独立的存储器资源,从而实现用户与操作系统、用户与用户之间在存储空间上进行隔离,达到互不影响的目的。

    1.2 存储保护系统的设计

    1.2.1 域的设计

    域这个概念在AUTOSAR OS中对应为OS-Application,它是系统中资源组织和管理的单元[4]。一组相关的资源,比如任务、计数器、警报等都是以域为单位组织在一起的,因此OS模块需要根据域的配置信息来对资源访问的合法性进行判断。

    为了支持系统运行过程中域之间的通信及交互,需要实现域的转换。域的转换一般发生在:

    1)任务的切换;

    2)操作系统的系统调用。

    1.2.2 底层存储保护机制的设计

    为了实现域之间的访问约束和隔离,需要底层的存储保护机制的支持。底层的存储保护机制包括以下功能模块:

    1)基于软件的TLB的管理

    在具有MMU的CPU中,整个存储保护权限的检查都是在访存过程中通过CPU自动地将当前的状态信息与TLB对应项进行匹配来实现的。与CISC处理器不同,RISC处理器只提供了TLB,而未提供TLB的管理机制,因此相应的TLB的管理都是有软件来完成的[5]。TLB的管理是整个底层存储保护机制的核心,因为TLB管理的好坏会对系统的性能有至关重要的影响

    2)权限访问异常的处理

    当应用在运行过程中,如果非法访问其它域的存储空间,系统则会产生访问权限异常。在异常处理程序中,需要根据异常的类型进行相应的处理。

    3)任务的管理

    任务管理的核心是任务之间的切换。每个任务都隶属于唯一的OS-Application,因此任务之间正确的切换是保证域之间相互隔离和转换的关键。

    4)系统调用

    为了使应用与内核隔离开来,需要提供统一的系统调用接口使应用程序能够正确地陷入到内核中,从而保证内核不会被应用破坏。

    2 系统的实现方式

    2.1 OS-Application的实现

    2.1.1 OS-Application的资源管理

    作为资源统一管理的单元,OS-Application需要记录其所管理的所有资源信息。在这里将各种类型资源的数量和标识号都以表的方式保存在OS-Application的配置结构中。由于在操作某一资源时,需要通过该资源访问其所隶属的OS-Application,因此在对应的资源的配置结构中也需要记录其所隶属的OS-Application的标识号。

    2.1.2 OS-Application与底层的映射

    OS-Application作为域在逻辑层面上将系统划分开来需要底层的支持。在存储保护中,域主要体现了系统存储空间的隔离。为了实现域与存储空间之间的映射,需要在源程序中将若干个域划分为各自的输入段,然后通过链接脚本将域定位到程序可执行印象的指定存储空间中[6]。

    由于MPC5634中的存储管理单元(MMU)是基于分页的机制来实现存储管理的,所以必须将物理存储空间中的系统的各个部分根据各自的属性划分成相应的页。页的大小以4的倍数递增,从4k到4G不等。每一个页具有读、写和可执行的访问属性,以及表示其特权模式的属性和标识其所隶属的进程ID的PID属性。通过PID属性可以标识该页所属的域。通过将存储空间分页把系统的不同部分划分开来。

    2.2 TLB的管理实现

    每当程序进行访存时,MMU会将访存地址、PID和当前的特权模式与TLB中的项目相比较,若命中并且满足权限要求则会将有效地址转换为物理地址,否则产生异常。基于硬件的存储保护机制就是通过TLB来对访存加以权限检查从而达到保护的功能。

    TLB共有16项,为了有效地支持存储保护,根据系统的运行特点这里将TLB的前8项作为固定项用以保存经常被访问的系统页面,比如内核代码和数据。而剩下的8项用来动态地维护应用使用的页面。通常应用的页的数量会超过TLB中的项数。

    2.2.1 页表的设计

    页表分为两种,系统页表和应用页表。系统页表中对应的是系统初始化及内核相关的数据和代码。这些页面信息是长驻TLB中的,其特权模式是内核态,并且其所对应的程序是作为共享资源来访问的。应用页表中对应的是应用的数据和代码。这些页面信息不是长驻TLB中的,当发生缺页异常的时候TLB中某些应用的页面信息会被替换掉。

    为了有效地维护页,这里以散列表的方式来记录页起始地址与页在页表中位置的关系。页的起始地址作为散列表的关键码,通过散列函数将其转换为对应的散列表中的位置。散列表该位置处的元素记录了页在页表中的位置。

    2.2.2 页的替换算法

    因为应用的页的数量通常可能会超过可用的TLB的项数,所以在运行过程中可能会发生TLB未命中的情况。在TLB未命中异常处理函数中需要对TLB中的项进行替换,将需要访问的应用的页置入TLB中。这里以先进先出的方式实现替换。在发生未命中异常的时候,我们能得到的信息有有效地址以及当前的PID,我们必须通过有效地址来找到需要置换进TLB的页面,以及再找到需要置换出TLB的页面。前者我们通过一个散列表表来查找需要置换进来的页面,而后者我们维护一个先进先出的链表来决定需要置换出去的页面。

    2.3 系统调用的实现

    系统调用由两部分构成,接口函数和系统调用异常处理函数。

    2.3.1 接口函数的实现

    每个接口函数都对应一个系统服务。在接口函数中以函数指针的方式来建立与系统服务的关联。当用户调用接口函数时,需要判断当前的特权模式。如果当前是特权态则直接调用系统服务。否则需要保存系统服务函数的地址到寄存器,然后再通过汇编指令SC触发系统调用异常处理函数来实现特权模式的切换。

    2.3.2 系统调用异常处理函数的实现

    进入到异常处理函数中后,系统进入特权态。其后需要根据当前任务分配系统栈,并使程序跳转到保存在寄存器中的系统服务函数的入口地址处。

    2.4 任务的管理

    任务管理的核心在于当任务发生切换的时候,需要完成任务之间上下文环境的切换。与此同时任务执行过程中所代表的域的保护信息也需要进行切换,从而保证域与域之间正确的转换。这些信息包括:

    1)OS-Application的ID号;

    2)任务所隶属的OS-Application的特权模式;

    3)任务的系统栈。

    若切换至的任务是第一次运行,则需要通过接口函数来实现到任务入口函数的跳转。在接口函数中根据任务所属OS-Application的特权模式来进行不同的处理。若是特权态则直接进行跳转,否则需要将当前特权模式更改为用户态再进行跳转。

    3 结论

    3.1 功能验证

    为了对存储保护机制进行验证,这里设计了两个简单的OS-Application,如表1所示:

    当task2访问OS-Application1中的数据变量a时系统就会产生数据权限访问异常;当task2调用OS-Application1中的子例程subroutine1时则会产生代码权限访问异常。添加了存储保护机制的系统可以有效地对存储访问进行保护,提高了系统的健壮性。

    3.2 性能分析

    在为系统增加了存储保护机制的同时也给系统带来了额外的负荷,系统的效率与原有相比有所降低。通过对代码的分析可以发现对系统性能的影响主要在于以下几个方面:

    1)系统调用

    与未使用存储保护机制相比,每个系统调用需要增加额外的代码量,包括接口函数和系统调用异常处理函数。接口函数占24个汇编指令,异常处理函数占22个。

    2)任务切换

    任务切换过程中域相关信息的处理需要额外的23个汇编指令。

    3)缺页异常处理

    当OS-Application数为4个时刚好占用TLB中的8个项,但当OS-Application数超过4时则会发生缺页现象,随着OS-Application数量的增加系统开销也会大幅度上升。

    尽管存储保护机制给系统带来了额外的开销,但是在满足系统实时性要求的情况下它对增强系统的健壮性和安全性是大有好处的。

    参考文献:

    [1]OSEK/VDX. Osek/vdx operating system [S]. Version 2.2.3.

    [2]Freescale Semiconductor. e200z3 Power Architecture™ Core Reference Manual [R]. Rev. 2.2008-06.

    [3]Shimpei Yamada, Yukikazu Nakamoto, Takuya Azumi, et al. Generic Memory Protection Mechanism for Embedded System and Its Application to Embedded Component Systems [C]. IEEE 8th International Conference on Computer and Information Technology Workshops. 2008:557-562.

    [4]AUTOSAR Development Partnership. AUTOSAR Operating System Specification [S]. V 4.0.0Rev 1. AUTOSAR GbR,2009.

    [5]David Nagle, Richard Uhlig, Tim Stanley,et al. Design Tradeoffs for Software-Managed TLBs [C]. Proceeding of the 20th Anniversary International Symposium on Computer Architecture. Michigan USA,1993: 27-38.

    [6]AUTOSAR Development Partnership. Specification of Memory Mapping 3.1.1 [S]. AUTOSAR GbR,2009.

    推荐访问:汽车电子 操作系统 机制 保护 设计