freebsd查看内存:FreeBSD中的物理内存管理

  物理内存通过结构体vm_page_t以页为基础进行管理物理内存页由它们各自对应结构体vm_page_t所代表这些结构体存放在若干个页管理队列中个里面 页可以处于穿线(wired)、活动(active)去活(inactive)、缓存Cache(cache)、自由(free)状态 除了穿线状态般被放置在个双向链表队列里代表了它所处状态穿线页不放置在任何队列里

  FreeBSD为缓存Cache页和自由页实现了个更为复杂页队列机制以实现对页分类管理种状态都对应着多个队列队列安排对应着处理器级、 2级缓存Cache当需要分配个新页时 FreeBSD会试图把个按级、 2级缓存Cache对齐页面分配给虚拟内存对象 此外个页可以有个引用计数可以被个忙计数锁定虚拟内存系统也实现了“终极锁定”(ultimate locked)状态个页可以用页标志PG_BUSY表示这状态 总的每个页队列都按照LRU(Least-Recently Used)原则工作

  短语Least-Recently Used有两种理解方式: 1.将“least-recently”理解为反向比较级意义为“最早”整个短语理解为 “最近使用时间最早”;2.将“least”和“recently”理解为副词都修饰“used”整个短语理解为“最近最少使用” 这两种理解方式实际意义基本相同

  个页常常最初处于穿线或活动状态穿线时页常常关联于某处页表虚拟内存系统通过扫描在个较活跃页队列(LRU)确定页年龄以便将他们移到个较不活跃页队列中移动到缓存Cache中页依然和个VM对象关联但被作为立即再用候选在自由对列中页是真正未被使用FreeBSD尽量不将页放在自由队列中但是必须保持定数量自由页以便响应中断时分配 如果个进程试图访问个不在页表中而在某队列中页 (例如去活队列或缓存Cache队列)个相对耗费资源少发生导致页被重激活如果页根本不存在于系统内存的中进程必须被阻塞此时页被从磁盘中载入

  Intel等厂商CPU工作在保护模式时可用来实现虚拟内存当寻址地址空间对应着真实内存时则正常读写;当寻址地址空间没有对应真实内存时CPU会产生个“通知操作系统和磁盘等设备进行交换读寻址则调入存储内容写寻址则写出存储内容这个“” 并非操作系统或应用开发人员犯下尽管在CPU硬件实现中这和应用或操作系统内核崩溃发生机制相同参见IntelCPU保护模式开发手册

  FreeBSD动态调整页队列试图将各个队列中页数维护在个适当比例上同时管理崩溃已清理和未清理页重新平衡比例数值决定于系统内存负担这种重新平衡由pageout守护进程实现包括清理未清理页(和他们后备存储同步)、监视页被引用活跃程度 (重置它们在LRU队列中位置或在区别活跃程度页队列间移动)、当比例不平衡时在队列间迁移页如此等等 FreeBSDVM系统会将重激活页而产生频率调低到个合理数值由此确定某页活跃/闲置实际程度 这可以为更好决定何时清理/分配个页做出决策

Tags:  可用物理内存 什么是物理内存 物理内存 freebsd查看内存

延伸阅读

最新评论

发表评论