嵌入式Linux应用开发编程基础教案任务12:共享内存及消息队列编程.docxVIP

  • 0
  • 0
  • 约1.63千字
  • 约 3页
  • 2026-02-04 发布于湖南
  • 举报

嵌入式Linux应用开发编程基础教案任务12:共享内存及消息队列编程.docx

长春职业技术学院课程教案首页

No.12

授课题目

任务12:共享内存及消息队列编程

教学单元

学时

2[]4[?]

教学目标

[知识目标]:

1.共享内存;

2.消息队列;

[能力目标]:

1.会使用共享内存编程;

2.会使用消息队列编程;

[素质目标]:

1.培养学生分析及解决问题能力;

2.培养学生具备嵌入式Linux开发的能力;

重点

难点

重点:共享内存、消息队列

难点:共享内存和消息队列通信原理

教学方法

讲授法、演示法、实验法

能力训练

(作业)

教学体会

授课班级

授课时间及地点

年月日(星期)第节,楼室

年月日(星期)第节,楼室

年月日(星期)第节,楼室

年月日(星期)第节,楼室

长春职业技术学院课程教案用纸

教学环节

教学内容

备注

课程导入

复习提问:

Linux进程间通信有哪几种方式?

信号量通信的原理?

什么是PV原语?

宣布本节课的主容:任务12:共享内存及消息队列编程

1.共享内存;●

2.消息队列;●

3.两种操作的原理★

(●为重点内容★为难点内容)

15’

复习提问

讲与听

一、共享内存

共享内存是一种最为高效的进程间通信方式,进程可以直接读写内存,而不需要任何数据的拷贝

为了在多个进程间交换信息,内核专门留出了一块内存区,可以由需要访问的进程将其映射到自己的私有地址空间

进程就可以直接读写这一内存区而不需要进行数据的拷贝,从而大大提高的效率。

由于多个进程共享一段内存,因此也需要依靠某种同步机制,如互斥锁和信号量等

共享内存实现的步骤:

创建共享内存,这里用到的函数是shmget,也就是从内存中获得一段共享内存区域

映射共享内存,也就是把这段创建的共享内存映射到具体的进程空间中去,这里使用的函数是shmat

到这里,就可以使用这段共享内存了,也就是可以使用不带缓冲的I/O读写命令对其进行操作

撤销映射的操作,其函数为shmdt

二、消息队列

消息队列就是一些消息的列表。用户可以在消息队列中添加消息和读取消息等。从这点上看,消息队列具有一定的FIFO特性,但是它可以实现消息的随机查询,比FIFO具有更大的优势。同时,这些消息又是存在于内核中的,由“队列ID”来标识。

消息队列的实现包括创建或打开消息队列、添加消息、读取消息和控制消息队列这四种操作

创建或打开消息队列使用的函数是msgget,这里创建的消息队列的数量会受到系统消息队列数量的限制

添加消息使用的函数是msgsnd函数,它把消息添加到已打开的消息队列末尾

读取消息使用的函数是msgrcv,它把消息从消息队列中取走,与FIFO不同的是,这里可以指定取走某一条消息

控制消息队列使用的函数是msgctl,它可以完成多项功能。

40’

讲授法,演示法

练与做

互动交流

学生实训

实训1:共享内存实验P160

实训2:消息队列实验P165

教师巡视指导,改错。

80’实验法

结与拓

学生总结实验结果。

(1)学生完成习题,各小组阐述相关内容,提问。

(2)教师着重解决普遍存在的问题,答疑;学生反思,整理笔记。

(25分钟)

课堂总结

由学生发言进行总结,之后老师点评:

1.本次课程需要涉及的知识点

2.本次课程需要达到的目标

总结引申

(20分钟)

文档评论(0)

1亿VIP精品文档

相关文档