- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux系统储管理
Linux系统——存储管理
摘要 2
关键字 2
一、Linux内存管理的概述 3
二、重要的数据结构 4
1. kmem_bufctl_t 4
2. kmem_slab_t 5
3. kmem_cache_t 5
4. cache_sizes_t 6
三、宏的说明 6
四、Linux虚存管理的主要实现技术 8
五、参考文献 8
摘 要LINUX2-2-5 进行分析, 主要剖析Linux 操作系统的存储管理机制。给出了Linux 存储管理的特点、虚存的实现方法, 以及主要数据结构之间的关系。
关键Linux ; 内存管理; 数据结构; 宏; 虚存
操作系统管理系统所有的物理空间, 现代大多数操作系统都采取多级管理, 即页面级分配与内核内存分配。就LINUX2-2-5 版本而言,页面级的分配是采用Buddy 算法,而内核内存分配是采用面向对象的Slab分配原则。 该分配原则高效,可以大大提高内存的利用率以及硬件cache级系统总线的利用率。
Linux 虚存管理概述
Linux是为多用户多任务设计的操作系统, 所以存储资源要被多个进程有效共享;且由于程序规模的不断膨胀,要求的内存空间比从前大得多。 Linux内存管理的设计充分利用了计算机系统所提供的虚拟存储技术,真正实现了虚拟存储器管理。 Linux的内存管理主要体现在对虚拟内存的管理。我们可以把Linux虚拟内存管理功能概括为以下几点: ·大地址空间 ·进程保护 ·内存映射 ·公平的物理内存分配 ·共享虚拟内存实现虚拟内存的组成模块。 其实现的原代码大部分放在/mm目录下。
1. 内存映射模块 mmap —负责把磁盘文件的逻辑地址映射到虚拟地址,以及把虚拟地址映射到物理地址。
2.交换模块(swap)—负责控制内存内容的换入和换出,它通过交换机制,使得在物理内存的页面(RAM页)中保留有效的页 ,即从主存中淘汰最近没被访问的页,保存近来访问过的页。
3.核心内存管理模块(core —负责核心内存管理功能,即对页的分配、回收、释放及请页处理等,这些功能将被别的内核子系统(如文件系统)使用。
4. 结构特定的模块—负责给各种硬件平台提供通用接口,这个模块通过执行命令来改变硬件MMU的虚拟地址映射,并在发生页错误时,提供了公用的方法来通知别的内核子系统。这个模块是实现虚拟内存的物理基础。
Linux虚拟内存的实现结构如图所示。
Linux虚存的实现结构
?重要的数据结构
kmem_bufctl_t
说明 : 管理对象的数据类型
/* Bufctls are used for linking objs within a slab, identifying what slab an obj
* is in, and the address of the associated obj for sanity checking with off-slab
* bufctls . What a bufctl contains depends upon the state of the obj and
* the organisation of the cache.
*/
typedef struct kmem_bufctl_s union struct kmem_bufctl_s *buf_nextp; //用于空闲对象 // 保存后继空闲对象 kmem_slab_t *buf_slabp; // 用于活动的不规整对象 // 保存所在slab块的指针 void * buf_objp; //用于活动的规整对象 // 保存该对象的地址 u;
kmem_bufctl_t;
kmem_slab_t
说明 : 用于管理 slab 块的数据类型
typedef struct kmem_slab_s struct kmem_bufctl_s *s_freep; //指向第一个空闲对象
struct kmem_bufctl_s *s_index; // 指向规整对象链表, //对象不规整时, 为NULL
unsigned long s_magic; // 用于判断该slab块是否已被销毁 // 由下面两个宏赋值 // #define SLAB_MAGIC_ALLOC 0xA5C32F2BUL // #define SLAB_MAGIC_DESTROYED 0xB2F23C5AUL
unsigned long s_inuse; // 活动对象的数目
struct kmem_slab_s *s_nextp; // 用于双向链表
struct kmem_slab_s *s_prevp;
void *s_mem; // 该slab块中
您可能关注的文档
- avr单片机引功能1.doc
- Awxlxr208年项目部工作总结.doc
- A匝道桥开工安预案.doc
- a货币银行学本期末复习指导201112.doc
- A普通遗传学试2013.doc
- A高一政治必修第一单元测试题及答案.doc
- B00kI-I词汇复习高一英语.doc
- B4W01采区道探放水设计.doc
- Bauufi期法律法规考试__重点.doc
- Bkfvoun测工程系学生毕业论文或设计要求及论文模板.doc
- 2025重庆广播电视集团(总台)招聘3人历年参考题库及答案解析(夺冠).docx
- 2025福建厦门市集美区双塔小学产假顶岗教师招聘1人备考题库附答案解析.docx
- 2025铜陵市义安区司法局招聘编外聘用人员2人备考题库带答案解析.docx
- 2026浙江大学医学院附属第一医院招聘笔试题库带答案解析(夺冠).docx
- 2025辽宁朝阳建平县面向社会招聘城市社区工作者21人笔试备考题库及答案解析(夺冠).docx
- 2025黑龙江牡丹江医科大学第二次招聘人事代理人员43人笔试题库及答案解析(夺冠).docx
- 2026天津市卫生健康委员会所属天津市第一中心医院招聘63人笔试参考题库(高学历高层次人才)带答案解.docx
- 2025福建省宁德市蕉南街道招聘社区工作者6人笔试题库含答案解析(必刷).docx
- 2025秋冬季广东韶关市曲江区医疗卫生专业技术人员招聘8人历年题库及答案解析(必刷).docx
- 2025重庆涪陵区南沱镇人民政府选聘4人笔试备考题库附答案解析.docx
原创力文档


文档评论(0)