操作系统内存(32位为例)

0、OS能使用最大的虚拟内存和物理内存

最大的虚拟内存与寻址总线有关。一般是40根,对应256T

最大的物理内存与PTE的位数有关。

10-10-12分页模式下是32位,所以最大寻址空间就4G

1、CPU分页模式

分类

还有5-level,一般适用于大型服务器。

特征

10-10-12分页模式最大访问物理内存地址是4G。多个进程访问的话地址会重复去用。

PAE paging分页模式增大了PTE的位数,让寻址空间大于4G,让32位操作系统支持更大的物理内存(最大支持64G)。如下图所示

2、MMU如何工作(101012分页模式)

一个PTEPage Table Entry页表项对应4K物理内存。PTT(Page Table Tree页表树)表里有1024个PTE、PDT(Page Directory Table页目录表)表里有1024个PDE(Page Directory Entry页目录项)

  • 这就是一个程序可以用4G内存的由来:1024*1024*4K=4G

  • 每个进程都有自己的PDT、PTT、页表

3、CPU写内存方式

写通(write-through)和写回(write-back)

4、两种映射方式

错位映射(主流)

一一映射(32位系统1M以下的内存。64位4M以下的内存。原理是PTT表是对应1024*4K = 4M内存)

5、内存结构

虚拟地址

6、虚拟内存管理模块

内存池算法

  1. 空闲列表:空闲列表是一种简单的内存池算法,它维护了一个空闲内存块的列表。当需要分配内存时,从空闲列表中取出一个内存块,并将其状态设置为已分配。当释放内存时,将该内存块的状态设置为空闲,并将其加入到空闲列表中。

  2. 指针碰撞:指针碰撞是一种基于哈希表的内存池算法。它使用哈希函数将内存块的大小作为关键字,将内存块的指针作为值存储在哈希表中。当需要分配内存时,通过哈希函数找到一个空闲的内存块,并将其分配给进程。当释放内存时,将该内存块的指针存储在哈希表中,并将其状态设置为空闲。

  3. 伙伴算法:伙伴算法是一种基于分治思想的内存池算法。它将内存分成大小相同的块,并将这些块组织成一棵二叉树。当需要分配内存时,从二叉树中找到一个合适的叶子节点,并将其分配给进程。当释放内存时,将该内存块的指针存储在二叉树中,并将其状态设置为空闲。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值