SharedApplication: 共享内存操作原理

共享内存是Linux里面一个进程通讯的实现机制,通过系统API将同一块内存块挂载在到两个进程的内存地址空间中,从而实现共享内存的操作。

对于一块共享内存,我们用Key和Id进行标识,Key为用户自定义的一个值,不同进程倘若使用了同一个Key,即视为他们需要同一块共享内存。通过Key,用户可以向系统申请开一个指定大小的共享内存,并返回这块内存的内部标识Id,之后的挂载操作都需要用Id进行制定。

有关共享内存的API都封装在了<sys/shm.h>文件中,具体有

通过自定义Token新建共享内存,并返回标识符: appId = shmget(TOKEN,size,0666)

通过标识符挂在已经建好的共享内存到本地内存空间: ptr = shmat(appId,NULL,0)

取消挂载: shmdt(ptr)

删除共享内存: shmctl(appId,IPC_RMID,NULL)

每一次需要共享内存,强行调用这些语句看起来比较的繁琐,因此我希望写一个共享内存的操控框架,使得每次只需要极少的代码,就可自动完成诸如共享内存挂载,新建等要求。这也是SharedApplication的编写背景。

 

原创文章地址:【SharedApplication: 共享内存操作原理】,转载时请注明出处mhy12345.xyz

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据