![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
内存
文章平均质量分 76
superkiss2
这个作者很懒,什么都没留下…
展开
-
linux 2.6源代码情景分析笔记之内存1
linux简化了分段,在把虚拟空间的4G分成了内核和用户两个部分,每个用户都可以通过系统进入内核。这样从用户的角度看,他拥有整个虚拟内存。也就是用户自身的3G+内核的1G.内核的1G是所有用户共有的,而用户3G则是自己的私有财产,这也保证用户在处理问题的时候数据安全,使得用户与用户之间隔离。(从0xc0000000-0xfffffff的1G此段供内核使用)和用户(0x0000000-0xbffff原创 2009-12-14 16:10:00 · 1219 阅读 · 0 评论 -
linux 2.6源代码情景分析笔记之内存2
linux中的段机制:在linux中,逻辑地址到物理地址,是经过分段单元->分页单元这两个部分的转换来完成的。其中逻辑地址由段标识符和指定段内相对地址的偏移量。前者16位长的字段(段选择符segment selector),后者是32位长的字段。段选择符的构成:15-3(index)指定了放在GDT或者LDT中的相应段描述符的入口2(TL-table indicator)标志:指明原创 2009-12-21 03:49:00 · 1111 阅读 · 0 评论 -
linux 2.6源代码情景分析笔记之内存3
关于e820 e820是BIOS的(int 0x15)中断关联的。在使用此中断时,ax中必须是e820(ireg.ax=0xe820;)。通过此中断可以得到内存的系统布局。通过do循环,每次得到一段。/linux32/arch/x86/include/asm/e820.h宏E820_MAP是struct e820entry数据结构的指针,存放在参数块中位移为0x2d0的地方原创 2009-12-23 03:31:00 · 955 阅读 · 0 评论 -
linux 2.6源代码情景分析笔记之内存4
--------------------------------------------------几个宏:PGDIR_SHIFT:确定页全局目录项能映射的区域大小的对数。此宏用于计算页全局目录中一个单独表项所能映射区域的大小。PGDIR_MASK用于屏蔽offset table,middle air,upper dir.字段的所有位。#define PGDIR_SHIFT 2原创 2009-12-23 03:45:00 · 642 阅读 · 0 评论 -
linux 2.6源代码情景分析笔记之内存5
在内存启动最开始时,bios的起主导作用,内核通过它来了解物理内存的情况。同时调用bios过程建立一组物理地址范围和其对应的内存类型。通过函数machine_specific_memory_setup()函数来建立物理地址映射。此表可以获取,是内核在bios列表的基础上构建的;否则内核按照保守的缺省设置构建这张表:从0x9f(lowmemsize())到0x100(high_memory)号的原创 2009-12-23 04:59:00 · 1488 阅读 · 0 评论 -
linux 2.6源代码情景分析笔记之内存6
当ram小于896mb时的最终内核页表由内核页表所提供的最终映射必须把从0xc0000000开始的线性地址转化为从0开始的物理地址。#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET)将从page_offset开始的线性地址转换成相应的物理地址。#define __va(x) ((void *)((unsigned long)(x原创 2009-12-23 06:47:00 · 1621 阅读 · 0 评论