码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-03-13 21:09:00      阅读:327      评论:0      收藏:0      [点我收藏+]

标签:compact   segment   退出   str   系统笔记   cti   分段式内存管理   bubuko   swap   

  • 基本内存管理:
  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. 先分段,后分页技术分享图片

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

标签:compact   segment   退出   str   系统笔记   cti   分段式内存管理   bubuko   swap   

原文地址:https://www.cnblogs.com/niuxu18/p/note_os_10.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!