ChinaUnix.net
相关文章推荐:

内存管理 地址映射

地址映射机制,主要完成主存.辅存和虚存之间的关联 。包括磁盘文件到虚存的映射和虚存与内存的映射关系。为了虚拟存储和进程调度相一致。linux 采用可一系列的数据结构,和一个硬件缓存(tlb)来实现地址映射机制。 mm_strut 用来描述进程的缓存。 struct mm_struct { struct vm_area_struct * mmap; /* list of vmas */ struct vm_area_struct * mmap_avl; /* tree of vmas */ struct vm_area_struct * mmap_cache; /* last ...

by Echo CHEN - Linux文档专区 - 2007-04-17 09:22:13 阅读(778) 回复(0)

相关讨论

目前刚开始看LINUX内存管理部分的源代码,有个疑问请各位释疑.我看代码中通过宏PGDIR_SHIFT定义了PGD下标位段的起始位置,为22.请问这个位置是和MMU的硬件相关吗?是否I386系列的MMU就是将第22位起的位段作为PGD下标的?我现在对MMU进行地址映射的过程还很模糊,谁有相关资料帮忙提供一下,感谢各位.

by dengcainiao - 内核/嵌入技术 - 2005-10-31 12:45:58 阅读(676) 回复(1)

目前刚开始看LINUX内存管理部分的源代码,有个疑问请各位释疑.我看代码中通过宏PGDIR_SHIFT定义了PGD下标位段的起始位置,为22.请问这个位置是和MMU的硬件相关吗?是否I386系列的MMU就是将第22位起的位段作为PGD下标的?我现在对MMU进行地址映射的过程还很模糊,谁有相关资料帮忙提供一下,感谢各位.

by dengcainiao - 内核源码 - 2005-10-31 12:45:58 阅读(1383) 回复(1)

linux线性地址=逻辑地址,如果两个逻辑地址中的偏移量相同,那么他们的线性地址也相同,这两个相同的线性地址如何映射为不同的物理地址

by 20040925 - 内核源码 - 2010-05-21 22:50:20 阅读(1802) 回复(1)

高端内存是指物理地址大于 896M 的内存。 对于这样的内存,无法在“内核直接映射空间”进行映射。 为什么? 因为“内核直接映射空间”最多只能从 3G 到 4G,只能直接映射 1G 物理内存,对于大于 1G 的物理内存,无能为力。 实际上,“内核直接映射空间”也达不到 1G, 还得留点线性空间给“内核动态映射空间” 呢。 因此,Linux 规定“内核直接映射空间” 最多映射 896M 物理内存。 对 于高端内存,可以通过 alloc_page() 或者其它...

by kchunhui - Linux文档专区 - 2009-11-22 18:17:50 阅读(683) 回复(0)

一:引子 我们在前面分析过,在linux内存管理中,内核使用3G—>4G的地址空间,总共1G的大小。而且有一部份用来做非连续空间的物理映射(vmalloc).除掉这部份空间之外,只留下896M大小供内核映射到物理地址。通常,我们把物理地址超过896M的区域称为高端内存。内核怎样去管理高端内存呢?今天就来分析这个问题。 内核有三种方式管理高端内存。第一种是非连续映射。这我们在前面的vmalloc中已经分析过了,在vmalloc中请求页面的时候...

by thewayma - Linux文档专区 - 2009-10-15 22:39:38 阅读(785) 回复(0)

内存映射和DMA——Linux 的内存管理 地址类型: 用户虚拟地址:这是用户空间程序能看到的常规地址。 物理地址: 该地址在处理器和系统内存之间使用 总线地址:该地址在外设总线和内存之间使用 内核逻辑地址:组 成了内核的常规地址空间。该地至映射了部分内存,并经常被视为物理地址,在大多数体系结构中,逻辑地址与相关的物理地址的不同,仅仅在于它们之间相差一个 固定的偏移量。逻辑地址通常保存在UNSIGNED LONG ,和void*这样...

by vdigital - Linux文档专区 - 2009-06-08 20:24:13 阅读(1347) 回复(0)

Linux内存管理之高端内存映射(转贴) 来源: ChinaUnix博客  日期: 2008.09.17 18:28 (共有0条评论) 我要评论 ------------------------------------------ 本文系本站原创,欢迎转载! 转载请注明出处:http://ericxiao.cublog.cn/ ------------------------------------------ 一:引子 我们在前面分析过,在linux内存管理中,内核使用3G—>4G的地址空间,总共1G的大小。而且有一部份用来做非连续空间的物理映射(vmalloc)....

by vector_leizi - Linux文档专区 - 2009-05-12 16:17:53 阅读(628) 回复(0)

------------------------------------------ 本文系本站原创,欢迎转载! 转载请注明出处:http://ericxiao.cublog.cn/ ------------------------------------------ 一:引子 我们在前面分析过,在linux内存管理中,内核使用3G—>4G的地址空间,总共1G的大小。而且有一部份用来做非连续空间的物理映射(vmalloc).除掉这部份空间之外,只留下896M大小供内核映射到物理地址。通常,我们把物理地址超过896M的区域称为高端内存。内核...

by gxy_0202 - Linux文档专区 - 2008-09-17 18:28:28 阅读(1078) 回复(0)

高端内存是指物理地址大于 896M 的内存。 对于这样的内存,无法在“内核直接映射空间”进行映射。 为什么? 因为“内核直接映射空间”最多只能从 3G 到 4G,只能直接映射 1G 物理内存,对于大于 1G 的物理内存,无能为力。 实际上,“内核直接映射空间”也达不到 1G, 还得留点线性空间给“内核动态映射空间” 呢。 因此,Linux 规定“内核直接映射空间” 最多映射 896M 物理内存。 对于高端内存,可以通过 alloc_page() 或者其它函...

by smsong_cu - Linux文档专区 - 2008-09-03 10:20:32 阅读(650) 回复(0)

分析完linux内存管理的基本概念与实现之后,就可以接着分析用户空间与内核空间的交互操作了。Brk系统调用属于那种常用但是“可见度”不高的操作,常用于用户空间堆的管理(请参阅本站的中的malloc机制分析>>一文)。 Brk在用户空间的接口为int brk(void *end_data_segment)。它通过系统调用进入内核空间。在内核的相应接口为sys_brk(). 闲言少叙,言归正传。转入相应的代码。同以往一样,linux内核代码版本为2.6.21 //sys_brk:用...

by Tom_Chou - Linux文档专区 - 2008-06-07 12:47:59 阅读(938) 回复(0)