目录
1. 连续分配管理
1.1 固定分区分配
1.2 动态分区分配
2. 非连续分配方式
2.1 基本分页式内存分配管理
2.1.1 基本分页式内存思想与方法
2.1.2 进程逻辑地址与内存物理地址如何转换?
2.1.3 页面在内存中的起始地址——页表
2.1.4 基本地址变换机构——页表寄存器
2.1.5 具有快表的地址变换机构
2.1.6 两级页表
2.2 分段式内存
2.2.1 分段式数据结构
2.2.2 地址变换——段表
2.3 段页式管理方式
注:本文讨论的是适合多道程序的内存分配管理方式
1. 连续分配管理
连续分配:指为用户进程分配的必须是一个连续的内存空间。
1.1 固定分区分配
1.2 动态分区分配
2. 非连续分配方式
非连续分配:可以将进程进行拆分,然后装载到不连续的内存空间中。
2.1 基本分页式内存分配管理
2.1.1 基本分页式内存思想与方法
2.1.2 进程逻辑地址与内存物理地址如何转换?
2.1.3 页面在内存中的起始地址——页表
操作系统为每个进程建立一张页表。
2.1.4 基本地址变换机构——页表寄存器
2.1.5 具有快表的地址变换机构
1)局部性原理
2)快表
3)思路
先查快表,没有再查慢表(上一节内存中的页表)
2.1.6 两级页表
前几节讨论的都是单级页表,存在缺点:对于32位系统,假设页面大小4KB占用12位,页表项长度4B,则剩余20位用于表示页号,故一个页表最多将占用内存=2^20 * 4B = 2^22B,相当于占用2^10个页框,占用过多连续的页框。 且根据局部性原理,没必要让整个页表常驻内存。
解决方法:两级页表
1)思想
对大的页表进行分组,构建一个新的数据结构,称为页目录表、顶级页表。
这样的好处是,依然可以表示2^20个页面,但是页表不一定要占用连续的页框。
地址转换时,先查组号,然后找到页号,最后找到内存块号,算出物理地址。
可以利用缺页中断,对页表进行调入调出(内外存)。
2.2 分段式内存
2.2.1 分段式数据结构
2.2.2 地址变换——段表
2.3 段页式管理方式
先分段,再分页,构成段页式管理。
程序员需要管理分段情况,续给出段号和段内地址。
数据结构: