[关闭]
@WillireamAngel 2018-05-20T09:16:17.000000Z 字数 2280 阅读 1098

内存

操作系统


存储管理

内存、CPU

内存存储单位8bit,存在内存地址对齐。
CPU两级缓存-高速缓存->内存-缺页->外存(虚拟存储)

MMU

-|存储管理单元
---|逻辑地址空间
---|物理地址空间
--|独立地址空间
--|访问共享内存
-|内存虚拟化(提供更大的地址空间)

内存管理

硬件

地址空间

逻辑地址生成

程序--编译->汇编--编译->机器二进制码--链接->地址函数库--程序加载->重定位到物理地址

address

地址生成情况

地址检查

进程逻辑地址空间--指令->CPU--逻辑地址->操作系统--段长度和基址->物理地址

主要检测段长度和基址是否与操作系统提供的起始和最大逻辑地址空间相对应。

连续内存

一块不小于指定大小的物理连续内存分配。

内存碎片

空闲内存不能被利用。

动态分区分配

加载执行程序,分配大小可变的连续地址。

碎片整理

调整位置减少,避免分区碎片。
- 条件
动态重定位,开销
- 分区对换(swapping in/out)
等待(等待状态分区)<-->对换等待(对换区)
主要着眼点在于对换哪个进程分区(涉及优先级等)

伙伴系统

非连续内存

需求分析

段式存储

更细粒度,灵活分配,相对大块地址空间。

地址空间组成

address

段概念

访问方式和存储数据一致空间。
对应一个连续的内存块。
若干个段组成逻辑地址空间。

段访问过程

逻辑地址二元数组(s,d)
s:段号,d:段偏移

页式存储

页帧

frame page,2^n个物理页面,用于物理区域的划分

页面

page,帧和页相同,逻辑页面的划分,页内偏移和帧内偏移一致。

地址映射过程

页到帧的映射,逻辑地址页号连续,物理地址页号不连续,不是所有的页都有对应的帧。

页表

页表概念

保存逻辑地址到物理地址的映射。
每个进程都有一个页表,每个页面对应一个页表项,随进程运行而动态变化,页表基址寄存器。

快表

Translation Look-aside Buffer,TLB
缓存近期访问的页表项:使用关联存储实现,具备快速访问性能,如果TLB没有命中,则对应的表项被更新到TLB中。

多级页表

通过间接引用将页号分级,简历页表“树”,减少每级页表的长度。

页寄存器

页表与物理地址空间大小对应。

反置页表

基于Hash映射值查找对应页表项中的帧号。

段页式存储

段式存储在内存保护上有优势,页式存储在内存利用和优化转移到后备存储方面有优势。
段页式存储:在段式存储管理的基础上,给每个段加一级页表。通过指向相同的页表基址,实现进程间的段共享。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注