易截截图软件、单文件、免安装、纯绿色、仅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 2.6.23时钟中断与调度分析(4)

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

linux基础知识(转)

举例来说,硬盘的文件名称即为 /dev/hd[a-d] ,其中, 括号内的字母为 a-d 当中的任何一个,亦即由 /dev/hda, /dev/hdb, /dev/hdc, 及 /dev/hdd 这四个档案的意思 (注:这种型式的表示法在后面的章节当中会使用得很频繁,请特别留意)。 那么光驱与软盘呢?分别是 /dev/cdrom, /dev/fd0 啰! 好了,其它的接口设备呢? ......

[转]探索 Linux 内核虚拟机

转:http://www.ibm.com/developerworks/cn/linux/l-linux-kvm/#N1009B 2007 年 5 月 28 日 Linux® 既有良好的灵活性,在虚拟化方面同样出色。但是最近,随着内核虚拟机(KVM)的出现,Linux 虚拟化的前景发生了变化。KVM 是构成主流 Linux 内核(V2.6.20)一部分的第一个虚拟化解决方案。KVM 支持 Linux 客户操作系 ......

Linux下ps命令详解


linux上进程有5种状态:
1. 运行(正在运行或在运行队列中等待)
2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
5. 停止(进程收到SIGSTOP, SIGSTP, ......

linux内核启动过程——基于S3C2410

(1)zImage自解压
本文以流行的Samsung公司的S3C2410,mini2440平台和linux-2.6.29为例,介绍如何在ZIX嵌入式开发环境下探索linux内核启动过程。
Linux内核启动一般由外部的bootloader引导,也可以在内核头部嵌入一个loader,实际的应用中这两种方式都会经常遇到。所以要了解内核启动最开始的过程,必须对bootloader如何 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号