摘要:
在Linux系统中比页更小的内存对象要怎么分配呢? -- SLAB,学习下SLAB分配器的原理和实现 SLAB 与Cosmos物理页面管理器一样,Linux中的伙伴系统是以页面为最小单位分配到,现实更多要以内核对象为单位分配内存,其实更具体一点说,就是根据内核对象的实例变量大小来申请和释放内存空间, 阅读全文
摘要:
在Linux系统中,用来管理物理内存页面的伙伴系统,以及负责分配比页更小的内存对象的SLAB分配器 本节先讲解Linux是如何管理内存页面的,何为伙伴系统 ###伙伴系统 伙伴系统源于 Sun 公司的 Solaris 操作系统,是 Solaris 操作系统上极为优秀的物理内存页面管理算法。 那 Li 阅读全文
摘要:
上节课,已经建立了虚拟内存的开始流程,本节将来实现虚拟内存的核心功能:写出分配、释放虚拟地址空间的代码,最后实现虚拟地址空间到物理地址空间的映射。 ###虚拟地址的空间的分配与释放 整个虚拟地址空间是由一个个虚拟地址区间组成,那分配一个虚拟地址空间就是在整个虚拟地址空间分割出一个区域,而释放一块虚拟 阅读全文
摘要:
一个应用往往拥有很大的连续地址空间,并且每个应用都是一样的,只有在运行时才能分配到真正的物理内存,在操作系统中这称为虚拟内存。 那操作系统要怎样实现虚拟内存呢?这节课,我们先进行虚拟地址空间的划分,搞定虚拟内存数据结构的设计,下节来实现虚拟内存的核心功能。 ###虚拟地址空间的划分 虚拟地址就是逻辑 阅读全文
摘要:
我们建立了物理内存页面管理器,它既可以分配单个页面,也可以分配多个连续的页面,还能指定在特殊内存地址区域中分配页面。 但物理内存页面管理器一次分配至少一个页面,而对内存分页也是一个页面4K,即4096字节,对于小于一个页面的内存分配请求,它无能为力,那如果要实现小于一个页面的内存分配请求,要怎么办呢 阅读全文