没有MMU的内存保护

Met*_*est 6 c memory memory-management

我想知道如何在没有MMU支持的情况下保护内存.我试图谷歌它,但没有看到任何有价值的论文或研究.那些处理它的只会处理bug,例如未初始化的指针,而不是由于软错误引起的内存损坏,也就是说,由于硬件瞬时故障破坏了写入内存位置的指令.

我想知道这个的原因是因为我正在开发一个没有任何内存保护的专有多核平台.现在我的问题是,软件可以用来保护内存,特别是由于软错误导致的疯狂写入(而不是程序员的错误).任何有关这方面的帮助将非常感激.

Soa*_*Box 5

如果您正在寻找运行时内存保护,那么理智的选择就是硬件支持.硬件是在可能导致损坏之前干预坏内存访问的唯一方法.任何软件解决方案都容易受到它试图防范的内存错误的影响.

使用软件,您可以实施验证/检测方案.您可以定期检查当前正在运行的程序无法访问的内存部分,看看它们是否已更改(可能是通过CRC这些区域).但当然,如果流氓程序损坏了校验和所在的区域,或者核查程序的代码被保留,那么所有的赌注都将被取消.

即使这种软件检查解决方案也不仅仅是一个调试工具,而是一个永久运行时保护.没有MMU的设备可能是一个小型嵌入式设备,它不会有备用周期来不断检查设备的内存.

通常没有MMU的设备被设计为运行没有内核或其他任何东西的单个程序,因此没有什么可以保护的.如果您需要运行多个程序并感觉需要保护,则可能需要更高级的硬件来支持您正在寻找的功能.