1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > linux共享内存的定义 共享内存是什么意思 Linux系统如何共享内存

linux共享内存的定义 共享内存是什么意思 Linux系统如何共享内存

时间:2018-12-30 00:31:04

相关推荐

linux共享内存的定义 共享内存是什么意思 Linux系统如何共享内存

共享内存概念

共享内存是通信效率最高的IPC方式,因为进程可以直接读写内存,而无需进行数据的拷备。但是它没有自带同步机制,需要配合信号量等方式来进行同步。

共享内存被创建以后,同一块物理内存被映射到了多个进程地址空间,当有一个进程修改了共享内存的数据,其余的进程均可看见所修改的内容,反之亦然。

mmap函数

函数原型:

voidmmap(voidadrr,size_tlength,intprot,intflags,intfd,off_toffset);

返回值:

成功:返回创建的映射区首地址;

失败:返回MAP_FAILED

具体参数含义:

addr:指向映射区的首地址,这是由系统内核所决定的,一般设为NULL;

length:欲创建的映射区大小;

prot:映射区的权限,一般有如下几种:

PROT_EXEC 映射区域可被执行

PROT_READ 映射区域可被读取

PROT_WRITE 映射区域可被写入

PROT_NONE 映射区域不能存取

flags:指映射区的标志位,MAP_FIXED与MAP_PRIVATE必须选择一个:

MAP_FIXED:对映射区所作的修改会反映到物理设备,但需要调用msync()或者munmap();

MAP_PRIVATE:对映射区所作的修改不会反映到物理设备。

fd:创建的映射区的文件描述符;

offset:被映射文件的偏移量,一般设为0,表示从头开始映射。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。