易截截图软件、单文件、免安装、纯绿色、仅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编程 (七) SDP协议

Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。
服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth client发现可用bluetooth server服务和它们的特征的方法。 ......

在Linux上安装Redmine与apache整合进行项目管理


安装
SVN
这个比较简单,去
这里下载源码
http://subversion.tigris.org/
 
自己编译下装好就是了。
对于
SVN
的配置,建议查看如下连接,说的很详细,我也不在多说哈
~
http://www.ibm.com/developerworks/cn/java/j-lo-apache-subversion/#N10250
不过,有一点,上边说的进行目录访问控制
,这个比较 ......

Linux目录结构,写给Windows用户的Linux目录结构的介绍

与Windows将硬盘看做“C盘”、“D盘”几个独立的分区不同,Linux将整个文件系统看做一棵树,这棵树的树根叫做根文件系统,用/表示。各个分区通过“挂载”(mount)以文件夹的形式访问。
 
 在/中的文件夹很多,本文介绍常见文件夹的意义。Linux的目录结构确实比较复杂,但设置合 ......

linux图形库建立

linux裁剪好后,下面紧跟着我就建立图形库。图形库的移植相对来说比较繁琐。因为在相同硬件结构的情况下是可以直接拷贝过来的。我的方法是先把图形库最主要的程序xinit拷过来,然后运行它根据日志提示缺少什么一一移植过来就可以了。一些库文件和一些字体配置,输入输出设备的驱动拷贝过来就可以了,当然内核配置里的frameb ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号