AutoSAR OS 内存保护

引用AUTOSAR_SWS_OS.pdf7.7.1

背景与原理(Background & Rationale

        内存保护(Memory protection)只能在为内存保护提供硬件支持的处理器上实现。比如硬件上MPUMemoryProtectionUnits)功能的芯片。

        内存保护方案基于可执行程序的(datacodestack)区域。

Stack: 一个OS-Application由若干个对象(TaskISR)组成,根据定义,这些对象的栈(Stack)只属于这些对象(Object)自己本身的,因此不需要在对象间共享数据,即使那些对象属于同一个OS-Application

对于任务和中断的栈的内存保护是非常有用的,主要有两个原因:

  • 与栈监测(stack monitoring)功能相比,为任务和中断提供更及时的栈溢出(包括上溢和下溢)检测。
  • 提供OS-Application之间的保护,例如满足某些安全约束。

Data: OS-Application有自己的私有数据(Data)区,任务和中断也有自己的私有数据区,OS-Application的私有数据部分被所属它的所有任务和中断共享。

Code: 代码(Code)段要么是OS-Application的私有部分,要么可以在所有的OS-Application之间共享(使用共享库)。在不使用代码段保护的情况下,执行不正确的代码将导致内存、时序或服务冲突。

需求(Requirements)

规定哪些内容需要保护

数据区和栈(Data Sections and Stack

[SWS_Os_00198] OS应阻止不受信任的OS-Applications对自己的数据区和栈区(即内核的数据和栈)进行写访问。

[SWS_Os_00795] OS应提供一种选择,是否限制受信任的OS-Application的写访问,其方式与限制不受信任的OS-Application相同。(SRS_Os_11005

这个可以通过<OsTrustedApplicationWithProtection>配置项进行配置选择。

OS-Application私有数据(Private data of an OS-Application

[SWS_Os_00026] OS可能会阻止其他不受信任的OS-Applications尝试读取一个OS-Application的数据区。(SRS_Os_11000

[SWS_Os_00086] OS应允许OS-Application对自己的私有数据区进行读写访问。(SRS_Os_11006

[SWS_Os_00207] OS应阻止其他不受信任的OS-Application对一个OS-Application的私有数据区进行写访问。(SRS_Os_11005

中断/任务的私有栈(Private Stack of Task/ISR

[SWS_Os_00196] OS应允许任务/2类中断对自己的私有栈进行读写访问。(SRS_Os_11006

[SWS_Os_00208] OS可以阻止不受信任的OS-Application中的任务/2类中断的私有栈被该不受信任的OS-Application(同一OS-Application)中的其他任务/中断对其进行写访问。(SRS_Os_11005

[SWS_Os_00355] OS应该阻止其他不受信任的OS-Applications对一个OS-Application中的任务/2类中断的私有栈进行写访问。

中断/任务的私有数据(Private data of a Task/ISR

[SWS_Os_00087] OS应允许任务/2类中断对自己的私有数据区进行读写访问。(SRS_Os_11006

[SWS_Os_00195] OS可以阻止不受信任的OS-Application中的任务/2类中断的私有数据区被该不受信任的OS-Application(同一OS-Application)中的其他任务/中断对其进行写访问。(SRS_Os_11005

[SWS_Os_00356] OS应该阻止其他不受信任的OS-Application对一个OS-Application中的任务/2类中断的私有数据区进行写访问。

代码区(Code Sections

[SWS_Os_00027] OS可以提供一种保护能力,保护一个OS-Application的代码段不被不受信任的OS-Application执行。

[SWS_Os_00081] OS应该可以对所有OS-Application都可执行的代码区提供共享代码库。(SRS_Os_11007

外设(Peripherals

[SWS_Os_00209] 如果<OsTrustedApplicationWithProtection == FALSE>,则OS应允许受信任的OS-Applications对外设进行读写访问。

[SWS_Os_00083] OS应允许不受信任的OS-Application仅向分配给它的外设写入数据(包括一些可以引起写内存区域的读操作)。

触发内存访问错误(Memory Access Violation

如果检测到内存访问冲突,OS应调用Protection Hook接口,其错误码为E_OS_PROTECTION_MEMORY。(SRS_Os_11013

要点归纳
  1. 内存保护(Memory Protection)只能在提供内存保护硬件支持的处理器上实现(芯片提供MPU功能(MemoryProtectionUnits))。
  2. MPU作用是根据总线上的信息对访问的合法性进行判断,其中指令信息包括地址、操作符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChenK21_idea

看后有收获,请赐些奶粉钱,谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值