linux内存管理
dumb_man
这个作者很懒,什么都没留下…
展开
-
什么是TLB ?
TLB:Translation Lookaside Buffer.根据功能可以译为快表,直译可以翻译为旁路转换缓冲,也可以把它理解成页表缓冲。里面存放的是一些页表文件(虚拟地址到物理地址的转换表)。当处理 器要在主内存寻址时,不是直接在内存的物理地址里查找的,而是通过一组虚拟地址转换到主内存的物理地址,TLB就是负责将虚拟内存地址翻译成实际的物理内 存地址,而CPU寻址时会优先在TLB中进行寻址。原创 2017-11-20 17:48:53 · 24620 阅读 · 0 评论 -
arm linux 内存分布总结
转自:http://blog.csdn.net/xiaojsj111/article/details/11724081上图是linux的arm的虚拟地址分布总览,我们按从低地址到高地址的顺序逐个描述,每项的描述包括如下的内容的组和:地址范围大小,虚拟转物理的接口函数,各个区域对应的分配函数,该区域有什么作用,使用场合等等。首先开始第一个区域:CPUvector page null pointer原创 2017-11-20 17:50:18 · 5017 阅读 · 0 评论 -
linux内存布局及页面映射(x86架构!与arm在某些内存使用上有差异)
在Linux系统中,以32bit x86系统来说,进程的4GB内存空间(虚拟地址空间)被划分成为两个部分------用户空间和内核空间,大小分别为0-3G,3-4G。 用户进程通常情况下,只能访问用户空间的虚拟地址,不能访问到内核空间。 每个进程的用户空间存放用户的程序和代码(堆栈,数据区,代码区等),因为是虚拟地址,所以每个进程的用户空间是完全独立的,互不影响。用户进程原创 2017-11-20 17:50:15 · 2087 阅读 · 1 评论 -
是先访问TLB(MMU)还是先访问Cache
TLB 用于缓存一部分标签页表条目。TLB可介于 CPU 和 CPU缓存之间,或在 CPU 缓存和主存之间,这取决于缓存使用的是物理寻址或是虚拟寻址。如果缓存是虚拟寻址,寻址请求将会直接从 CPU 传送给缓存,然后从缓存访问所需的 TLB 条目。如果缓存使用物理寻址,CPU 会先对每一个存储器操作进行 TLB 查寻,并且将取得的物理地址传送给缓存。两种方法各有优缺点。采用物理寻址的缓存的一种常见优原创 2017-11-20 17:50:06 · 4647 阅读 · 1 评论 -
ARM linux内核启动时几个关键地址
1. 内核启动地址ZTEXTADDR解压代码运行的开始地址。没有物理地址和虚拟地址之分,因为此时MMU处于关闭状态。这个地址不一定时RAM的地址,可以是支持读写寻址的flash等存储中介。Start address of decompressor. here's no point in talking about virtual or physical addresses here,原创 2017-11-20 17:49:53 · 3500 阅读 · 0 评论 -
linux kernel虚拟内存地址耗尽一个实例分析
转自:http://www.cnblogs.com/xmphoenix/p/3627007.html引子现在android智能手机市场异常火热,硬件升级非常迅猛,arm cortex A9 + 1GB DDR似乎已经跟不上主流配置了。虽说硬件是王道,可我们还是不禁还怀疑这么强大的硬件配置得到充分利用了吗?因此以后我都会正对ARM平台分析kernel的内容。 正文在linux内存管理中,有两个资源非原创 2017-11-20 17:49:50 · 1608 阅读 · 0 评论 -
kernel中常规内存映射区物现地址与虚拟地址转换
#ifdef CONFIG_ARM_PATCH_PHYS_VIRT /* * Constants used to force the right instruction encodings and shifts * so that all we need to do is modify the 8-bit const原创 2017-11-20 17:49:13 · 1172 阅读 · 0 评论 -
linux的swapper_pg_dir
linux的启动涉及到一个解压与定位的过程,对于x86体系结构而言,系统被加载到0x100000的地方,那么swapper_pg_dir的值是什么呢?我们知道swapper_pg_dir是一个很重要的东西,它是所有进程内核空间的页表的模板,而且在涉及到896M以上的内存分配时,swapper_pg_dir也是一个同步的根,这些内存分配包括vmalloc区,高端永久区,高端临时区等。这里需要说明的是原创 2017-11-20 17:49:10 · 2768 阅读 · 0 评论 -
arm处理器bank与存储器的bank详解
以s3c2440为例:处理器的bank(也是R-BANK)说明:S3C2440是32位的处理器理论寻址范围为2^32即4G,S3C2440使用[26:0]作为地址线,寻址范围128M(下面的图示讲解为什么[26:0]能寻址128M而不是32M),使用[29:27]作为bank选择信号,所以S3C2440可以连接8个外设,如果全部连接存储器就可以达到1GB的内存。在S3C2440中内存为64MB,它原创 2017-11-20 17:49:07 · 9978 阅读 · 1 评论 -
Cache and Cache Line Fills -- Critical Word First
以下内容来自arm v8官方说明与网络寻踪,个人理解而来:arm采用的是 Harvard architecture,有分离的指令与数据总线,因此有两种cache(指令cache和数据cache);区别于 冯.诺依曼 架构的单一cache (即存指令也存数据,被称为unified cache)。对与Arm v8处理器,L1 cache是指令与数据分离的,L2 cache是unified cache。...翻译 2018-03-15 17:34:48 · 3289 阅读 · 0 评论