网站大量收购独家精品文档,联系QQ:2885784924

《智能产品》 课件 第4章智能产品中进程间数据共享.pptx

《智能产品》 课件 第4章智能产品中进程间数据共享.pptx

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

智能产品第四章智能产品中进程间数据共享 1

4智能产品中进程间数据共享2进程间通信的基本原理和方法数据共享的实现和调试智能产品中进程间数据共享的应用案例

34.1进程间通信概述定义:进程是计算机系统分配资源的最小单位,每个进程有独立的用户地址空间,进程间数据交换需要通过内核。方式:客户端请求数据,服务器响应请求。可用于同一台计算机或网络连接的不同计算机。

44.1进程间通信概述常用的进程间通信方法:管道/匿名管道有名管道信号消息队列共享内存信号量套接字

54.1进程间通信概述管道/匿名管道内核缓冲区,以先进先出的方式从缓冲区存取数据。半双工,数据只能单向流动。管道对于管道两端的进程而言,就是一个文件,但只存在于内存中。但它不是普通的文件。它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。

64.1进程间通信概述有名管道提供路径名,存在于文件系统中,允许无亲缘关系的进程通信。严格遵循先进先出,读写数据只能从文件开始到末尾。

74.1进程间通信概述信号用于进程间通信或操作的机制,可以在任何时候发给某一进程。常见信号包括SIGHUP、SIGINT、SIGKILL。

84.1进程间通信概述消息队列存放在内核中的消息链表。不同于管道,消息队列存放在内核中,允许随机查询消息,比FIFO更有优势。

94.1进程间通信概述共享内存进程通过访问共享空间进行数据通信。速度最快的进程间通信方式,需要与信号量或锁机制配合使用。内存共享示意图

104.1进程间通信概述信号量用于多进程对共享数据的访问,进程间同步。操作包括创建信号量、等待信号量、挂出信号量。

114.1进程间通信概述套接字套接字是一种通信机制,支持TCP/IP网络通信。它的通信特性由域、端口号、协议类型。端口号:每一个基于TCP/IP网络通讯的程序(进程)都被赋予了唯一的端口和端口号。域:它指定套接字通信中使用的网络介质协议类型:包含了流套接字、数据报套接字和原始套接字

124.2数据共享的实现和调试数据共享实现技术:(1)通过文件,这种方式需要使用read、write等系统调用,具有效率低下、速度慢等缺点。(2)通过内核。这种方式需要进行用户、内核的内存拷贝,具有开销大、效率低、速度慢等缺点。(3)通过共享内存,这种方式具有读写速度快、无需数据拷贝、系统调用等操作、效率高等优点。

134.2数据共享的实现和调试共享内存实现原理每个进程有独立的虚拟地址空间,MMU将其映射到不同的物理地址。共享内存通过将一块物理内存映射到多个进程的虚拟地址空间,实现进程间数据共享。

144.2数据共享的实现和调试共享内存管理数据结构内核为每一个共享内存段维护着一个特殊的数据结构,这就是shmid_ds,这个结构在include/linux/shm.h中定义。shmid_ds数据结构定义如下:structshmidds{?structipc_perm?shm_perm;/*所有者和权限*/size_tshm_segsz;/*段大小,以字节为单位*/?timetshm_atime;/*最后挂接时间*/?time_tshm_dtime;/*最后取出时间*/?time_tshm_ctime;/*最后修改时间*/?pid_t shm_cpid;/*建立者的PID*/?pid_t shm_lpid;/*最后调用函数shmat()/shmdt()*/?shmatt_tshm_nattch;/*现在挂接的数量*/}

154.2数据共享的实现和调试共享内存实现示例本节提供了一个简易的共享内存实现示例(P62),其中Client.c负责将数据“你好,共享内存!”写入共享内存,而Server.c负责从共享内存中读取并打印数据,以此实现进程间的通信。Server.c文件运行结果Client.c文件运行结果

164.2数据共享的实现和调试数据共享调试方法在智能产品开发中,数据共享是实现不同进程间信息交换与协同工作的关键技术。然而,数据共享过程中可能会遇到各种问题,这些问题如果不及时解决,将会对产品的性能和稳定性产生严重影响。下面将介绍数据共享过程中可能出现的问题以及相应的调试方法。

174.2数据共享的实现和调试(1)竞态条件(RaceConditions)?当多个进程同时访问共享数据,并且对数据的操作顺序影响最终结果时,可能会导致竞态条件。?使用互斥锁(mutex)或其他同步机制来确保对共享数据的访问是原子性的,避免多个进程同

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档