linux操作系统课件相关附件6739-5.ppt.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux操作系统课件相关附件6739-5.ppt

* 五 进程通信 管道(pipe) 套接字(socket) System V IPC机制 消息队列 信号量 共享内存 1. 共享内存 --原理:允许一个或多个进程通过同时出现在它们的虚拟地址 空间的内存进行通信。该虚拟内存的页面在每一个共 享进程的页表中都有页表条目引用。 --同一块内存的不同形式: 说明:对共享内存的访问通过唯一的共同标志“key”控制,并进行 访问权限检查。 Key:在IPC通信模式下,唯一标识每个IPC对象的名字。 IPC 信号量 消息传递 共享内存 虚拟内存文件 虚拟内存 --共享内存的API 1)shmeget(): 创建一块共享内存。 2)shmat(): 将一块已存在的共享内存映射到一个进程的地址空间。 3)shmdt(): 取消映射(断开连接)。 4)shmctl(): 执行对共享内存的各种控制命令。 1)shmeget()://分配一块共享内存 函数声明: #include sys/ipc.h; //ipc_perm,ipc对象的权限信息 #include sys/shm.h; //shmid_ds,共享内存的结构 int shmget(key_t key, int size, int shmflg); 参数说明: key:共享内存的键值,在ipc对象的数据结构ipc_perm中。 一块已存在的共享内存的键值 0 //如果参数shmflg设置了IPC_CREATE标志,同样创建一块新的共享内存 IPC_PRIVATE //创建一块新的共享内存 取值 size:所需共享内存的最小尺寸(以页为单位)。 shmflg:共享内存属性标志(IPC_CREAT/IPC_EXCL)。 IPC_CREAT:如果共享内存不存在,则创建;否则打开。 IPC_EXCL :不存在共享内存时才建立新的共享内存;否则,产生错误。 返回值:成功,返回共享内存的标识符 不成功,-1,出错原因放在errno中。 新创建共享内存的数据结构:shmid_ds Include/linux/shm.h Struct shmid_ds { struct ipc_perm shm_perm; // 存取权限,在/linux/ipc.h中定义 int shm_segsz; // 共享内存大小 __kernel_time_t shm_atime; // 最后一次连接该共享内存时间 __kernel_time_t shm_dtime; //最后一次断开该共享内存时间 __kernel_time_t shm_ctime; //最后一次更改该共享内存时间 __kernel_ipc_pid_t shm_cpid; // 创建者进程标示符 __kernel_ipc_pid_t shm_lpid; //最后一个操作者进程标示符 unsigned short shm_nattch; // 连接共享内存的进程数 unsigned short shm_unused; // 兼容用 void *shm_unused2; // 备用 void *shm_unused3; //备用 }; 2)shmat()://连接一块共享内存 函数声明: #include sys/types.h; #include sys/shm.h; int *shmat(int shmid, const void *shmaddr, int shmflg); 参数说明: shmid:欲连接的共享内存的标识符。 shmaddr:欲连接的地址。 shmflg:共享内存属性标志(IPC_CREAT,IPC_EXCL等)。 返回值

文档评论(0)

75986597 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档