一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由...
分类:
其他好文 时间:
2014-05-26 15:50:13
阅读次数:
183
所谓共享内存就是使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。其他进程能把同一段共享内存段“连接到”他们自己的地址空间里去。所有进程都能访问共享内存中的地址。如果一个进程向这段...
分类:
系统相关 时间:
2014-05-26 10:02:29
阅读次数:
353
sem1.c 1 #include"unistd.h" 2 #include"string.h" 3
#include"stdio.h" 4 #include"stdlib.h" 5 #include"linux/types.h" 6
#include"linux/sem.h" 7 #include...
分类:
系统相关 时间:
2014-05-26 00:03:18
阅读次数:
583
MMapDirectory继承自FSDirectory,针对jre至今没解决的Mmap close不回收空间(直至full gc才回收)的bug,lucene用hack方式回收(仅对sun jam)(线上目前还是出现这个问题,是什么情况,得确认一下)。其中64位linux下chunk是1G,MMAP之后返回ByteBuffer数组,其IndexInput类是MMapIndexInput。
FSD...
分类:
其他好文 时间:
2014-05-25 18:17:00
阅读次数:
314
信号机制
管道
有名管道
文件锁
消息队列
信号量
共享内存...
分类:
编程语言 时间:
2014-05-25 16:47:07
阅读次数:
307
可以通过操作/dev/mem设备文件,以及mmap函数,将寄存器的地址映射到用户空间,直接在应用层对寄存器进行操作,示例如下:...
分类:
系统相关 时间:
2014-05-24 22:10:07
阅读次数:
454
shmread.c
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ERR_EXIT(m) do { ...
分类:
其他好文 时间:
2014-05-23 08:21:49
阅读次数:
274
共享内存区是最快的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
POSIX共享内存相关函数:
shm_open函数
功能:用来创建或打开一个共享内存对象
原型
int shm_open(const char *name, int oflag, mode_t mode);
参数
name:共享内存对象的名字
oflag:与open函数类似,可以是O_RDONLY、O_RDWR,还可以按位或上O_CREAT、O_EXCL、O_T...
分类:
其他好文 时间:
2014-05-21 07:38:19
阅读次数:
324