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

Linux内存线性地址空间布局解析


 
Linux内存线性地址空间大小为4GB,分为2个部分:用户空间部分(通常是3G)和内核空间部分(通常是1G)。在此我们主要关注内核地址空间部分。
内核通过内核页全局目录来管理所有的物理内存,由于线性地址前3G空间为用户使用,内核页全局目录前768项(刚好3G)除0、1两项外全部为0,后256项(1G)用来管理所有的物理内存。内核页全局目录在编译时静态地定义为swapper_pg_dir数组,该数组从物理内存地址0x101000处开始存放。
由图可见,内核线性地址空间部分从PAGE_OFFSET(通常定义为3G)开始,为了将内核装入内存,从PAGE_OFFSET开始8M线性地址用来映射内核所在的物理内存地址;接下来是mem_map数组,mem_map的起始线性地址与体系结构相关,比如对于UMA结构,由于从PAGE_OFFSET开始16M线性地址空间对应的16M物理地址空间是DMA区,mem_map数组通常开始于PAGE_OFFSET+16M的线性地址;从PAGE_OFFSET开始到VMALLOC_START – VMALLOC_OFFSET的线性地址空间直接映射到物理内存空间(一一对应影射,物理地址<==>线性地址-PAGE_OFFSET),这段区域的大小和机器实际拥有的物理内存大小有关,这儿VMALLOC_OFFSET在X86上为8M,主要用来防止越界错误;在内存比较小的系统上,余下的线性地址空间(还要再减去空白区即VMALLOC_OFFSET)被vmalloc()函数用来把不连续的物理地址空间映射到连续的线性地址空间上,在内存比较大的系统上,vmalloc()使用从VMALLOC_START到VMALLOC_END(也即PKMAP_BASE减去2页的空白页大小PAGE_SIZE)的线性地址空间,此时余下的线性地址空间(还要再减去2页的空白区即VMALLOC_OFFSET)又可以分成2部分:第一部分从PKMAP_BASE到FIXADDR_START用来由kmap()函数来建立永久映射高端内存;第二部分,从FIXADDR_START到FIXADDR_TOP,这是一个固定大小的临时映射线性地址空间,(引用:Fixed virtual addresses are needed for subsystems that need to know the virtual address at compile time such as the APIC),在X86体系结构上,FIXADDR_TOP被静态定义为0xFFFFE000,此时这个固定大小空间结束于整个线性地址空间最后4K前面,该固定大小空间大小是在编译时计算出来并存储在__FIXADDR_SIZE变量中。
正是由于vmalloc()使用区、kmap()使用区及固定大小区(kmap_atomic()使用区)的存在才使ZONE_NORMAL区大小受到限制,由于内核在运行时需要这些函数,因此在线性地址空间中至少要VMALLOC_RESERVE大小的空间。VMALLOC_RES


相关文档:

linux 启动 sendmail 和 sm client 慢的解决办法

转载自:http://howieshen.blogbus.com/logs/33958295.html
启动服务器时发现停在 starting sendmail 和 starting
sm-client,等了好久才可以进去,开始以为是主机设置的问题,查看了一下发现我设置错误
服务器:
/etc/hosts:
192.168.1.119     server
192.168.1.123     ......

Linux 下 Qt 4.6.0 嵌入式开发环境的搭建、移植

转自http://hi.baidu.com/jiyeqian/blog/item/f46d26a2ff3f7da6caefd0d6.html
 
Qt:qt-everywhere-opensource-src-4.6.0.tar.gz
嵌入式平台:2440
arm-linux-gcc:4.1.2,下载(我用4.3.2和4.4.1版本时,移植时都有段错误。我把它放在:/usr/local/arm/4.1.2/ 。)
将 qt-everywhere-opensource-src-4.6.0.tar.g ......

Linux 分区


对硬盘进行分区前,应该先弄清楚计算机担负的工作及硬盘的容量有多大,还要考虑以下几个问题。
        
        
第一点也是最重要的一点,要知道当前安装
Lilo
的版本,(
Linux
引导文件:
Lilo

Grub
)因为
Li ......

Linux下面的软件RAID6测试

linux下的软件RAID支持RAID级别0,1,4,5,6,今天特别测试一下RAID6。
步骤一:准备分区
分区情况如下,具体如何分区就不介绍了。
/dev/hdb5            5240        5252      1043 ......

Redboot配置从flash引导的linux内核

首先,配置RedBoot的IP及其tftp服务器IP,装好tftp服务器,需要下载的内核及内存镜象应放在服务器的/tftpboot目录下
配置RedBoot的指令是
> fconfig
注意:启动的延时不要设为0,否则以后就很难再更改系统了
然后要执行flash存储器的初始化工作:
> fis init
之后,将kernel与ramdisk.gz通过tftp下载至内存并写 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号