嵌入式系中线程、信号、管道.ppt

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

8)写管道进程继续向管道写入数据(当写管道操作次数执 行完后,写管道进程的时间片还没有完,所以还要继续 进行写管道操作); 9)写管道进程已将管道空间写满(在写管道进程工作的过 程中,一定会发生时钟中断,而时钟中断仅仅是削减了 它的时间片,只要时间片不被削减为0,它就会继续执行, 直到写管道进程把管道写满为止); 10)写管道进程挂起; 11)读管道进程从管道中读取数据; 12)读管道进程继续执行,不断从管道中读出数据(当读管 道 操作次数执行完后,读管道进程的时间片还没有完, 所以还要继续进行读管道操作); 13)读管道进程执行中发生时钟中断; 14)读管道进程执行中再次发生时钟中断,读管道时间片为0; 15)读管道进程切换到写管道进程执行; 以上是管道操作的全过程,系统是遵循如下原则对管道进行组织管理和协调的: 对于读管道操作,如果管道中有数据,它就可以读数据,如果没有数据,系统就将其挂起。 对于写管道操作,如果管道中有空间,它就可以写入数据,如果没有空间,系统就将其挂起。 4.3 匿名管道与有名管道的区别: 匿名管道 ? 在系统中是没有实名的(是看不到的),只是进程的一种资源(属于文件系统),会随着进程的结束而被系统清除; ? 主要特性 * 数据只能在一个方向上流动(其实是单工) * 只能在具有公共祖先的进程间通信(如父子进程、兄弟进程) 有名管道 * 匿名管道只能在父子进程或兄弟进程间通信,而使用FIFO可以实现无关进程间的数据传输(文件更持久稳定) 。 *匿名管道是临时对象,而FIFO则是文件系统的真正实体。 THANK YOU! 嵌入式系统 27.嵌入式系统中线程、信号、管道 一、多道程序技术 为了提高计算机系统中各种资源的利用率, 现代操作系统广泛采用多道程序技术(multi- programming),使多个程序同时在系统中存 在并运行。 CPU I/O 单道程序: 多道程序: CPU I/O 作业甲(红黄) 作业乙(蓝绿) 在多道程序系统中,各个程序之间是并发执行的,共享系统资源。CPU需要在各个运行的程序之间来回地切换,这样的话,要想描述这些多道的并发活动过程就变得很困难。为此,操作系统设计者提出了进程的概念。 二、进程和线程 2.1 什么是进程(任务)? A process = a program in execution 是可并发执行的、具有独立功能的程序在一个数据集合上的运行过程,是操作系统进行资源分配和保护的基本单位。一个进程可以简单地认为是一个程序在系统内的唯一执行。 Linux中,进程具有独立的权限与职责。如果系统中某个进程崩溃,它不会影响到其余的进程。 每个进程运行在其各自的虚拟地址空间中,进程之间可以通过由内核控制的机制相互通讯。 一个进程应该包括: 程序的代码; 程序的数据; PC中的值,用来指示下一条将运行的指令; 一组通用的寄存器的当前值,堆、栈; 一组系统资源(如打开的文件) 总之,进程包含了正在运行的一个程序的所有状态信息。 特点: 动态性:程序的运行状态在变,PC、寄 存器、堆和栈等; 并发性:从宏观上看各进程是同时独立运行的 独立性:是一个独立的实体,是计算机系统资源的使用单位。 每个进程都有“自己”的PC和内部状态,运行时独 立于其他的进程; 异步性:多个进程的执行次序互不相关 Process ≠ Program 程序=代码/命令 进程=程序+运行状态 main( ) { ….. } A( ) { ….. } PROGRAM main( ) { ….. } A( ) { ….. } PROCESS Stack Registers,PC 2.2 什么是线程? 自从60年代提出进程概念以来,在操作系统中一直都是以进程作为独立运行的基本单位,直到80年代中期,人们又提出了更小的能独立运行的基本单位 ?? 线程。 2.3 为什么提出线程? 【案例】编写一个MP3播放软件。核心功能模块有三个:(1)从MP3音频文件当中读取数据;(2)对数据进行解压缩;(3)把解压缩后的音频数据播放出来。 main( ) { while(TRUE) { Read( ); Decomp

文档评论(0)

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

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

1亿VIP精品文档

相关文档