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

Linux内核Vmalloc区域大小的计算

以前自己跟着内核内存管理的一些宏定义画过内存分布图
比如VMALLOC_START, VMALLOC_END, FIXADDR_START等等
一直以为这些值在实际内核中多多少少会有误差,没想到前几天看了一下
居然完全吻合。
来试着计算一下Vmalloc的总大小,为了便于计算我们认为1G的内核空间从0地址开始。
首先我的物理内存超过了896M,因此high_memory就是896M
其上是8M的空洞用于捕捉越界的内存访问,于是VMALLOC_START在896M+8M = 904M
下面再来计算VMALLOC_END。
最顶上是一个内存空洞,然后是固定映射的区域,这个区域的分布可以参考下面这个枚举
enum fixed_addresses {
    FIX_HOLE,
    FIX_VDSO,
    FIX_DBGP_BASE,
    FIX_EARLYCON_MEM_BASE,
#ifdef CONFIG_X86_LOCAL_APIC
    FIX_APIC_BASE,    /* local (CPU) APIC) -- required for SMP or not */
#endif
#ifdef CONFIG_X86_IO_APIC
    FIX_IO_APIC_BASE_0,
    FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + MAX_IO_APICS-1,
#endif
#ifdef CONFIG_X86_VISWS_APIC
    FIX_CO_CPU,    /* Cobalt timer */
    FIX_CO_APIC,    /* Cobalt APIC Redirection Table */
    FIX_LI_PCIA,    /* Lithium PCI Bridge A */
    FIX_LI_PCIB,    /* Lithium PCI Bridge B */
#endif
#ifdef CONFIG_X86_F00F_BUG
    FIX_F00F_IDT,    /* Virtual mapping for IDT */
#endif
#ifdef CONFIG_X86_CYCLONE_TIMER
    FIX_CYCLONE_TIMER, /*cyclone timer register*/
#endif
    FIX_KMAP_BEGIN,    /* reserved pte's for temporary kernel mappings */
    FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1,
#ifdef CONFIG_PCI_MMCONFIG
    FIX_PCIE_MCFG,
#endif
#ifdef CONFIG_PARAVIRT
    FIX_PARAVIRT_BOOTMAP,
#endif
    __end_of_permanent_fixed_addresses,
    /*
     * 256 temporary boot-time mappings, used b


相关文档:

Linux 内核有多少代码是来自华人的贡献?

里有一个统计 http://www.remword.com/kps_result/china.php
点击连接进去,可以看能到:
Total patch sets of this kernel release: 157236
5337 person contribute their works to this kernel release.
Averagely, every person committed 29 patch sets.
299(5.60%) Chinese people contribute 6185(3.93%) patch ......

嵌入式LINUX的开发经验与教训随笔

1.系统和平台熟悉
在一个新的平台上开发或者移植一款软件的时候,首先应该充分平台或者
操作系统的各种属性,这些属性包括但不仅限于:
1)系统的任务调度,任务间的通信机制
任务调度包括是否是多任务实时操作系统,任务以何种方式存在的,如何添加和管理任务?任务间的优先级如何设置?任务间的优先级设置?任务堆栈? ......

Linux信号

from: http://cc.byexamples.com/20070520/tap-the-interrupt-signal/
When you hit control+c, you are actually send a SIGINT ( Interrupt signal ) to your program. By default, your program will be terminated after receiving SIGINT. But you can change the way of handling Interrupt signal.
Some of the a ......

Linux USB驱动框架分析上

初次接触与OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结当然不可缺,更何况我决定为嵌入式卖命了。好,言归正传,我说一说这段时间的收获,跟大家分享一下Linux的驱动开发。但这次只先针对Linux的USB子系统作分析,因为周五研讨老板催货。当然,还会顺带提一下其他的驱动程序写法。
&n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号