嵌入式系统及其实践教程课件09进程与线程及其通信.pptVIP

嵌入式系统及其实践教程课件09进程与线程及其通信.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1)创建共享内存 9.1.5 进程间通信 在上面代码中,key:非0整数;size:以字节为单位指定需要共享的内存容量;shmflg:权限标志,可以与IPC_CREAT做或操作;shmget函数成功时返回一个与key相关的共享内存标识符(非负整数)。调用失败返回-1。 2)映射共享内存 在上面代码中,shm_id是由shmget函数返回的共享内存标识;shm_addr指定共享内存连接到当前进程中的地址位置,通常为空,表示让系统来选择共享内存的地址;shm_flg是一组标志位,通常为0。 调用成功时返回一个指向共享内存第一个字节的指针,如果调用失败返回-1。 3)使用共享内存 可以使用不带缓存的IO函数对共享内存进行能操作 4)撤销映射共享内存操作 将共享内存从当前进程中分离,shmaddr是shmat函数返回的地址指针,调用成功时返回0,失败时返回-1。 5)删除共享内存 9.1.5 进程间通信 shm_id是shmget函数返回的共享内存标识符。command是要采取的操作,有三种操作: IPC_STAT:把shmid_ds结构中的数据设置为共享内存的当前关联值,即用共享内存的当前关联值覆盖shmid_ds的值。 IPC_SET:如果进程有足够的权限,就把共享内存的当前关联值设置为shmid_ds结构中给出的值 IPC_RMID:删除共享内存段 buf是一个结构指针,它指向共享内存模式和访问权限的结构。 shmid_ds结构至少包括以下成员: 9.2 线程 9.2.1 什么是线程 线程是进程中执行运算的最小单位,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一。线程自己基本不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但它可以与同属一个进程的其他线程共享进程所拥有的全部资源。 线程是进程中的一个实体,作为系统调度和分派的基本单位。Linux下的线程看作轻量级进程。 线程包含了表示进程内执行环境必需的信息,其中包括进程中标识线程的线程 ID,一组寄存器值、栈、调度优先级和策略、信号屏蔽子,errno 变量以及线程私有数据。进程的所有信息对该进程的所有线程都是共享的,包括可执行的程序文本,程序的全局内存和堆内存、栈以及文件描述符。 9.2.2 进程与线程对比 进程和线程是两个相对的概念,通常来说,一个进程可以定义程序的一个实例(Instance)。进程并不执行什么,它只是占据应用程序所使用的地址空间。为了让进程完成一定的工作,进程必须至少占有一个线程,正是这个线程负责包含进程地址空间中的代码。实际上,一个进程可以包含几个线程,它们可以同时执行进程地址空间中的代码。为了做到这一点,每个线程有自己的一组CPU寄存器和堆栈。每个进程中至少有 一个线程在执行其地址空间中的代码。如果没有线程执行进程地址空间中的代码,进程也就没有继续存在的理由,系统将自动清除进程及其地址空间。 在线程中(相对与进程而言),线程是一个更加接近执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。这两者都可以提高程序的并发度,提高程序运行的效率和响应的时间。线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正好相反。根本的区别就一点:用多进程每个进程有自己的地址空间,线程则共享地址空间,在速度方面:线程产生的速度快,线程间的通讯快,切换快等,因为他们在同一地址空间内。在资源利用率方面:线程的资源率比较好也是因为他们在同一地址空间内。 在同步方面:线程使用公共变量/内存时需要使用同步机制,因为他们在同一地址空间内进程中:子进程是父进程的复制品,子进程获得父进程数据空间、堆和栈的复制品。 9.2.2 进程与线程对比 线程和进程的区别与联系: 1、进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程是资源分配的最小单元;线程是CPU调度和分派的基本单位(程序执行的最小单位)。 2、进程有独立的地址空间,线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间。 3、一个进程崩溃后,在保护模式下不会对其它进程产生影响,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮。 4、在进程切换时,耗费资源较大,效率要差一些;但是线程耗费资源少,效率高。 5、线程的划分尺度小于进程,使得多线程程序的并发性高。 6、线程在执行过程中与进程也是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的

您可能关注的文档

文档评论(0)

139****1983 + 关注
实名认证
文档贡献者

副教授、一级建造师持证人

一线教师。

认证主体孙**
领域认证该用户于2023年06月21日上传了副教授、一级建造师

1亿VIP精品文档

相关文档

相关课程推荐