《深入浅出AUTOSAR OS》之内存保护

                                        内存保护

1 背景与基本原理

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

 

内存保护方案基于可执行程序的(data、code和stack)区域。

 

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

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

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

 

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

 

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

2 需求

即规范要求哪些内容需要保护。

 

数据区和栈

 

(1)OS应防止不可信的OS-Application对自己的数据区和栈区(即内核的数据和栈)进行写访问。

 

(2)OS应提供一种选择,是否限制可信OS-Application的写访问,其方式与限制不可信OS-Application的方式相同。

 

可以通过设置一个OsTrustedApplicationWithProtection配置项进行选择。

 

OS-Application的私有数据

 

(1)OS可能会阻止其他不可信OS-Application尝试读取一个OS-Application的数据区。

 

(2)OS应允许OS-Application对自己的私有数据进行读写访问。

 

(3)OS应防止其他不可信OS-Application对一个OS-Application的私有数据进行写访问。

 

中断/任务的私有栈

 

(1)OS应允许任务/2类中断对自己的私有栈进行写访问。

 

(2)OS可以防止不可信OS-Application中的任务/2类中断的私有栈被同一OS-Application下的其他任务/2类中断对其进行写访问。

 

(3)OS应该防止其他不可信的OS-Application对一个OS-Application中的任务/2类中断的私有栈进行写访问。

 

中断/任务的私有数据

 

(1)OS应允许任务/2类中断对自己的私有数据区进行写访问。

 

(2)OS可以防止不可信OS-Application中的任务/2类中断的私有数据区被同一OS-Application下的其他任务/2类中断对其进行写访问。

 

(3)OS应该防止其他不可信的OS-Application对一个OS-Application中的任务/2类中断的私有数据区进行写访问。

 

代码区

 

(1)OS可以提供一种保护能力,保护一个OS-Application的代码段不被不可信OS-Application执行。

 

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

 

外设

 

(1)如果OsTrustedApplicationWithProtection == FALSE,则OS应允许可信OS-Application对外设进行读写访问。

 

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

 

触发内存访问错误

 

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

  • 3
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值