- 博客(8)
- 资源 (53)
- 收藏
- 关注
原创 linux 中断相关的几个问题
intel 提供了三种类型的中断描述符:任务门,中断门,陷阱门。linux稍有不同,根据intel的定义,实现了一下几类门。1 中断门用户态的进程不能访问的一个intel中断门,DPL = 0。2 系统门用户态的进程可以访问的一个intel陷阱门,DPL = 3, 通过系统门可以激活linux下的三个异常:4,5,128(即0x80)。3 系统中断门用户态的进程可以访问的一个intel中断门,DPL = 3,中断异常就属于系统中断门,int 0x03。4 陷阱门用户态的进程不能够访问的intel陷阱门,DP
2010-08-29 14:17:00 2132
原创 slub 分析
<br /> 从linux-2.6.23开内,SLUB取代了SLAB作为默认的内存分配机制,那么,SLUB究竟有哪些有点呢?一 SLAB被SLUB替代的原因 SLAB 分配器多年以来一直位于 Linux 内核的内存管理部分的核心地带,内核黑客们一般不愿意主动去更改它的代码,因为它实在是非常复杂,而且在大多数情况下,它的工作完成的相当不错。但是,随着大规模多处理器系统和 NUMA系统的广泛应用,SLAB 分配器逐渐暴露出自身的严重不足:较多复杂的队列管理。在 SLAB 分配器中存在众多的队列,例如针对处
2010-08-26 21:52:00 2032
原创 linux 内存管理之bootmem allocator
bootmem allocator是在页表和buddy算法可用之前的一个简单的内存管理机制,是linux内核早期启动过程中的一个过程,也是其他内存管理算法的祖先,其实现方法比较简单,我们只需了解其主要功能和工作原理即可,感觉不必深究。问题一: bootmem allocator管理的内存范围pfn=0 到 pfn=max_low_pfn, 即低端常规内存,通常指小于896M的内存。问题二:bootmem allocator 工作原理采用简单的映射关系:每 1 bit对应物理内存的一个pa
2010-08-22 15:52:00 2314
原创 linux 启动过程临时页表到底映射了多大内存?
从linux-2.4内核开始,在建立临时页表的时候,一般的教科书都说是映射了8M的物理内存,但是为什么是映射8M呢?当时网上有资料说,8M足够了,但为什么就足够了,一直没有彻底搞清楚,今天又重新分析这部分的代码(linux-2.6.24)。 先看下面内存布局图:在建立临时页表时到底映射多大的内存取决于以下几个方面:(1)保护模式下内核的尺寸: 毫无疑问内核代码必须被映射(2)临时页表所占的空间尺寸: 假设临时页表映射整个4G的线性地址空间,那么: 页面个数 = 4G/4k = 1M个页面 每个页面对应一个页
2010-08-12 22:43:00 2294 1
转载 Linux Kernel Shared Memory 剖析
<br />看到这篇文章的时候,感觉只有两个字:郁闷。还在Linux-2.6.29的时候,就看是看Linux kernel virtual machine,那时候就感觉多个VM肯定有很多的内存是共享的,完全可以合并,没想到Linux的发展是这么的快,linux-2.6.32就正式的支持了ksm机制,实现了共享内存的合并,而且还是专门针对虚拟机的,真是让我抓狂,都是可恶的项目,全是在浪费时间。下面转载ksm相关的一篇文章,学习之余做个记录,已备毕业设计只需。<br /> <br />简介: 作为一个系统管理程
2010-08-04 22:19:00 3255
原创 x86 几个特权级别(CPL,RPL,DPL)
<br />在阅读linux内核的时候,在linux内核的权限保护机制部分,经常会讨论几个特权级别:CPL,RPL,DPL。下面简单讲一下我自己的理解。背景知识:<br />1 x86体系结构的几个段寄存器:cs,ds,es,ss.fs.gs它们无论在实模式下还是保护模式下,都是16位的寄存器,只是功能不而已。实模式下: 用做段寄存器,用来将逻辑地址转换到线性地址保护模式下:段选择子,用来作为索引在GDT表或LDT表等中选择段描述符。主要内容:1 段选择子基本结构: index TI
2010-08-04 18:59:00 3988
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人