物理内存分配

    868
    最后修改于

    单一连续分配:分为系统区和用户区,用户区只有一个程序,只能供单用户、单任务使用。有内部碎片
    固定分区分配:提前划分分区表,将内存分区。可能程序过大难以放入分区。或太小,利用率低。有内部碎片
    动态分区分配:动态划定分区表,会导致外部碎片。通过紧凑重整可以解决,但耗时。
    相关选择算法:First Fit 首次适应,Next Fit 邻近首次适应,Best Fit 最好适应,Worst Fit 最坏适应。
    内存分页
    引入虚拟地址,将进程地址空间划分为 4KB 大小的页,将物理内存划分为 4KB 大小的页框,外存划分为 4KB 大小的块。
    进程初始时申请若干物理内存页框,存放自己的进程页面,其他不足存放的页面暂存在外存中的块中。
    这种机制使得地址可以划分为页号和页内偏移值。
    然后为每个进程建立一个页表,页表起始地址存储在 PCB 中,运行时存放在页表始址寄存器 PTR 中。通过多级页表可增加索引范围。
    image.png
    image.png
    设立 MMU,实现进程虚拟地址,到物理地址的转换,加入 TLB 加快页表查询。
    在地址变换时,通过页表始址寄存器访问页表,通过页表查找页面号,形成物理地址。如果没有加速机制,需要访问页表、访问数据两次访存。多级页表更多。

    内存分段
    基于进程地址空间分段(比如内核段,代码段,堆区等),实现进程段内地址连续,段间地址可分配。另外每段长度不固定,因此段内偏移和段号都要显式给出。
    通过段表寄存器,进行段表定位,共享与保护。分段有存取控制保护和地址越界保护。可以共享不可修改的内容。
    image.png
    image.png
    ** 段页结合,** 每段一张页表
    image.png
    image.png
    image.png

    • 🥳0
    • 👍0
    • 💩0
    • 🤩0