内存管理
林 文
《码农修行:编写优雅代码的32条法则》作者
展开
-
Linux 3.x 内核学习笔记——x86 64位内存管理
地址映射64位地址采用4层地址映射,如下图:pgd、pud、pmd、pte各占了9位,加上12位的页内index,共用了48位。即可管理的地址空间为2^48=256T。而在32位地址模式时,该值仅为2^32=4G。另外64位地址时支持的物理内存最大为64T,见e820.c中MAX_ARCH_PFN的定义:# define MAX_ARCH_PFN MAXMEM>>PAGE_原创 2013-10-09 18:17:30 · 10828 阅读 · 0 评论 -
Linux 3.x 内核学习笔记——页面的周转
页面周转本文以Linux-3.11.0为例。内核中所有物理内存都有其对应的page结构,这些page在整个系统的运行中,会处于下图的5个状态中。Freeze Page:并非所有内存都可以用于分配,有些内存被内核所保留使用,例如:内核映像本身所处的内存空间、一些硬件要求需要保留的地址区间、内核中一些固有的数据结构(如page结构本身)等。系统在初始化阶段将这些内存所对应的地址标识为r原创 2013-10-21 13:31:14 · 2734 阅读 · 1 评论 -
避免堆栈溢出
案例最近在做一个Windows程序,其中有个消息处理函数,大概是这样的:BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx) ON_MESSAGE(WM_MY_MESSAGE, &CMainFrame::OnMyMessage)END_MESSAGE_MAP()LRESULT CMainFrame::OnMyMessage(WPARAM wp, LPA原创 2017-05-11 16:11:14 · 2528 阅读 · 0 评论