• 连续内存分配及其方式详解

    内存应容纳操作系统和各种用户进程,因此应该尽可能有效地分配内存。本节介绍一种早期方法:连续内存分配

    内存通常分为两个区域:一个用于驻留操作系统,另一个用于用户进程。操作系统可以放在低内存,也可放在高内存,这取决与中断向量的位置。由于中断向量通常位于低内存,因此程序员通常将操作系统也放在低内存。因此,本节只讨论操作系统位于低内存的情况,其他情况的讨论也类似。

    通常,我们需要将多个进程同时放在内存中。因此我们需要考虑,如何为输入队列中需要调入内存的进程分配内存空间。在采用连续内存分配时,每个进程位于一个连续的内存区域,与包含下一个进程的内存相连。

    内存保护

    在深入讨论内存分配前,我们应先讨论内存保护问题。结合《内存交换》一节中讨论的两个想法,我们可以防止进程访问不属于它的内存。如果一个系统有重定位寄存器和界限寄存器,则能实现我们的目标。

    重定位寄存器含有最小的物理地址值,界限寄存器含有逻辑地址的范围值(例如,重定位=100040,界限=74600)。每个逻辑地址应在界限寄存器规定的范围内。MMU(内存管理单元)通过动态地将逻辑地址加上重定位寄存器的值,来进行映射。映射后的地址再发送到内存(图1 )。


    重定位和界限寄存器的硬件支持
    图 1 重定位和界限寄存器的硬件支持

更多...

加载中...