
计算机原理
文章平均质量分 68
Mr桃子
这个作者很懒,什么都没留下…
展开
-
linux 进程地址空间的探究
我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G的地址空间是不存在的,也就是我们所说的虚拟内存空间。那虚拟内存空间是什么呢,它与实际物理内存空间又是怎样对应的呢,为什么有了虚拟内存技术,我们就能运行比实际物理内存大的应用程序,它是怎么做到的呢?呵呵,这一切的一切都是个迷呀,下转载 2013-09-26 15:18:56 · 880 阅读 · 0 评论 -
C/C++中常见的与存储器有关的错误
这些都是最近在《深入理解计算机系统》中看到的,在项目中确实很实用1.间接引用坏指针在进程的虚拟地址空间中有较大的洞,没有映射任何有意义的数据,如果我们试图间接引用一个指向这些洞的指针,那么操作系统就会以段异常来终止我们的程序。而且,虚拟存储器的某些区域是只读的,试图写这些区域将造成以保护异常终止这个程序。eg: scanf("%d", &val) 然而,对于C程序员初学者而言(原创 2013-09-17 15:56:14 · 883 阅读 · 0 评论 -
虚拟存储器
为了更加有效地管理存储器并且少出错,现在系统提供了一种对主存的出想概念,叫做虚拟存储器。虚拟存储器是硬件异常、硬件地址翻译、主存、磁盘文件和内核文件的完美交互。它为每个进程提供了一个大的、一致的、私有地址空间,通过一个很清晰的机制,虚拟存储器提供了三个重要的能力:它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,它高效原创 2013-09-16 14:46:54 · 1037 阅读 · 0 评论 -
静态链接和动态链接
大家都知道应用程序有两种链接方式,一种是静态链接,一种是动态链接,这两种链接方式各有好处。程序的静态连接还是动态连接是根据编译器的连接参数指定的。所谓静态链接就是在编译链接时直接将需要的执行代码拷贝到调用处,优点就是在程序发布的时候就不需要的依赖库,也就是不再需要带着库一块发布,程序可以独立执行,但是体积可能会相对大一些。(所谓库就是一些功能代码经过编译连接后的可执行形式。)原创 2013-09-16 11:32:50 · 1137 阅读 · 0 评论