欢迎来到天天文库
浏览记录
ID:36607813
大小:1.37 MB
页数:32页
时间:2019-05-12
《技术研究集共享内存》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、综合结算产品部技术专题研究功能规格说明书-共享内存分册文档编号:ZHJS_BASELIB_V1.0文档信息项目名称项目经理文档版本1.0质量评审方法文档编写人编写日期2010-5-13文档评审人评审日期分发FromDatePhone/FaxToAction*DueDatePhone/Fax*ActionTypes:Approve,Review,Inform,File,ActionRequired,AttendMeeting,Other(pleasespecify)文档变更历史版本号版本日期修改人变更描述0.12010-5-13文档创建;创建功能规格书内容框架;版权
2、说明Allrightsreserved.Neitherthewholenoranypartsofthisdocumentmaybereproduced,storedinanyretrievalsystemortransmitted,inanyformorbyanymeans,withoutthepriorwrittenconsentofthecopyrightowner.Copyright©2007by联创科技-综合结算产品部Allrightsreserved.目录:Copyright©2007by联创科技-综合结算产品部31文档介绍51.1.文档编写目的51.2
3、.文档阅读对象51.3.涵盖范围51.4.缩略语定义51.5.参考文档51.6.文档概要52共享内存52.1概念52.2原理62.3类型与区别72.4常用函数说明82.4.1POSIX函数说明82.4.1.1打开或创建一个共享内存区82.4.1.2删除一个共享内存区92.4.1.3映射92.4.1.4解除映射102.4.1.4同步112.4.1.5映射区复制112.4.1.6改变共享内存122.4.1.7获得共享内存信息122.4.1.8应用举例122.4.2SYSTEMV原理142.4.3SYSTEMV函数说明152.4.3.1以创建或打开一块共享内存区152.
4、4.3.2共享内存链接进程172.4.3.3共享内存脱离进程182.4.3.4删除共享内存182.4.3.5应用举例192.5常见问题212.5.1AIX中shmat的问题212.5.2HP-UX32位和64位的兼容242.5.3对同一共享内存的连接数限制242.5.4Solaris系统中的shmdt调用272.5.5shmctl函数的风险28文档介绍1.1.文档编写目的随着结算系统和IDEP系统的发展,进程间通信越频繁,本文介绍了UNIX系统提供的进程间最快的通信方式——共享内存的基本函数和原理。1.2.文档阅读对象1)unix学习者2)系统维护人员3)系统开发
5、人员1.3.涵盖范围1.4.缩略语定义1.5.参考文档1)unix环境高级编程2)Linux常用C函数(中文版)1.6.文档概要1共享内存2.1概念所谓共享内存就是多个进程间共同使用同一段物理内存空间,它是通过将同一段物理内存映射到不同进程的虚空间中来实现的。由于映射到不同进程的虚空间中,不同进程可以直接使用,不需要进行内存的复制,所以共享内存的效率很高。2.2原理在系统内核为一个进程分配内存地址时,通过分页机制可以让一个进程的物理地址不连续,同时也可以让一段内存同时分配给不同的进程。如下图2-1所示:图:2-1这块共享虚拟内存的页面,出现在每一个共享该页面的进程
6、的页表中。但是它不需要在所有进程的虚拟内存中都有相同的虚拟地址。如下图2-2所示:图:2-22.3类型与区别共享内存分为两种:POSIX的共享内存和systemV的共享内存。二者是用同一种机制完成的,但是存在着一定的区别。1.不同的是用户接口:POSIX的共享内存,通过用户空间挂载的tmpfs文件系统实现的。SYSTEMV的共享内存,是由内核本身的tmpfs实现的。2.不同的调用接口:POSIX的共享内存机制实际上在库过程中以及用户空间的其他部分被展示为完全的文件系统的调用过程,在调用完shm_open之后,需要调用mmap来将tmpfs的文件映射到地址空间,接着
7、就可以操作这个文件了,需要注意的是,别的进程也可以操作这个文件,因此这个文件其实就是共享内存。SYSTEMV的共享内存,内核直接实现了shmget/at系统调用,虽然最终也是靠tmpfs来实现的,但是接口设计上和posix完全不同。POSIX旨在提供所有系统都一致的接口。SYSTEMV只在于实现自己的逻辑,共享内存其实只是sysv中ipc的一部分,最终的管理数据结构也是ipc的而不是共享内存的3.不同的消退方式:不管是SYSTEMV的还是POSIX的共享内存,在主机重启之后都不复存在,因为数据是都保存在物理存储器上或交换分区中。他们不同的是:POSIX是以用户空间
8、文件实现的
此文档下载收益归作者所有