OS内存管理

前言:文章参考 小林Coding, 部分图片来自王道考研和博主的公众号;学习书籍参考 操作系统设计与实现

目录

1. 什么是虚拟地址?

2. 基本分页存储管理思想

 2.1 为什么分页能够解决碎片问题

2.2 优缺点

3. 多级页表

4. 块表TLB

5. 段页式存储

6.总结


1. 什么是虚拟地址?

由程序产生的地址称为虚拟地址,在OS的帮助下,完成虚拟地址和物理地址的映射关系。

计算机中虚拟地址没有直接放到地址总线上,而是放到存储管理单元MMU,由它完成虚拟地址和物理地址的映射关系。

2. 基本分页存储管理思想

把内存分为一个个相等的小分区,再按照分区大小把进程拆分成一个个小部分

物理内存划分为若干固定大小的内存块, 称为物理页面页框; 虚拟地址划分为同样大小相同的块,称为页面

操作系统以页框为进程分配内存空间,页框连续,因此可以避免内存碎片的产生(回收后的空间仍能很好被利用);页面与页框之间是一一映射关系

每个进程可能被划分为若干页面,这些页面组成了页表结构

 地址转换计算:

页号 = 逻辑地址 / 页面长度

偏移量 = 逻辑地址 % 页面长度

 2.1 为什么分页能够解决碎片问题

页框大小固定,释放的内存大小以页为单位 -》 物理中的某一个页框,在下次分配中还是以页为单位分配,不会存在无法使用的小内存,如果内存过大,会被切分到多个页面中

当页表中不存在对应的页号时,发生缺页中断,通过一些页面置换算法去磁盘中检查是否存在合适的页面(当内存发生不足时,会选择不使用的内存页交换到磁盘当中,称为换入换出操作

2.2 优缺点

优点:

通过分页,程序内存不需要全部加载到内存当中;在虚拟内存和物理内存建立映射关系后,通过虚存技术将不使用的页面放到磁盘中,当发生缺页中断的时候,在访问磁盘。

缺点:

1.磁盘访问频率过高

2.每个程序都会对应一个页表,当程序过大,页表会占据很大的内存

        如:设虚拟内存大小4GB, 每个页面4KB(2^12),需要页面个数:4GB / 4KB = 2^20;如果每个页表项(页表中的每一行)为4B, 页表大小为2^20 * 4B = 4M;当程序存在100个,每个程序占有4M的页表,总页表大小为400M;

3. 多级页表

通过多级页表的方式解决页表内存占据过大的问题

 在传统单表的页号部分继续划分分级页表。如上图,由一级页表中的信息可以映射到全部虚拟内存地址,但是计算内存占用,设每个页面4B, 一级页表:4KB, 二级页表:4KB * 1KB = 4MB

 根据局部性原理, 虽然进程的虚拟内存很大,但是在程序运行过程中,并不会用到所有的虚拟地址,因此不需要全部记录在页表中

假设程序中只有20%的部分运行中使用,因此内存占据:4KB + 20% * 4MB (二级页表) = 0.804MB

4. 块表TLB

引入页表后,加大了磁盘内存的访问次数;为了解决这个问题,参照局部性原理,引入TLB(关联存储器),存放最常用的页表;TLB存放在MMU中

5. 段页式存储

段式存储 + 页式存储

段式存储思想是将物理内存安装程序划分为不同的段(这个段一般大小不固定,针对不同的程序赋予不同的大小,每个段之间相互独立)段式存储中程序员可以清晰知道每个段的意义,存储什么数据,但是在回收的时候会产生内存碎片

结合页式存储思想,将物理内存划分为等大的页框便于内存的管理

 整个地址空间分为:段号 + 段内页号 + 页内偏移

执行流程:1.先访问段表,得到页表的起始地址; 2. 访问页表,得到物理块号 3.计算物理内存中起始 + 页内偏移 计算真正的物理地址

6.总结

1.为了保证多个程序之间内存地址不会发生冲突,引入虚拟地址的概念由OS屏蔽虚拟地址和物理地址之间的映射细节。

2.但是在程序内存过大时,可能导致分配不足,引入虚存技术。将不常用的程序先交换到磁盘中。

3.在系统维护映射关系的过程中,考虑分页分段的思想

分段相对更加针对,程序员知道每段具体分配的信息;而分页将内存划分为等大部分,避免了内存碎片的产生,提高了内存的利用率。

4.分页思想提高了利用率,但是增加了磁盘的访问频率(当发生缺页中断),使用块表; 页表过大,产生多级分表的思想, 两种解决措施的根本来源于局部性原理

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值