下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
教案第26次课2学时课题进程间通信-共享内存和消息队列教学目的与要求理解共享内核和消息队列的使用方法重点难点重点:共享内核和消息队列的使用方法难点:共享内核和消息队列的使用方法教学进程安排一、复习旧课,引入新课(5分钟)提问:进程间通信方式有哪些提问:SystemV信号量的使用方法引入Linux下共享内存和消息队列的使用方式。二、实施本次课教学内容(知识点明确、突出重/难点、案例和课堂实践环节的设计等)共享内存理论知识(10分钟)1、共享内存基本概念同一进程中的几个线程共享进程的数据段。同一系统中的几个进程可共享某块物理内存。各个进程占有有独立的内存空间,同时它们还可以共享某块内存,类似线程,各个进程对该空间的访问要使用互斥和同步机制。2、共享内存基本过程创建将被共享的内存空间(确定大小)将该空间映射到本进程中进行正常的读写操作解除映射如果需要,删除被共享的内存空间共享内存共享内存进程A进程B3、SystemV共享内存#include<sys/shm.h>创建并得到共享内存段intshmget(key_tkey,size_tsize,intflags);返回值:成功返回共享内存标识符,错误返回-1(置errno)控制共享内存段(包含删除)intshmctl(intshmid,intcmd,structshmid_ds*data);返回值:成功返回0,错误返回-1(置errno)连接共享内存段void*shmat(intshmid,constvoid*shmaddr,intflags);参数shmid:共享内存标识符shmaddr:进程映射内存段的地址,可指定,但一般设为NULL表示由系统安排,安排好的地址作为返回值返回。flags:对该内存的段设置是否只读(SHM_RDONLY),默认是读写。返回值:成功返回进程中该内存段的地址,错误返回-1(置errno)断开共享内存段intshmdt(constvoid*shmaddr);返回值:成功返回0,错误返回-1(置errno)shmat说明共享内存举例shmwrtie.c创建shm并循环输入整数写入shmshmread.c从shm中获得值shmdel.c删除shm注意创建共享内存确定大小时,可以使用结构体方式确定该块内存中数据类型。创建共享内存成功后可以使用ipcs查看创建的结果ipcs是SystemVIPC提供的查看IPC信息的工具删除SystemVIPC还可以使用ipcrm–mshmid删除共享内存4、共享内存案例演示讲解,并让学生运行(30分钟)消息队列理论知识(10分钟)5、消息队列基本概念消息队列也叫报文队列,克服信号最多在接收信号进程的生命周期中有效(随进程持续)的缺点。消息队列在系统重启前一直有效(随内核持续)消息队列,即消息的一个链表,任何进程都可以向消息队列中发送消息(消息类型及正文),其他进程都可以从消息队列中根据类型获取相应的消息。6、消息队列基本过程创建消息队列根据收/发消息类型进行收/发消息如有必要,则删除消息队列说明:消息队列是先进先出的如果类型相同,先发送的消息将先被读出消息被读出则消息队列就减少一个结点。当消息队列满时的写操作或消息队列空时的读操作都会阻塞。消息类型消息类型正文消息类型正文消息类型正文7、SystemV消息队列#include<sys/msg.h>打开或创建消息队列intmsgget(key_tkey,intflags);返回值:成功返回描述符,错误返回-1(置errno)获得或设置消息队列属性intmsgctl(intmsgid,
intcmd,
structmsqid_ds*data);返回值:成功返回0,错误返回-1(置errno)发送消息msgsndintmsgsnd(intmsgid,constvoid*msgp,size_tmsgsize,
intflags);参数:msgid——消息队列标识符msgp—指针,用户自定义缓冲区,可定义成结构体类型,包含两项longmtype;代表消息类型
charmtext[MTEXTSIZE];消息正文msgsize——要发送消息正文的长度mflags——标志,若设置IPC_NOWAIT则不等待消息发出就返回返回值:成功返回0,错误返回-1(置errno)接收消息msgrcvintmsgrcv(intmsgid,void*msgp,size_tmtexsize,longmsgtype,
intflags);参数:与msgsnd类似,但要注意msgtype
>0,只接收指定类型消息的第一个
==0,则不管什么消息类型都返回第一个<0,接收等于或小于其绝对值的最低类型的第一个
如有5、6、17三类,若为-6,则获取类型5的。返回值:成功返回消息正文字节数,错误返回-1(置errno)举例:message.c根据用户输入的命令行参数不同调用不同的函数若可执行文件为a.outa.outsnumxxx向消息队列发送xxx消息,类型为numa.outrnum从消息队列中接收消息类型为numa.outd删除消息队列a.outm修改消息队列的相关信息8、消息队列案例演示讲解,并让学生运行(30分钟)课程小结(5分钟)1、共享内存小结POSIXSystemV共享内存基本过程2、消息队列小结队列,先进先出存放消息,消息包括两类信息消息类型,long消息正文,字符数组满时写或空时读都会阻塞消息队列基本过程课后学习任务布置课后任务:1将教材上关于本节课的例子自己在虚拟机中运行,观察结果。理解好共享内存和消息队列的使用方法。2完成五级项目《共享内
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 煤矿安全生产标准化方案
- 服装店管理手册
- 风电场桩基施工方案
- 2026年人工智能教育领域应用创新分析报告
- 小学五年级数学下册易错点精讲教学设计
- 初中生物七年级上册第一单元《生命世界的探索》单元教学设计
- 博物馆智慧运营平台方案
- 茶道考试题及答案APP
- 阳新县2026年六上数学期末学业水平测试试题含解析
- 2026年大学本科(艺术设计)家具软装设计综合测试题及答案
- 散打教学课件图片
- 具身智能的基础知识
- 井下钻机司机测试考核试卷及答案
- 工艺管理体系课件
- 浙江浙政钉管理办法
- 学堂在线 管理沟通的艺术 期末考试答案
- aeo单证管理制度
- 口腔实习生入科宣教
- 2025年合肥市金鹃传媒科技股份有限公司招聘笔试参考题库含答案解析
- Z3050摇臂钻床使用操作说明书
- 浙江省杭州市萧山区2025年六年级下学期小升初招生数学试卷含解析
评论
0/150
提交评论