北京大学计算机专业操作系统第6讲-进程管理.pptVIP

北京大学计算机专业操作系统第6讲-进程管理.ppt

  1. 1、本文档共38页,可阅读全部内容。
  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文档。上传文档
查看更多
北京大学计算机专业操作系统第6讲-进程管理

第三章 进程管理 3.1 进程的概念 3.2 进程的描述 3.3 进程状态及其转换 3.4 进程控制 3.5 进程互斥 3.6 进程同步 3.7 进程通信 3.8 死锁 3.9 线程 3.7 进程通信 进程间通信:传送数据 低级通信 传递控制信息 控制执行速度 一般为一个或几个字节 例如进程间使用信号量、锁 高级通信 大批量数据交换 用于交换信息 3.7.1 通信方式 主从式 主进程可自由使用从进程的资源 从进程的动作受主进程控制 主进程和从进程的关系是固定的 例如父、子进程间通信 会话式 使用进程先得到服务进程的许可,后使用服务 服务进程根据要求提供服务,并自己控制服务 二者通信时有固定连接关系 例如用户进程和磁盘管理进程间的通信 通信方式 消息或邮箱机制 通讯进程之间没有直接的关系 它们之间的通讯是靠缓冲区来实现的 发送进程将消息送到缓冲区 接受进程将缓冲区的消息复制到自己的区域中 共享存储区方式 不必移动数据 发送进程和接收进程共享一个存储区实现通讯 3.7.2 消息缓冲机制 消息缓冲机制 首先由发送进程在自己的内存空间申请一个发送区域,把要发送的信息填写在里面,包括:接受进程的id号、消息大小、消息内容; 填写好之后根据消息大小申请一个缓冲区,并且将发送区的内容一一填写进去; 根据接收进程的id号,获得接收进程pcb的地址,由此获得接收进程的消息队列地址,将填写好的缓冲区链到接收进程的消息队列之中。通知接收进程取消息。 接收进程在消息队列中找到发送者为sid的消息; 从队列中摘下消息,根据消息的长度在自己的工作区申请一个接受区,将消息复制到接收区; 释放缓冲区。 3.7.3 邮箱通信 邮箱包括邮箱头和邮箱体。 邮箱头是关于邮箱的描述,而邮箱体是存放消息的地方。 只要邮箱有至少一个空格,发送进程调用deposit过程就可以向邮箱中发送消息,当邮箱满后,发送进程就等待。 只要邮箱中有消息,接收进程调用remove过程就可以从中取消息,如果是空的,则接收进程就等待。 邮箱通信 只有一个发送进程和一个接收进程的邮箱通信 (进程同步) 初始: 信号量fromnum为邮箱的空格数n 信号量mesnum为消息个数0 deposit(m) remove(m) begin begin local x local x P(fromnum) P(mesnum) 选择空格x 选择满格x 将消息m放入空格x 将满格x中的消息取出 置格x标志为满 置格x标志为空 V(mesnum) V(fromnum) end end 3.7.4 管道通信 Unix 无名管道(逻辑上被看作管道文件) #include stdio.h main() { int x,fd[2]; char s[30]; pipe(fd);//管道是一端只写,一端只读 // fd[0]读出端,fd[1]为写入端 while((x=fork()) = = -1); if(x= =0){//子进程 write(fd[1],”this is an example”,30); exit(0);} else{//父进程 wait(0); read(fd(0),s,30); printf(“%s”,s); } } 3.8 死锁 死锁是两个或两个以上的进程中的每一个,都在等待其中另一个进程释放资源而被阻塞,它们都无法向前推进,称这种现象为死锁现象。 死锁的原因:资源数少于并发进程要求的数量。 死锁的有向图表示 3.8.1 产生死锁的四个必要条件 1.互斥使用:在一段时间内,一个资源只能由一个进程独占使用,若别的进程也要求该资源,则须等待直至其占用者释放; 2.非剥夺性:进程所获得的资源在未使用完之前,不能被其它进程强行夺走,而只能由其自身释

文档评论(0)

yaocen + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档