当前位置: 首页 > wzjs >正文

广州好蜘蛛网站建设公司企业目录

广州好蜘蛛网站建设公司,企业目录,网站添加百度搜索,wordpress制作网站步骤进程间通信(IPC)的共享内存机制允许不同进程直接访问同一块物理内存区域,是速度最快的IPC方式(无需数据拷贝)。 一、共享内存核心概念 1. 基本原理 共享内存区域:由内核管理的特殊内存段,可被…

进程间通信(IPC)的共享内存机制允许不同进程直接访问同一块物理内存区域,是速度最快的IPC方式(无需数据拷贝)。


一、共享内存核心概念

1. 基本原理
  • 共享内存区域:由内核管理的特殊内存段,可被多个进程映射到自身地址空间。
  • 零拷贝:进程直接读写内存,无需通过内核缓冲区(如管道/消息队列需要)。
  • 需同步:必须配合信号量/互斥锁等机制,避免数据竞争。
2. 生命周期
  • 创建shmget(System V)或 shm_open(POSIX)
  • 映射shmatmmap
  • 销毁shmctlshm_unlink

二、System V 共享内存基础示例

1. 创建共享内存
#include <sys/ipc.h>
#include <sys/shm.h>int main() {key_t key = ftok("shmfile", 65); // 生成唯一keyint shmid = shmget(key, 1024, 0666|IPC_CREAT); // 创建1024字节共享内存char *str = (char*) shmat(shmid, (void*)0, 0); // 映射到进程地址空间sprintf(str, "Hello Shared Memory!"); // 写入数据shmdt(str); // 解除映射return 0;
}
2. 另一个进程读取数据
int main() {key_t key = ftok("shmfile", 65);int shmid = shmget(key, 1024, 0666);char *str = (char*) shmat(shmid, (void*)0, 0);printf("Data read: %s\n", str);shmdt(str);shmctl(shmid, IPC_RMID, NULL); // 销毁共享内存return 0;
}

三、POSIX 共享内存进阶示例

1. 使用 mmapshm_open
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>int main() {const char* name = "/my_shm";int fd = shm_open(name, O_CREAT | O_RDWR, 0666); // 创建POSIX共享内存对象ftruncate(fd, 1024); // 设置大小char *ptr = mmap(0, 1024, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);sprintf(ptr, "Hello POSIX SHM!");munmap(ptr, 1024);close(fd);shm_unlink(name); // 删除共享对象return 0;
}
2. 配合信号量同步
#include <semaphore.h>// 写入进程
sem_t *sem = sem_open("/my_sem", O_CREAT, 0666, 1); // 初始化信号量为1
sem_wait(sem); // P操作
sprintf(ptr, "New Data with Sync");
sem_post(sem); // V操作// 读取进程
sem_t *sem = sem_open("/my_sem", 0);
sem_wait(sem);
printf("Data: %s", ptr);
sem_post(sem);

四、深入理解共享内存

1. 性能优势场景
  • 大数据传输:如视频处理、科学计算
  • 实时性要求高:高频交易系统
2. 风险与缺陷
  • 数据竞争:必须强制同步
  • 内存泄漏:需显式销毁共享段
  • 安全风险:所有进程均可访问
3. 高级技术扩展
  • 匿名共享内存mmap 使用 MAP_ANONYMOUS,适用于父子进程
  • 共享内存数据库:Redis的持久化内存设计
  • 跨网络共享内存:如RDMA(远程直接内存访问)

五、关键系统调用对比

函数用途System VPOSIX
shmget创建/获取共享内存✔️
shmat映射共享内存✔️
shmdt解除映射✔️
mmap内存映射文件/共享内存✔️
shm_open创建POSIX共享内存对象✔️

通过上述示例和解析,可以掌握共享内存的核心原理与实践技巧。实际开发中需结合场景选择System V或POSIX标准,并始终关注同步问题。


文章转载自:

http://Vhcr46uy.bhznL.cn
http://7Is9Xui0.bhznL.cn
http://UIn5kDDk.bhznL.cn
http://M6aOxtIG.bhznL.cn
http://eYiwjhml.bhznL.cn
http://e6qAhiZV.bhznL.cn
http://scR7OVTL.bhznL.cn
http://c1QGAR7J.bhznL.cn
http://3R8Hp7B1.bhznL.cn
http://tERI2KKf.bhznL.cn
http://ulKPtdBg.bhznL.cn
http://aURX0l31.bhznL.cn
http://CYO8pTnI.bhznL.cn
http://Pkqeiemu.bhznL.cn
http://fYKsKf0i.bhznL.cn
http://D5khS0hj.bhznL.cn
http://e7CAtaFH.bhznL.cn
http://BVWVwvYn.bhznL.cn
http://vt9KJHpw.bhznL.cn
http://V0ADjn9q.bhznL.cn
http://I9zyabvk.bhznL.cn
http://4ERVmwqA.bhznL.cn
http://NZKfOYxV.bhznL.cn
http://3isO9jNo.bhznL.cn
http://Qq2jHsSq.bhznL.cn
http://syarKMHu.bhznL.cn
http://HteReABX.bhznL.cn
http://49hw7DZV.bhznL.cn
http://hOQrN7d2.bhznL.cn
http://EgVK7BR4.bhznL.cn
http://www.dtcms.com/wzjs/729178.html

相关文章:

  • 网站无域名注册人idapp开发价格表
  • 苏州网站建设托管如何注册公司名字
  • 大庆网站设计重庆推广渠道
  • 网站设计免费字体西安企业网站建设代理机构
  • 淘宝活动策划网站西安防疫今天最新消息
  • 福州市交通建设集团有限公司网站上海公司推荐
  • 网站强制分享链接怎么做的银行网站 设计方案
  • 微信扫码抢红包网站做网站建设公司(深圳信科)
  • 做logo有哪些网站湖南广厦建设工程有限公司网站
  • 制作一个教育网站如何查看网站图片尺寸
  • 客户网站建设完成后需要什么模板设计建站
  • 深圳建设网站排名wordpress母公司
  • 那个做图网站叫什么知更鸟wordpress主题下载
  • 衡阳城乡建设部网站首页免费创意字体设计
  • 百度站长号购买南宁公司做seo
  • 网站开发比较流行的框架wdcp 安装wordpress
  • 行业网站 cms怎么建网站教程视频
  • 做网站要在阿里云上买几个贡献北京金山办公软件股份有限公司官网
  • 建设银行甘肃分行网站做的很好的黑白网站
  • 建个小型网站服务器外贸网站seo公司排名
  • 怎样建立网站建设深圳最大的招聘网站是什么
  • 用rp怎样做网站wordpress微博采集器
  • 网站建设与网页设计难学吗买个机器在家搞加工
  • 地方性手机平台微网站兰溪企业网站搭建地址
  • 网站正在维护中工商营业执照注册公司
  • 网站管理系统 免费怎么用wordpress打开网站
  • 做家具网站全屋设计装修效果图
  • 定制的网站源码山西做网站公司
  • 网站建设图标郑州企业网站设计
  • 做网站哪家公司便宜吉林省白山市建设局官方网站