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

深入理解linux内核笔记七:内存管理(1)之内存寻址

1 内存地址
       linux中,我们必须区分三种不同的地址
逻辑地址:机器语言指令中用来指定一个操作数和一个指令的地址.在X86中,每一个逻辑地址都由一个段(segment)和偏移量(offset)组成.
线性地址(也称虚拟地址):是一个32位无符号函数,可以表示高达4GB的地址,范围从0x00000000到0xffffffff.
物理地址:用于内存芯片级寻址,它们与从微处理器的地址引脚发送到内存总线上的电信号相对应.
 
逻辑地址转换图
 
2         分段
①     硬件分段
段选择符和段寄存器
一个逻辑地址由一个段标识符和一个段内相对地址的偏移量组成.段标识符是一个16位长的字段,称为段选择符
                                       
Index:指定在GDT或LDT中相应段描述符的入口
TI:指明段描述符在GDT(TI=0)或LDT(TI=1)中
RPL:请求者特权级,当相应段选择符装入到cs寄存器中指示出cpu当前的特权级.
 
X86中提供了6个段寄存器cs ss ds es fs gs,段寄存器的唯一目的就是存放段选择符.
 
段描述符
每一个段描述符由8个字节组成,段描述符放在全局描述符表或局部描述符表中
Base:包含段的首字节的线性地址
G:  粒度标志,0以字节为单位,否则以4096字节为单位
Limit:存放段中最后一个内存单元的偏移量,从而决定段的长度.如果G为0,则一个段的大小在1个字节到1MB之间,否则,在4KB到4GB之间
S:  系统标志,0为系统段,否则普通的代码段或数据段
Type:描述段的类型特征和它的存取权限
DPL: 描述段的特权级.表示访问这个段要求的cpu最小的优先级
P: Segment-Present标志,等于0表示段不在主存中,linux总把这个标志设为1
D或B:称为D或B标志,取决于是代码段还是数据段,如果段偏移量地址是32位,就基本把它设置为1,如果这个偏移量是16位,它被清为0
AVL: 被linux忽略
 
Linux中广泛使用下面三种段描述符
代码段描述符:可以放在GDT或LDT中,该描述符置S为1
数据段描述符:可以放在GDT或LDT中,该描述符置S为1,栈段通过一般的数据段实现
任务状态段描述符:表示一个任务状态段


相关文档:

实战Linux Bluetooth编程(三) HCI层编程

1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI)  就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......

Linux makefile详解

 陈皓 (CSDN)
概述
——
什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在 ......

Linux机器增添一块新网卡

转自本人个人网站【PHP探路者 http://www.phpwell.com

原文地址 http://www.phpwell.com/?p=43
   公司内的一台测试服务器原本只是放在公司内网上使用,现需要将测试环境置于Internet上,
以便于客户即时了解项目进展情况。为Linux系统增添一块网卡的过程记录如下:
步骤一:将一块新 ......

如何改变Linux主机名

How to change the hostname of a Linux system
Normally we will set the hostname of a system during the installation process. Many peoples don’t care about this, and don’t change the hostname even if for example this was set to something really stupid by the datacenter that installed the ......

linux comm 命令介绍

 如果想在Linux命令行方式下,对2个文本文件的内容做比较,找出同时包含在这2个文本文件中的内容,可以使用Linux系统带的工具comm来处理,前提是被比较的2个文本文件要是有序的,可以先用sort处理一下,具体操作方法如下:
原始文件如下:
a.txt
d
c
b
a
b.txt
g
f
b
a
排序处理
sort a.txt > a1.txt ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号