前一篇博客介绍了操作系统中进程和线程的概念,下面接着介绍操作系统内核关于进程隔离的基本内容。
进程隔离是操作系统内核对于资源管理和安全增强的特性,其最终的目的是对于操作系统内核能够更好的控制程序对资源的申请和使用,并且控制此程序可访问资源的范围并限定此程序异常之后能够影响的范围。 现有的小型嵌入式系统内核比如UC/OS 2, LittleKernel如果没有而外的库的帮助(例如LK的uthread库),都是不支持进程隔离的,其所有的任务运行在一个大的对每个任务都可见的内存空间之上,这么做的优点是其可以运行在没有MMU的处理器之上比如ARM的Cortex M处理器甚至是51单片机之上,但是其缺点是每个被操作系统调度的任务是没有机制隔离其资源的,而系统的安全性由于无法将单个任务崩溃造成的影响控制在此任务之内,所以整个系统的安全性和稳定性都非常的低。
1. 进程隔离的硬件要求
进程隔离对硬件有一些基本的要求,其中最主要的硬件是MMU (Memory Management Unit 内存管理单元),有时候ARM Cortex M之上的MPU也能达到类似的功能,但是其功能很弱,无法做到地之间的翻译,而只能在物理内存地址之上划定线性的范围。
下面重点介绍一下MMU的功能,