计算机实现多道程序的基础是复用(共享)。复用有包括时分复用(主要针对CPU)和空分复用(主要针对内存)。其中实现空分复用面临两个问题:
一、程序之间如何防护,以及内核如何防护其它程序。
二、如何处理重定位。
下面是经典的解决策略:
利用一个检测单元实现程序保护,利用一个映射单元实现重定位。
实现中则是利用一个基址寄存器(base register)和一个界限寄存器(limit register)。前者保证程序不可能引用到低于该基址的存储空间,而后者保证程序不可能引用到高于界限寄存器值的存储空间。这一策略同时解决了程序防护和重定位着两个问题。
在这里完成检测和映射工作的逻辑电路称为内存管理单元(Memory Management Unit——MMU)。
稍微复杂一些的MMU分别有两个基址寄存器和界限寄存器。这就实现了对程序段和数据段的分别定位。可以使多个用户共享一个程序段成为可能。
事实上,实际中的MMU则更为复杂。
一、程序之间如何防护,以及内核如何防护其它程序。
二、如何处理重定位。
下面是经典的解决策略:
利用一个检测单元实现程序保护,利用一个映射单元实现重定位。
实现中则是利用一个基址寄存器(base register)和一个界限寄存器(limit register)。前者保证程序不可能引用到低于该基址的存储空间,而后者保证程序不可能引用到高于界限寄存器值的存储空间。这一策略同时解决了程序防护和重定位着两个问题。
在这里完成检测和映射工作的逻辑电路称为内存管理单元(Memory Management Unit——MMU)。
稍微复杂一些的MMU分别有两个基址寄存器和界限寄存器。这就实现了对程序段和数据段的分别定位。可以使多个用户共享一个程序段成为可能。
事实上,实际中的MMU则更为复杂。