shmget物理内存_共享内存的几点总结

在实验过程中,有些同学总对共享内存的一些概念弄不清,特别总结了下:

所谓共享内存就是多个进程间共同使用同一段物理内存空间,它是通过将同一段物理内存映射到不同进程的虚空间中来实现的。由于映射到不同进程的虚空间中,不同进程可以直接使用,不需要进行内存的复制,所以共享内存的效率很高。

共享内存分2种:

1.二者是用同一种机制完成的,不同的是用户接口不同:

一种是POSIX的共享内存,通过用户空间挂载的tmpfs文件系统实现的。(上层不会在意你是内核还是用户空间来实现的)

二种是system V的共享内存是由内核本身的tmpfs实现的。(严格由操作系统内核提供接口和实现。)

2.posix的共享内存机制实际上在库过程中以及用户空间的其他部分被展示为完全的文件系统的调用过程,在调用完shm_open之后,需要调用mmap来将tmpfs的文件映射到地址空间,接着就可以操作这个文件了,需要注意的是,别的进程也可以操作这个文件,因此这个文件其实就是共享内存。

反观system v的共享内存,内核直接实现了shmget/at系统调用,虽然终也是靠tmpfs来实现的,但是接口设计上和posix完全不同,posix旨在提供所有系统都一致的接口,而system v只在于实现自己的逻辑,共享内存其实只是sysv中ipc的一部分,终的管理数据结构也是ipc的而不是共享内存的

3.不管是system v的还是POSIX的共享内存,在计算机重新启动之后都不复存在,因为数据是都保存在物理存储器上或交换分区中。他们不同的是,POSIX是以用户空间文件实现的,并且用户空间操作的是文件描述符,文件描述符是属于t

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值