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

Linux虚拟内存基础知识

1.从80386开始,Intel处理器的线性32被分为3个域,最高十位为此线性地址在页目录的索引;中间十位为此线性地址在页表中的索引;最低12为物理地址的低12位(也可以说是页内偏移量)。每个进程一定有各自独立的页表(注意:这里说的是进程,而不是线程。在linux里线程其实就是轻量级的进程,他们是连页目录都相同的进程,只是他们的的堆栈在线性空间的位置不同)。
 
2.线性地址(也就是虚拟地址)被分成以固定长度为单位的组,成为页。而分页单元把所有ram分成固定长度的页框(又叫物理页)页框的长度和页的长度一致。注意区分页和页框,页只是一个数据块,可以存放在实际的任何页框中,也就是说,页是内容,页框是容器。
 
3.一个进程的线性地址空间可以分为n多个连续的页,而这些也可以通过mmu和页表去转换为实际的物理地址去访问对应的页框(物理页)。所以一个进程的线性页可以对应任何一个物理页,只要修改页表就可以修改,线性页和物理页的对应关系。
 
4.当mmu开启后,不管是内核还是应用程序在此后的过程中所用的地址都是虚拟地址,都是要通过mmu进行转换才能访问到实际的物理地址。所以不管是内核还是应用程序的对任何内存的访问都要对应一张页表,进行从虚拟地址到物理地址的转换。
 
5.对页表的访问操作同样也用的是虚拟地址,众所周知在fork出一个新进程A 时肯定至少要为这个新线程建立长度为1k*4的一级页表,而内核对这个一级页表进行的任何修改操作同样也是使用虚拟地址进程操作的。同样,如果上面 fork出的线程A如果需要对某个虚拟地址进行读写操作时,这时mmu就会发现在一级页表内找不到这个虚拟地址对应的二级页表,mmu这时会产生一个缺页中断,通知内核,内核这时会申请1k*4+4k的空间。其中1k用于分配给这个虚拟地址空间所对应的二级页表,4k用于给进程的代码或者数据用。
通过以上分析可以总结出,要申请一个4M空间至少要4M+2k*4的物理空间。(呵呵,为什么要加“至少”呢,因为如果要申请的4M的空间落在两个二级页表之中的话,那就必须要两个二级页表了,最极端的情况是,这4M分别在不同的页表中,这时就需要1M*4+1K*4的空间来放页表了。
 
6.内核在启动后,会把896m的以下的RAM全部映射到内核空间,即以 0xC0000000为基地址的位置。这时内核对虚拟地址0xC0000000~0xC0000000+896m操作即是对0X0~896m的物理地址操作。内核代码和静态内核数据结构就存放在这个0xC0000000~0xC0000000+


相关文档:

实战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 Bluetooth编程(六) L2CAP编程实例

例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
 如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......

linux常见命令 chmod和chown命令的用法

一、chown 命令
用途:更改文件的所有者或组。命令由单词change owner组合而成。
使用示例:
1,更改文件的所有者:
chown jim program.c
文件 program.c 的所有者更改为 jim。作为所有者,jim 可以使用 chmod 命令允许或拒绝其他用户访问 program.c。
2,更改目录的所有者:
chown -R john:build /tmp/src
将目录 ......

Linux(Centos5.4)上安装oracle10gR2(10.2.1)

我用的是Centos5.4 DVD光盘安装的linux操作系统,安装linux的时候选上开发工具,Xmanager,与数据库相关的包。
操作系统安装完成之后需要进行一系列的配置才能安装oracle10g,下面把主要步骤记录下来。
1.安装完操作系统之后还是有些包没有安装,然而安装oracle10g的时候需要用到,没有安装的包有:
libXp-1.0.0-8.i386.rp ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号