码迷,mamicode.com
首页 >  
搜索关键字:地址空间    ( 1916个结果
Linux环境进程间通信:共享内存
共享内存简介 共享内存允许两个或多个进程共享一给定的存储区。因为数据不需要在客户进程和服务器进程之间复制,所以这是最快的一种IPC。共享内存的方式有两种:mmap()系统调用和系统V共享内存。 mmap()系统调用 mmap()系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进程可以向访问普通内存一样对文件进行访问,不必再调用read(),write(...
分类:系统相关   时间:2014-08-14 16:45:08    阅读次数:301
linux进程地址空间详解(转载)
linux进程地址空间详解(转载)在前面的《对一个程序在内存中的分析》中很好的描述了程序在内存中的布局,这里对这个结果做些总结和实验验证。下面以Linux为例(实验结果显示windows上的结果也一样)。我们还是利用前面看到过的这个图,如下图:32位X86机器的内存布局图,内存主要分为栈、堆、BSS...
分类:系统相关   时间:2014-08-12 21:31:44    阅读次数:451
学习pthreads,管理线程的栈
进程的地址空间分成代码段,静态数据段,堆和栈段。线程栈的位置和大小是从它所属的进程的栈中切分出来的。每个栈必须足够大,以容纳所有对等线程的函数的执行以及它们将会调用的例程链。或许你会问为什么要进行线程栈的管理?因为栈的管理由系统自动管理。但是针对具体问题,有可能系统自动管理的栈不能满足运行的要求,这时对线程的栈的管理是必要的。本文分为三个部分,第一部分给出管理线程栈的代码示例,第二部分对代码进行讲...
分类:编程语言   时间:2014-08-12 19:09:44    阅读次数:193
Linux程序设计学习笔记----System V进程通信(共享内存)
共享内存可以被描述成内存一个区域(段)的映射,这个区域可以被更多的进程所共享。这是IPC机制中最快的一种形式,因为它不需要中间环节,而是把信息直接从一个内存段映射到调用进程的地址空间。 一个段可以直接由一个进程创建,随后,可以有任意多的进程对其读和写。但是,一旦内存被共享之后,对共享内存的访问同步需要由其他 IPC 机制,例如信号量来实现。象所有的System V IPC 对象一样,Linux 对...
分类:系统相关   时间:2014-08-12 17:14:14    阅读次数:381
实例句柄
在Windows应用程序中,总需要加载应用程序文件到系统内存里,为了标识每个文件在内存的区别,Windows使用了句柄来标识这些文件。比如在一个应用程序里,有一个可执行文件(EXE)和多个动态连接库文件(DLL),这时可以标识可执行文件为0x1D000000,动态连接库文件为0x1D001000。这里的值只是举例,当系统运行应用程序时,就会分配实际的值给应用程序。加载到进程地址空间的每一个可执行文...
分类:其他好文   时间:2014-08-12 09:04:13    阅读次数:198
POSIX共享内存
DESCRIPTION共享内存是最快的可用IPC形式。它允许多个不相关(无亲缘关系)的进程去访问同一部分逻辑内存。如果需要在两个进程之间传输数据,共享内存将是一种效率极高的解决方案。一旦这样的内存区映射到共享它的进程的地址空间,这些进程间数据的传输就不再涉及内核。这样就可以减少系统调用时间,提高程序...
分类:其他好文   时间:2014-08-10 12:38:30    阅读次数:205
MYSQL,innodb_buffer_pool_size内存分配方式
以前一直以为MYSQL,innodb_buffer_pool_size=8G,MySQL一起动就会将占用掉8G内存(认为TOP可以看到内存被使用了8G),但是最近才仔细研究一下,原来不是这样的(可能自己对Linux malloc内存分配也只是知道了个皮毛吧),MySQL启动时实际只是在虚拟内存中分配了地址空间,而并没有真正的映射到物理内存上。 因为malloc分配内存是先在虚拟内存中分配地址的,到实际使用时才真正的映射到物理内存 因此这个地方,如果由于机器内存使用不当,到了MySQL真正要映射物理内存时...
分类:数据库   时间:2014-08-09 15:55:38    阅读次数:267
平坦内存模式、分段内存模式、实地址模式
IA-32处理器平台允许3种不同的访问系统内存的方法: (1)平坦内存模式 (2)分段内存模式 (3)实地址模式 平坦内存模式把全部系统内存表示为连续的地址空间。所有指令、数据和堆栈都包含在相同的地址空间中。通过称为线性地址(linear address)的特定地址访问每个内存位置。 分段内存模式把...
分类:其他好文   时间:2014-08-05 21:53:30    阅读次数:298
C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。 堆,就是那些由new分配的内存块,他们的释放编译器.....
分类:编程语言   时间:2014-08-05 19:09:19    阅读次数:266
Linux------进程的创建和终结
进程的创建: Linux通过两个步骤创建新的进程:fork()和exec().其中fork可以创建当前进程(父进程)的一个副本,即子进程。父进程和子进程只有PID不同。在这之后,系统中有两个进程,执行同样的操作。父进程的内容将被复制,但是在Linux中运用了一种写时复写(copy on write)技术,使进程的创建更为高效。接下来exec将读取可执行文件载入地址空间中运行。这样一个进程就创建好...
分类:系统相关   时间:2014-08-04 21:29:58    阅读次数:334
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!