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

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

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

时间: 2024-10-13 16:21:19

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

操作系统概念学习笔记 15 内存管理(一)

操作系统概念学习笔记 15 内存管理(一) 背景 内存是现代计算机运行的中心.内存有很大一组字或字节组成,每个字或字节都有它们自己的地址.CPU根据程序计数器(PC)的值从内存中提取指令,这些指令可能会引起进一步对特定内存地址的读取和写入. 一个典型指令执行周期,首先从内存中读取指令.接着该指令被解码,且可能需要从内存中读取操作数.在指令对操作数执行后,其结果可能被存回到内存.内存单元只看到地址流,而并不直到这些地址是如何产生的(由指令计数器.索引.间接寻址.实地址等)或它们是什么地址(指令或数

操作系统概念学习笔记 16 内存管理(二) 段页

操作系统概念学习笔记 16 内存管理 (二) 分页(paging) 分页(paging)内存管理方案允许进程的物理地址空间可以使非连续的.分页避免了将不同大小的内存块匹配到交换空间上(前面叙述的内存管理方案都有这个问题,当位于内存中的代码和数据需要换出时,必须现在备份存储上找到空间,这是问题就产生了.备份存储也有前面所述的与内存相关的碎片问题,只不过访问更慢). 传统上,分页支持一直是由硬件来处理的.最近的设计是通过将硬件和操作系统相配合来实现分页. 基本方法 实现分页的基本方法设计将物理内存分

计算机操作系统学习笔记_8_内存管理 --虚拟内存管理

td p { margin-bottom: 0cm; }h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { font-family: "微软雅黑"; font-size: 16pt; }h2.ctl { font-family: "AR PL UMing CN"; font-size: 16pt; }h1 { margin-botto

《30天自制操作系统》笔记(07)——内存管理

<30天自制操作系统>笔记(07)--内存管理 进度回顾 上一篇中处理掉了绝大部分与CPU配置相关的东西.本篇介绍内存管理的思路和算法. 现在想想,从软件工程师的角度看,CPU也只是一个软件而已:它的功能就是加载指令.执行指令和响应中断,而响应中断也是在加载指令.执行指令.就像火车沿着一条环形铁轨前进:当中断发生时,就好像铁轨岔口处变轨了,火车就顺着另一条轨迹走了:走完之后又绕回来重新开始.决定CPU是否变轨的,就是CPU里的特定寄存器. 这是题外话,就此为止. 什么是内存管理 假设内存大小是

《python源码剖析》笔记 pythonm内存管理机制

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.内存管理架构 Python的内存管理机制都有两套实现:debug模式和release模式 Python内存管理机制的层次结构: 图16-1 第0层是操作系统提供的内存管理接口,如malloc.free 第1层是Python基于第0层操作系统的内存管理接口包装而成的,主要是为了处理与平台相关的内存分配行为. 实现是一组以PyMem_为前缀的函数族 两套接口:函数和宏. 宏,可以避免函数调

内存管理-基本分页管理方式

在存储器管理中,连续分配方式会形成许多"碎片",虽然可通过"紧凑"方法将许多碎片拼接成可用的大块空间,但须为之付出很大开销.如果允许将一个进程直接分散地装入到许多不相邻的分区中,则无须再进行"紧凑".基于这一思想而产生了离散分配方式.如果离散分配的基本单位是页,则称为分页存储管理方式.在分页存储管理方式中,如果不具备页面对换功能,则称为基本分页存储管理方式,或称为纯分页存储管理方式,它不具有支持实现虚拟存储器的功能,它要求把每个作业全部装入内存后

轻量级操作系统FreeRTOS的内存管理机制(三)

本文由嵌入式企鹅圈原创团队成员朱衡德(Hunter_Zhu)供稿. 轻量级操作系统FreeRTOS的内存管理机制(二)中讲到,heap2.c的内存管理机制会导致内存碎片的问题,系统运行久后会出现无法分配大块内存的情况,heap4.c中的管理机制提供了解决方法,它是在heap2.c的基础上添加了地址相邻空闲块间合并的功能,而heap5.c是对heap4.c的进一步扩展,它能够支持多块不连续分布的RAM空间作为堆使用,本篇将对heap4.c.heap5.c中的管理机制进行分析. 一.heap4.c

linux kernel学习笔记-5内存管理(转)

http://blog.sina.com.cn/s/blog_65373f1401019dtz.htmllinux kernel学习笔记-5 内存管理1. 相关的数据结构 相比用户空间而言,在内核中分配内存往往受到更多的限制,比如内核中很多情况下不能睡眠,此外处理内存分配失败也不像用户空间那么容易.内核使用了页和区两种数据结构来管理内存: 1.1 页 内核把物理页作为内存管理的基本单位.尽管CPU的最小可寻址单位通常为字(甚至字节),但是MMU(内存管理单元,管理内存并把虚拟地址转换为物理地址的

Linux System Programming 学习笔记(九) 内存管理

1. 进程地址空间 Linux中,进程并不是直接操作物理内存地址,而是每个进程关联一个虚拟地址空间 内存页是memory management unit (MMU) 可以管理的最小地址单元 机器的体系结构决定了内存页大小,32位系统通常是 4KB, 64位系统通常是 8KB 内存页分为 valid or invalid: A valid page is associated with an actual page of data,例如RAM或者磁盘上的文件 An invalid page is