2012年9月18日

转:共享内存的编程实现

摘要: 1 /*共享内存允许两个或多个进程进程共享同一块内存(这块内存会映射到各个进程自己独立的地址空间) 2 从而使得这些进程可以相互通信。 3 在GNU/Linux中所有的进程都有唯一的虚拟地址空间,而共享内存应用编程接口API允许一个进程使 4 用公共内存区段。但是对内存的共享访问其复杂度也相应增加。共享内存的优点是简易性。 5 使用消息队列时,一个进程要向队列中写入消息,这要引起从用户地址空间向内核地址空间的一次复制, 6 同样一个进程进行消息读取时也要进行一次复制。共享内存的优点是完全省去了这些操作。 7 共享内存会映射到进程的虚拟地址空间,进程对其可... 阅读全文

posted @ 2012-09-18 10:49 白水月 阅读(411) 评论(0) 推荐(0) 编辑

转:Linux内存共享

摘要: 昨天面试阿里被BS了,其中一问是内存如何共享,茫然不知所措,今日复习发现这篇好文,特定转过来备忘。共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。在/proc/sys/kernel/目录下,记录着共享内存的一些限制,如一个共享内存区的最大字节数shmmax,系统范围内最大共享内存区标识符数shmmni等,可以手工对其调整,但不推荐这样做。一、应用共享内存的使用,主要有以下几个API:ftok()、shmget()、shmat()、shmdt()及shmctl()。1)用ftok()函数获得一个ID号.应用说明:在IPC中,我们经常用用key_t的值来创建或者打开信号量,共享内存 阅读全文

posted @ 2012-09-18 10:35 白水月 阅读(155) 评论(0) 推荐(0) 编辑

导航