什么是堆,什么是栈,什么是数据段,什么是代码段...这些都是历史遗留问题,如今编程真的没有必要在意这些了!不要被/proc/xx/{maps,smaps}里面的内容所迷惑和萦绕,自己管理好自己的内存分配就好,如果程序不是自己写的,那么就找写它的人。本文将从一个链接动态库的可执行文..
分类:
其他好文 时间:
2014-05-27 03:15:06
阅读次数:
313
定义:进程是程序执行时的一个实例。所有进程都有一个父进程。当一个进程创建时,它几乎与父进程相同。她接受父进程地址空间的一个拷贝,并从进行创建系统调用的下一条指令开始执行与父进程相同的代码。尽管父子进程可以共享含有程序代码的页,但是他们各自有独立的数据拷贝。进程描述符
进程状态。进程状态是互斥的。 ....
分类:
其他好文 时间:
2014-05-23 11:37:18
阅读次数:
236
高效线程使用圣典
严格来讲,线程的系统开销很大。系统必须为线程分配并初始化一个线程内核对象,还必须为每个线程保留1MB的地址空间(按需提交)用于线程的用
户模式堆栈,分配12KB左右的地址空间用于线程的内核模式堆栈。然后,紧接着线程创建后,Windows调用进程中每个DLL都有的一个函数来通知进程....
分类:
编程语言 时间:
2014-05-23 10:25:32
阅读次数:
399
共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。
mmap函数
功能:将文件或者设备空间映射到共享内存区。
原型
void *mmap(void *addr, size_t len, int prot, int flags, in...
分类:
其他好文 时间:
2014-05-22 08:04:52
阅读次数:
315
一、什么是共享内存
顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影...
分类:
系统相关 时间:
2014-05-21 10:42:26
阅读次数:
626
首先,在x86架构的处理器上,一个正常页面大小为4KB,非PAE模式下,CR3持有页目录页面的物理地址,PDE和PTE格式相同大小为4字节。此时每个页表页面包含1024个PTE,可以映射1024个页面。而x86的4GB地址空间共包含1M个4KB的页面,映射所有这些页面共需要1024个页表页面,映射这...
格式控制符“%p”中的p是pointer(指针)的缩写。指针的值是语言实现(编译程序)相关的,但几乎所有实现中,指针的值都是一个表示地址空间中某个存储器单元的整数。printf函数族中对于%p一般以十六进制整数方式输出指针的值,附加前缀0x。示例:int
i = 1;printf("%p",&i);...
分类:
其他好文 时间:
2014-05-19 19:28:19
阅读次数:
219
第八章 指针2.
用指针来保存地址☆指针就是保存内存地址的无符号整数变量指针,是一个无符号整数(unsigned
int),它是一个以当前系统寻址范围为取值范围的整数。32位系统下寻址能力(地址空间)是4G-byte(0~2^32-1)二进制表示长度为32bit(也就是4B)。64位系统下寻址能力(...
分类:
其他好文 时间:
2014-05-19 17:50:08
阅读次数:
283
什么是堆,什么是栈,什么是数据段,什么是代码段...这些都是历史遗留问题,如今编程真的没有必要在意这些了!不要被/proc/xx/{maps,smaps}里面的内容所迷惑和萦绕,自己管理好自己的内存分配就好,如果程序不是自己写的,那么就找写它的人。本文将从一个链接动态库的可执行文件如何载入进程地址空间开始,谈一下我对进程地址空间布局的看法。我没有采用精确的方式描述ELF或PE文件如何载入的,而仅仅...
分类:
其他好文 时间:
2014-05-18 18:23:26
阅读次数:
378
小端存储:数据的低位部分,存储于存储器的低地址空间里。
大端存储:数据的高位部分,存储于存储器的高地址空间里。 首先,一般PC数据存储方式是小端存储。
基本实现思想是:将存储器中所存的数据按字节以地址顺序输出,与存入数据的高地位进行比较,即得出结论。 实现方法一:
分类:
编程语言 时间:
2014-05-17 21:03:42
阅读次数:
394