- 博客(6)
- 收藏
- 关注
转载 linux 进程地址空间的探究
我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G的地址空间是不存在的,也就是我们所说的虚拟内存空间。那虚拟内存空间是什么呢,它与实际物理内存空间又是怎样对应的呢,为什么有了虚拟内存技术,我们就能运行比实际物理内存大的应用程序,它是怎么做到的呢?呵呵,这一切的一切都是个迷呀,下
2013-09-26 15:18:56 851
原创 C/C++中常见的与存储器有关的错误
这些都是最近在《深入理解计算机系统》中看到的,在项目中确实很实用1.间接引用坏指针在进程的虚拟地址空间中有较大的洞,没有映射任何有意义的数据,如果我们试图间接引用一个指向这些洞的指针,那么操作系统就会以段异常来终止我们的程序。而且,虚拟存储器的某些区域是只读的,试图写这些区域将造成以保护异常终止这个程序。eg: scanf("%d", &val) 然而,对于C程序员初学者而言(
2013-09-17 15:56:14 843
原创 虚拟存储器
为了更加有效地管理存储器并且少出错,现在系统提供了一种对主存的出想概念,叫做虚拟存储器。虚拟存储器是硬件异常、硬件地址翻译、主存、磁盘文件和内核文件的完美交互。它为每个进程提供了一个大的、一致的、私有地址空间,通过一个很清晰的机制,虚拟存储器提供了三个重要的能力:它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,它高效
2013-09-16 14:46:54 1011
原创 静态链接和动态链接
大家都知道应用程序有两种链接方式,一种是静态链接,一种是动态链接,这两种链接方式各有好处。程序的静态连接还是动态连接是根据编译器的连接参数指定的。所谓静态链接就是在编译链接时直接将需要的执行代码拷贝到调用处,优点就是在程序发布的时候就不需要的依赖库,也就是不再需要带着库一块发布,程序可以独立执行,但是体积可能会相对大一些。(所谓库就是一些功能代码经过编译连接后的可执行形式。)
2013-09-16 11:32:50 1090
原创 Android JNI回调
为什么本地创建的线程pthread_create 不能用于回调 而一定要用create_thread_callback该函数来实现而该函数调用的又是什么(pthread_t)AndroidRuntime::createJavaThread最近看到一个函数AttachCurrentThread 觉得能分析这个问题具体详解 http://developer.android
2013-09-05 16:27:55 799
原创 UltraEdit for Linux Keygen
在Linux端编程最郁闷的就是软件工具太匮乏,并不是每个人都能将vim玩的那么溜。平时在Windows上使用UltraEdit发现也有Linux版本,在网上找到对应的注册机,激活后使用过程相当爽。下载地址 下载地址 下载地址
2013-09-03 09:45:21 4249
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人