![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
memory
文章平均质量分 88
ctthuangcheng
这个作者很懒,什么都没留下…
展开
-
虚拟地址_物理地址_逻辑地址_页表_内存映射
1. 虚拟地址和物理地址:虚拟地址关系到进程的用户空间和内核空间,而物理地址则用来寻址实际可用的内存。linux用页表来为物理地址分配虚拟地址。进程的虚拟地址空间,都被内核划分为很多等长的部分,这样的部分成为页。物理内存也划分为同样大小的页。2. 页表页表是一种数据结构,用来将虚拟地址空间映射到物理地址空间。实现两个地址空间关联最容易的方法是使用数组,对虚拟地址空间的每一页转载 2013-01-28 22:02:05 · 6825 阅读 · 0 评论 -
高端内存的映射 -- 永久映射和临时映射
高端内存(Highmem)中的页不能永久地映射到内核地址空间,因此,通过alloc_pages()函数,以__GFP_HIGHMEM标志分配的页不可能有虚拟地址。X86体系结构中,高于896MB的所有物理内存都是高端内存,这些物理内存页不会永久的或自动的映射到内核地址空间。这些页需要被分配之后,才会映射到内核的虚拟地址空间上。X86体系结构中,高端内存中的页,通常被映射到3G-4G虚拟地址转载 2013-01-28 22:09:35 · 2415 阅读 · 0 评论 -
内核空间_用户空间_特权级别
1. linux将虚拟地址空间划分为两部分,内核空间和用户空间。一般32位处理器,虚拟内存大小= 2的32次方 B = 4GB.现在的64位处理器可以支持 虚拟内存 = 2的64次方 B = 16GB.用户空间地址范围 0 --- TASK_SIZE.内核空间地址范围 TASK_SIZE --- 4GB/16GB。一般32位处理器 TASK_SIZE = 3G,这个比较常见。转载 2013-01-28 22:00:13 · 1602 阅读 · 1 评论 -
linux内存屏障浅析
内存屏障是一个很神奇的东西,之前翻译了linux内核文档memory-barriers.txt,对内存屏障有了一定有理解。现在用自己的方式来整理一下。在我看来,内存屏障主要解决了两个问题:单处理器下的乱序问题和多处理器下的内存同步问题。为什么会乱序现在的CPU一般采用流水线来执行指令。一个指令的执行被分成:取指、译码、访存、执行、写回、等若干个阶段。然后,多条指令可以同时存在于流水原创 2013-05-12 01:24:20 · 2380 阅读 · 0 评论 -
linux内核mem_cgroup浅析
memory cgroupmem_cgroup是cgroup体系中提供的用于memory隔离的功能。admin可以创建若干个mem_cgroup,形成一个树型结构。可以将进程加入到这些mem_cgroup中。(类似这样的管理功能都是由cgroup框架自带的。)为了实现memory隔离,每个mem_cgroup主要有两个维度的限制:1、res - 物理内存2、mems原创 2013-05-12 01:20:48 · 4061 阅读 · 0 评论 -
linux memory lock浅析
linux内核提供了用于锁定内存的系统调用,如:mlock:lock一段地址范围内已map的内存mlockall:lock进程虚拟地址空间内已map的内存,还可以选择对于此后新map的空间是否自动lockmmap+MAP_LOCKED选项:在mmap的同时,对相应地址范围进行mlock利用这些系统调用,用户进程可以对自己需要使用的内存进行lock。loc原创 2013-05-12 01:06:01 · 5852 阅读 · 0 评论 -
linux slub分配器浅析
在《linux内存管理浅析》中提到内核管理自己使用的内存时,使用了SLAB对象池。SLAB确实是比较复杂,所以一直以来都没有深入看一看。不过现在,linux内核中,SLAB已经被它的简化版--SLUB所代替。最近抽时间看了一下SLUB的代码,略记一些自己的理解。尽管SLUB是在内核里面实现的,用户态的对象池其实也可以借鉴这样的做法。SLUB的总体思想还是跟SLAB类似,对象池里面的原创 2013-05-11 19:49:05 · 2804 阅读 · 0 评论 -
LINUX内核内存屏障
================= LINUX内核内存屏障 =================By: David Howells Paul E. McKenney 译: kouu 出处: Linux内核文档 -- Documentati翻译 2013-05-12 01:28:37 · 1928 阅读 · 0 评论 -
linux内存管理概述
linux内存管理建立在基本的分页机制基础上,在linux内核中RAM的某些部分将会永久的分配给内核,并用来存放内核代码以及静态内核数据结构。RAM的其余部分称为动态内存,这不仅是进程所需的宝贵资源,也是内核本身所需的宝贵资源。实际上,整个系统的性能取决于如何有效地管理动态内存。因此,现在所有多任务操作系统都在经历优化对动态内存的使用,也就是说,尽可能做到当要时分配,不需要时释放。内存管理是o转载 2013-05-14 16:15:34 · 1579 阅读 · 0 评论