Linux
RaKiRaKiRa
Shoot low, Aim high!
展开
-
Linux内核:内存管理(2)——内存管理
内核把物理页(4kb)作为内存管理的基本单位。每个页放置在页框中,内核记录页框的状态信息保存在page页描述符中,page放置在mem_map数组中。每个page长度为32字节,故mem_map占RAM不到1%(32/4k = 1/128).由于有些页位于内存中特定的物理地址上,不能进行一些特定的任务(DMA只能对前16MB寻址,32位计算机只能访问部分内存等)。内核将特定性质的页划分成区(zo...原创 2019-07-24 19:42:51 · 347 阅读 · 0 评论 -
Linux内核:内存管理(1)——内存寻址
内存控制单元(MMU)由分段单元和分页单元组成。分段单元:将逻辑地址转换成一个线性(虚拟)地址,给一个进程分配不同的线性地址空间。分页单元:将线性(虚拟)地址转化成一个物理地址,把同一线性地址空间映射到不同的物理空间。其中,逻辑地址由一个段和偏移量组成;线性地址是一个uint32_t,可以表达4G的地址;物理地址用于内存寻址。1分段单元:逻辑地址—>线性地址给一个进程分配不同...原创 2019-07-22 17:29:22 · 427 阅读 · 0 评论 -
malloc的底层实现(ptmalloc)
前言本文主要介绍了ptmalloc对于内存分配的管理。结合网上的一些文章和个人的理解,对ptmalloc的实现原理做一些总结。内存布局介绍ptmalloc之前,我们先了解一下内存布局,以x86的32位系统为例:从上图可以看到,栈至顶向下扩展,堆至底向上扩展, mmap 映射区域至顶向下扩展。 mmap 映射区域和堆相对扩展,直至耗尽虚拟地址空间中的剩余区域,这种结构便于 C 运行时库使用...原创 2019-09-26 23:11:11 · 805 阅读 · 1 评论