摘要: 静态链接浪费内存和磁盘空间、模块更新困难等问题,因此寻找一种更好的办法来组织程序模块。 静态链接对程序的更新、部署和发布也会带来很多麻烦。动态链接: 就是不对那些组成程序的目标文件进行链接,等到程序要运行时才进行链接。动态链接的方式使得开发过程中各个模块更加独立、耦合度更小,便于不同的开发者和开发组织之间进行独立的开发和测试。动态链接还有一个特点就是程序在运行时可以动态的选择加载各种程序模块,使得插件成为可能。Linux系统中,ELF动态链接文件被称为动态共享对象(DSO,Dynamic Shared Objects),简称共享对象,它们一般都是以“.so”为扩展名;动态链接文件被称为动态.. 阅读全文
posted @ 2012-05-06 22:51 KingsLanding 阅读(2327) 评论(2) 推荐(0)
摘要: 由 user process角度来说明的话,VMA 是 user process 里一段 virtual address space 区域;virtual address space 是连续的内存空间,当然VMA 也会是连续的空间。VMA对 Linux 的主要好处是,可以内存的使用更有效率,並且更容易管理 user process address space。从另一个观念来看,VMA 可以让 Linux kernel 以 process 的角度来管理 virtual address space。Process 的 VMA对应,可以由 /proc/<pid>/maps 来查看;例如 阅读全文
posted @ 2012-05-06 22:24 KingsLanding 阅读(1165) 评论(0) 推荐(0)
摘要: 进程与程序: 程序是一个静态的概念,它就是这些预编译好的指令和数据集合的一个文件;进程则是一个动态的概念,它是程序运行时的一个过程,很多时候把动态库叫做运行时也有一定的含义。 一般来来说,C语言指针大小的位数与虚拟空间的位数相同,如果32位平台下指针为32位,即4字节;64位平台下的指针为64位,即8字节。Intel自从1995年的Pentium Pro CPU开始采用了36位的物理地址,也就是可以访问高达64GB的物理内存。Intel把这个地址扩展方式叫做PAE(Physical Address Extension)。应用程序如何使用这些大于常规内存的空间?一个很常见的方法就是操作系统提供一 阅读全文
posted @ 2012-05-06 22:11 KingsLanding 阅读(2070) 评论(0) 推荐(0)