软件技术基础 教学课件 作者 张选芳 傅茂洺 王欣 计算机软件技术基础(邮电)2-3.pptVIP

软件技术基础 教学课件 作者 张选芳 傅茂洺 王欣 计算机软件技术基础(邮电)2-3.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
?管道 最后就是通过管道实现进程间数据通信。 ?管道的定义 管道是进程用来通讯的共享内存区域。 一个进程往管道中写入信息,而其它的进程可以从管道中读出信息。如其名,管道是进程间数据交流的通道。 ? 管道的类型 管道的类型有两种: ?匿名管道 匿名管道是不命名的,它最初用于在本地系统中父进程与它启动的子进程之间的通信。 ?命名管道。 命名管道更高级,它由一个名字来标识,以使客户端和服务端应用程序可以通过它进行彼此通信。而且,Win32命名管道甚至可以在不同系统的进程间使用,这使它成为许多客户/服务器应用程序的通信的理想选择。 讲课内容、方法、步骤 就像水管连接两个地方并输送水一样,软件的管道连接两个进程并输送数据。一个一个管道一旦被建立,它就可以象文件一样被访问,并且可以使用许多与文件操作类似的函数。 ?匿名管道只能单向传送数据, ?而命名管道可以双向传送。 命名管道还可以将数据集合到称为消息的数据块中。命名管道甚至具有通过网络连接多进程的能力。但遗憾的是Windows9X不支持创建命名管道,它只能在WindowsNT系列(如Windows?NT,Windows?2000,Windows?XP)的操作系统上创建。 ?管道可以以比特流形式传送数据。 讲课内容、方法、步骤 发送进程 接收进程 字符流方式写入读出 先进先出顺序 2.2.10 死锁 计算机系统中的各种硬件和软件资源都是由操作系统进行管理和分配, 尤其在多道程序设计系统中,由于多进程的并发执行,虽然提高了资源的利用率, 但在实际使用时,如果处理不当就可能使整个系统陷于瘫痪, 出现“死锁”现象。 ?死锁 所谓死锁,是指两个或两个以上的进程,因竞争系统的共享资源,而产止无止境地互相等待的现象。我们称这些进程处于互锁状态,也即死锁。 或者说,在某个时刻,有一组进程,其中每一个进程都占有其他进程所需要的资源,但各进程又不能放弃自己占有的资源,则该组进程被死锁。图2-13描述了四辆汽车争夺十字路口资源的情况,这虽然是生活中的一个例子,但形象的说明了死锁这种现象。 讲课内容、方法、步骤 ?产生死锁的根本原因 产生死锁的根本原因在于系统提供的资源个数少于并发进程所要求的该类资源数。 ?产生死锁的必要条件 从死锁的概念出发,我们可以得到产生死锁的必要条件: (1) 互斥条件。进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其他进程请求该资源,则请求者只能等待,直到占有该资源的进程用完释放。 (2) 不剥夺条件。进程所获得的资源在未使用完毕之前,不能被其它进程强行剥夺,而只能由占有该资源的进程自己释放。 讲课内容、方法、步骤 ? 记录型信号量机制 整型信号量机制中的P操作,只要信号量s=0,就会不断测试,进程处于“忙式等待” 。后来对整型信号量进行了扩充,增加了一个等待s信号量所代表资源的等待进程的队列,以实现让权等待。这就是下面要介绍的记录型信号量机制。记录型信号量和P操作原语和V操作原语的定义修改如下: ? P(s):将信号量s减去l,若结果小于0,则调用P(s)的进程被置成等待信号量s的状态。 ? V(s):将信号量s加1,若结果不大于0,则释放一个等待信号量s的进程。 ?记录型信号量的数据结构和P操作、V操作的不可中断过程描述如下: 讲课内容、方法、步骤 ?记录型信号量的数据结构和P操作、V操作的不可中断过程描述如下: struct semaphore { int value; struct semaphore *sp; } void p(struct semaphore s) { s .value= s.value – 1; /* 把信号量减去1 */ if (s .value 0) W(s); /* 若信号量小于0,则执行P(s)的进程 调用W(s) 进行自我封锁,被置成等 待信号量s的状态,进入信号量队列Q*/ } 讲课内容、方法、步骤 void v(struct semaphore s) { s .value= s.value + 1; /* 把信号量加1 */

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档