OS_03 内存管理

内存管理涉及内存分配、回收和地址转换,包括分页、分段、段页式等管理方式。分页和分段的主要区别在于页面大小固定,而段大小不固定。快表(TLB)用于加速地址转换,多级页表解决页表占用空间大的问题。虚拟地址提供了一种抽象,使得程序可以使用超出物理内存的地址空间。虚拟内存利用局部性原理,将不常用的数据交换到磁盘,确保内存高效利用。页面置换算法如OPT、FIFO、LRU等用于决定何时替换内存中的页面。
摘要由CSDN通过智能技术生成

内存管理

内存分配、内存回收、地址转换、内存保护

内存管理机制

分块管理:把内存分为大小相等且固定的几个块,每个进程占用一个块。
分页管理:把内存分为若干相同大小的页面,通过页表对应页的逻辑地址和物理地址。
分段管理:把内存分为大小不等的有逻辑意义的段,比如代码段、局部变量段,通过段表对应段的逻辑地址和物理地址。
段页式管理:先把主存分为若干个段,再把段分为若干个页,先通过段表找对应的页表,再通过页表找对应的逻辑地址和物理地址。

分段分页异同

相同点:都是离散式存储,提高内存利用率。
不同点:分页页面大小固定,由操作系统分页。分段段大小不固定,由应用程序分段。段具有逻辑意义。

快表(TLB)

处理器引入MMU(内存管理单元)后,读取指令、数据需要访问两次内存:首先通过查询页表得到物理地址,然后访问该物理地址读取指令、数据。为了减少因为MMU导致的处理器性能下降,引入了TLB。
快表可以认为是一个 Cache,内容是页表的一部分或者全部内容。
根据局部性原理,被访问后的内存块儿很可能在短时间内再次被访问,可能程序在一段时间内会多次访问同一个页表项。

多级页表

解决了页表在内存中占用空间太大的问题的。

虚拟地址

如果没有虚拟地址,用户可以直接访问底层物理地址,很容易破坏操作系统。
运行个程序时,可能会对同一块地址进行操作。
通过虚拟地址,程序可以使用离散的物理地址表示相邻的虚拟地址。
通过虚拟地址,程序可以访问大于内存物理地址空间大小的虚拟地址。

虚拟内存

传统内存管理会一次性将进程所需的资源全部装载到内存中,浪费内存资源。
基于局部性原理,把很快就会用到的部分放入内存中,暂时用不到的部分留在磁盘上。在程序执行的过程中,当信息不在内存时,再从外存把信息加载到内存里。当内存不够的时候,根据一些策略把用不到的内存换出到外存中,从而腾出空间给要调入内存的信息。而在 os 的管理下,让应用程序认为自己拥有一连续可用的内存,产生独享主存的错觉,这就是虚拟内存。

虚拟内存的实现

请求分页式存储管理
请求分段式存储管理
请求段页式存储管理

页面置换算法

OPT 最佳页面置换算法:不可实现,不可预测哪个是不用的。
FIFO 先到先出算法:把在内存中停留时间最长的页面置换出去
LRU 最近最久未使用算法:LRU 算法赋予每一个页面一个访问字段,来记录一个页面最近一次访问到现在所经历的时间 T,需要淘汰一个页面时,把最久没有使用的页面淘汰掉就可以了。
LFU 最少使用算法:把使用最少的页面淘汰掉。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值