操作系统笔记内存管理之分页,分段和段页式

Posted niuxu18

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统笔记内存管理之分页,分段和段页式相关的知识,希望对你有一定的参考价值。

  • 基本内存管理:
  1. 进程占用空间必须连续,导致外部碎片以及附加的compaction
  2. 整个进程的swap in 和 swap out十分耗时。
  3. 解决:分页 ->内存空间不必连续,无外部碎片,有内部碎片。可以部分swap in 和 out。
  • 分页式内存管理
  1. 重定位
    • 物理内存:帧 <==> 逻辑内存:页
    • 页表管理页和帧的映射关系,每条记录称作PTE。即输入page number,输出frame number。
    • 逻辑地址:page number和page offset。
    • 物理地址:frame number和frame offset。
    • 实现:MMU查询页表负责地址映射,OS维护页表,屏蔽了映射细节。
    • 页表存储在内存,Page table base register(PTBR)和 page table length register(PTLR)分别保存页表的位置和长度。
    • 缺点:每次内存访问包括(2次)访问PT和访问内存数据。 解决方案:MMU中包含TLB(Translation Look-aside Buffers)缓冲。
  2. 内存保护
    • 以页为单位,保护信息存储在PTE
    • 另PTE包含valid/invalid位表明页是否可以使用。
  3. 页表结构
    • 每个进程需要一个页表,而全地址页表过于大。需要动态调整进程页表的大小
    • 层次型页表:树形,如二级页表(PD和PDE)【page directory number,page table number,page table offset】
    • hash页表
    • inverted页表
  4. 内存分配和回收
    • 内存分配:分配frame,并创建页表
    • 内存回收:进程退出时,回收frame
    • 空间frame的管理:free frame list
    • 内存共享以页面为单位。
  • 分段式内存管理
  1. 概念:逻辑地址空间由段组成,每段的数据类型相同。如代码段,数据段,栈。段在物理上不连续
  2. 重定位
    • 逻辑地址:segment number , offset
    • segement table 保存逻辑地址到物理地址的映射。每条记录包括base,limit(offset < limit),protection bits。
    • 类似段表存储在内存,segment table base register 和 segment table length register保存段表的位置和长度。
  3. 内存保护和共享
    • 以段为单位
  4. 缺点:容易产生外部碎片。
  • 段页式内存管理(IA-32)
  1. 必须分段
    • 最大段为4GB
    • 全局段和本地段
  2. 可选分页
  3. 先分段,后分页

以上是关于操作系统笔记内存管理之分页,分段和段页式的主要内容,如果未能解决你的问题,请参考以下文章

操作系统 内存管理 分页/分段/段页式管理

段页式存储管理思想

(王道408考研操作系统)第三章内存管理-第一节8:非连续分配管理方式之段页式管理方式

(王道408考研操作系统)第三章内存管理-第一节8:非连续分配管理方式之段页式管理方式

分页式内存管理

分页式内存管理