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

基于80x86的Linux的分段和分页机制

1 基于80x86的Linux分段机制
80386的两种工作模式:80386的工作模式包括实地址模式和虚地址模式(保护模式)。Linux主要工作在保护模式下。
在保护模式下,80386虚地址空间可达16K个段,每段大小可变,最大达4GB。逻辑地址到线性地址的转换由80386分段机制管理。段寄存器CS、DS、ES、SS、FS或GS各标识一个段。这些段寄存器作为段选择器,用来选择该段的描述符。
分段逻辑地址到线性地址转换图:

Linux对80386的分段机制使用得很有限,因为Linux的设计目标是支持绝大多数主流的CPU,而很多CPU使用的是RISC体系结构,并没有分段机制,所以2.6版内核只有在80x86结构下才使用分段,而且只是象征性地使用了一下:
所有Linux进程仅仅使用四种段来对指令和数据寻址。运行在用户态的进程使用所谓的用户代码段和用户数据段。类似地,运行在内核态的所有Linux进程都使用一对相同的段对指令和数据寻址:它们分别叫做内核代码段和内核数据段。下表显示了这四个重要段的段描述符字段的值:


Base

G

Limit

S

Type

DPL

D/B

P

用户代码段

0x00000000

1

0xfffff

1

10

3

1

1

用户数据段

0x00000000

1

0xfffff

1

2

3

1

1

内核代码段

0x00000000

1

0xfffff

1

10

0

1

1

内核数据段

0x00000000

1

0xfffff

1

2

0

1

1

相应的段描述符由宏__USER_CS,__USER_DS,__KERNEL_CS,和__KERNEL_DS分别定义。例如,为了对内核代码段寻址,内核只需要把这个宏产生的值装进cs段寄存器即可。
注意,与段相关的线性地址从0开始,达到232
-1的寻址限长。这就意味着在用户态或内核态下的所有进程可以使用相同的逻辑地址。所有段都从0x00000000开始,这可以得出另一个重要结论,那就是在Linux下逻辑地址与线性地址是一致的,即逻辑地址的偏移量字段的值与相应的线性地址的值总是一致的。
如前所述,CPU的当前特权级(CPL)反映了进程是在用户态还是内核态,并由存放在cs寄存器中的段选择符的RPL字段指定。只要当前特权级被改变,一些段寄存器必须相应地更新。例如,当CPL=3时(用户态),ds寄存器必须含有用户数据段的段选择符,而当CPL=0时,ds寄存器必须含有内核数据段的段选择符。
类似的情况也出现在ss寄存器中。当CPL为3时,它必须指向一个用户数据段中的用户栈,而当CPL为0时


相关文档:

Linux top 命令 详解

 
top命令用来显示系统当前的进程和其它状况;它是一个动态显示过程,即用户可通过按键来不断的刷新当前的状态,如果在前台执行命令他会独占前台。直到用户终止该程序为止。比较准确的说,top命令提供了实时对系统处理器的状态监视。它将显示CPU最敏感的任务列表。该命令可以按CPU使用,内粗使用,和执行时间对任务进 ......

VIM+GDB linux c/c++ 的编程利器

 VIM+GDB linux c/c++ 的编程利器
http://blog.csdn.net/jackyvan/archive/2010/01/15/5193693.aspx
其实VIM也能把编译 调试集成在一起,像是一个IDE一样。
首先现在VIM的源码,因为要集成调试环境的话需要重新编译VIM才行,所以我们不如重新安装一个。
VIM的现在地址:
http://www.vim.org/sources.php
然后下 ......

一些高效的Linux命令行操作


1.
查找Java
项目中,main
方法定义在哪个文件
里.
  切换到你要查找项目的目录下执行
  grep -rlI '\
  如果你觉得自己打字快,不怕麻烦执行如下命令也可以找到该文件
  find -type f -name *.java -exec grep -l '\
2
快速的建立一个文件,并输入一些内容
  cat >> filename
,输入一 ......

linux 下oracle 的安装(服务端和instant client)

linux 下安装oracle 是一件很令人头疼的事情,我把自己的安装步骤拿出来给大家分享一下。
一.linux服务端的安装.
1.下载oracle服务端软件,下载网址如下
http://www.oracle.com/technology/software/products/database/index.html
我选择的版本是:Oracle Database 10g Release 2 (10.2.0.1.0) for Linux x86-64
  ......

linux 根据端口号查找对应进程的ID,操作进程

已经某个端口号被占用,如何根据端口号得到占用它的进程的ID呢
用lsof
,lsof在ubuntu下的安装命令为apt-get install lsof
若已知端口号为15000,则对应查找命令为lsof -i | grep 15000
本机显示结果为:
host    3386
trinea    4u  IPv4  16907    & ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号