linux内核内存管理(转)
qq418674358
热爱嵌入式开发,热爱编程,喜欢对自己的学习过程进行总结,并乐于分享
展开
-
第4节 地址映射机制
6. 4 地址映射机制 图6.13存储介质间的映射关系顾名思义地址映射就是建立几种存储媒介(内存,辅存,虚存)间的关联,完成地址间的相互转换,它既包括磁盘文件到虚拟内存的映射,也包括虚拟内存到物理内存的映射,如图6.13所示。本节主要讨论磁盘文件到虚拟内存的映射,虚拟内存到物理内存的映射实际上是请页机制完成的(请看下节)。 6.4.1 描转载 2013-06-02 14:41:40 · 1424 阅读 · 0 评论 -
第3节 内存的分配和回收
6.3 内存的分配和回收 在内存初始化完成以后,内存中就常驻有内核映象(内核代码和数据)。以后,随着用户程序的执行和结束,就需要不断地分配和释放物理页面。内核应该为分配一组连续的页面而建立一种稳定、高效的分配策略。为此,必须解决一个比较重要的内存管理问题,即外碎片问题。频繁地请求和释放不同大小的一组连续页面,必然导致在已分配的内存块中分散许多小块的空闲页面。由此带来的问题是,即使这些转载 2013-06-02 14:43:10 · 1153 阅读 · 0 评论 -
第2节 Linux内存管理的初始化
6.2.1 启用分页机制 当Linux启动时,首先运行在实模式下,随后就要转到保护模式下运行。因为在第二章段机制中,我们已经介绍了Linux对段的设置,在此我们主要讨论与分页机制相关的问题。Linux内核代码的入口点就是/arch/i386/kernel/head.S中的startup_32。 1.页表的初步初始化: /* * The page tables a转载 2013-06-02 14:44:30 · 1413 阅读 · 0 评论 -
第1节 Linux的内存管理概述
6.1 Linux的内存管理概述 Linux是为多用户多任务设计的操作系统, 所以存储资源要被多个进程有效共享;且由于程序规模的不断膨胀,要求的内存空间比从前大得多。 Linux内存管理的设计充分利用了计算机系统所提供的虚拟存储技术,真正实现了虚拟存储器管理。第二章介绍的Intel386的段机制和页机制是 Linux实现虚拟存储管理的一种硬件平台。实际上, Linux2.0以上转载 2013-06-02 14:48:40 · 1122 阅读 · 0 评论 -
第5节 请页机制
6.5.1 页故障的产生 页故障的产生有三种原因: (1) 一是程序出现错误,例如向随机物理内存中写入数据,或页错误发生在TASK_SIZE(3G)的范围外,这些情况下,虚拟地址无效, Linux 将向进程发送 SIGSEGV 信号并终止进程的运行; (2) 另一种情况是,虚拟地址有效,但其所对应的页当前不在物理内存中,即缺页错误,这时,操作系统必须从磁盘转载 2013-06-02 14:51:48 · 1085 阅读 · 0 评论 -
第6节 交换机制
6.6.1 交换的基本原理 如前所述,每个进程的可以使用的虚存空间很大(3GB),但实际使用的空间并不大,一般不会超过几MB,大多数情况下只有几十K或几百K。可是,当系统的进程数达到几百甚至上千个时,对存储空间的总需求就很大,在这种情况下,一般的物理内存量就很难满足要求。因此,在计算机技术的发展史上很早就有了把内存的内容与一个专用的磁盘空间交换的技术,在Linux中,我们把用作交换的转载 2013-06-02 14:52:34 · 1222 阅读 · 0 评论 -
第7节 缓存和刷新机制
6.7.1 Linux使用的缓存 不管在硬件设计还是软件设计中,高速缓存是获得高性能的常用手段。Linux 使用了多种和内存管理相关的高速缓存。 1. 缓冲区高速缓存: 缓冲区高速缓存中包含了由块设备使用的数据缓冲区。这些缓冲区中包含了从设备中读取的数据块或写入设备的数据块。缓冲区高速缓存由设备标识号和块标号索引,因此可以快速找出数据块。如果数据能够在缓冲区转载 2013-06-02 14:53:13 · 1361 阅读 · 0 评论 -
第8节 进程的创建和执行
6.8.1 进程的创建 新的进程通过克隆旧的程序(当前进程)而建立。fork() 和 clone()(对于线程)系统调用可用来建立新的进程。这两个系统调用结束时,内核在系统的物理内存中为新的进程分配新的 task_struct 结构,同时为新进程要使用的堆栈分配物理页。Linux 还会为新的进程分配新的进程标识符。然后,新 task_struct 结构的地址保存在链表中,而旧进程的转载 2013-06-02 14:53:44 · 1287 阅读 · 0 评论