易截截图软件、单文件、免安装、纯绿色、仅160KB

linux 2.6源代码情景分析笔记之内存2

linux中的段机制:
在linux中,逻辑地址到物理地址,是经过分段单元->分页单元这两个部分的转换来完成的。其中逻辑地址由段标识符和指定段内相对地址的偏移量。前者16位长的字段(段选择符segment selector),后者是32位长的字段。
段选择符的构成:
15-3(index)指定了放在GDT或者LDT中的相应段描述符的入口
2(TL-table indicator)标志:指明段描述符是在GDT中(TI=0)或者在LDT中(TI=1)
1-0(RPL)请求者特权级:当相应的段选择符号装入cs寄存器中时,指示出cpu当前的特权级;还可以用于在访问数据段时有选择地削弱处理器的特权级(intel文档)
处理器中有几个段寄存器用来存放段选择符,cs,ss,ds,es,fs,gs.其中cs,ss,ds有专门的用途。
cs:代码段寄存器,指向包含程序指令的段。(其中还含有一个两位的字段,用以指明cpu的当前特权级别(current privilege level,CPL)。当为0的时候,代表最高级优先级别,为3时代表最低优先级别。在linux中前者是内核级别,后者用户级别)
ds:数据段寄存器,指向包含静态数据或者全局数据段。
ss:栈段寄存器,指向包含当前程序栈的段。
而段的表示是由8字节的段描述符(segment descriptor)来完成的,此数据描述了段的特征。段描述符放在全局描述符表(global descriptor table,GDT)或局部描述符表(local descriptor table,LDT)中。
GDT在主存地址和大小存放在gdtr寄存器,当前正被使用的LDT地址和大小放在ldtr控制寄存器中。
其中几个字段:
31-24 23-16 15-0(base 63-56 39-32 31-16):包含段的首字节的线性地址。
G(55):为0时段是以字节为单位,为1时以4096的倍数计。
D/B(54):为D或者为B取决于是代码段还是数据段。D或B的含义在两种情况下有区别。当段偏移量的地址为32位,就设为1,如果偏移量16位长,被清0(intel手册)。
0(53)
AVL(52):被linux忽略
19-16 15-0(limit 51-48 15-0):存放段中最后一个内存单元的偏移量,从而决定段长度。如果段大小是按照字节单位则一个段的大小在1个字节到1mb之间变化;如果以4096字节的倍数计算,则在4kb-4GB之间变化。
p(47):segment-present标志:等于0表示段当前不在主存中。linux总将此设置(47位)为1
DPL(46-45):描述符特权级(descriptor privilege level)字段,用于限制对于这个段的存取。表示为访问这个段要求的cpu最小的优先级别。因此,dpl设为0的段只能当cpl为0时(内核态)才是可访问的,而dpl设为3的段对任


相关文档:

Linux设备模型之input子系统详解

一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......

Linux Cookbook 3

Files And Dirs
1. touch ---create a new, empty file
            vi filename is also ok
2. mkdir ---make directory
            mkdir -p ---to make all directories in the path
3. space in ......

linux 2.6.23时钟中断与调度分析(4)

TIMER_INITIALIZER():
1):TIMER_INITIALIZER()用来声明一个定时器,它的定义如下:
#define TIMER_INITIALIZER(_function, _expires, _data) {         \
                .function = (_fun ......

Linux 内存管理 高端内存的映射方式

解释一:
高端内存是指物理地址大于 896M 的内存。
对于这样的内存,无法在“内核直接映射空间”进行映射。
为什么?
因为“内核直接映射空间”最多只能从 3G 到 4G,只能直接映射 1G 物理内存,对于大于 1G 的物理内存,无能为力。
实际上,“内核直接映射空间”也达不到 1G, 还得留点 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号