操作系统 第二章 进程管理精品.ppt

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

哲学家问题分析 线程的属性 (1) 轻型实体。 (2) 独立调度和分派的基本单位。 (3) 可并发执行。 (4) 共享进程资源。 调度性:线程作为调度的基本单位,同进程中线程切换不引起进程切换,当不同进程的线程切换才引起进程切换;进程作为拥有资源的基本单位。 并发性:一个进程间的多个线程可并发。 拥有资源:线程仅拥有隶属于进程的资源;进程是拥有资源的独立单位。 系统开销:进程大;线程小。 §2.7 进程通信 一、进程通信的概念 1、进程通信:进程间的信息交换。 进程之间,需要交换一定数量的信息,以便协调一致共同完成指定的任务。 进程之间交换的信息量可多可少,多则成百上千个数据,少则仅仅是一个状态或一个信号。 低级通信方式:传送一个或几个字节的控制信息。 (锁机制和信号量机制) 高级通信方式:以较高的效率,交换大批量的数据。 (消息缓冲机制和信箱机制) 2、进程通信方式: 3、进程通信的类型 (1)共享存储器系统 基于共享数据结构的通信方式 基于共享存储区的通信方式 (2)消息传递系统 直接通信方式 间接通信方式 (3)管道(Pipe)通信 所谓“管道”,是指用于连接一个读进程和一个写进程以实现他们之间通信的一个共享文件,又名pipe文件。 (1)共享存储器系统 基于共享数据结构的通信方式 基于共享存储区的通信方式 缺点:效率低;对程序员不透明;传送少量数据; 共 享 存 储 区 进程:读、写 公用数据结构 生产者 消费者 有界缓冲区 程序员:设置缓冲区,负责进程同步 OS:提供共享存储器 进程 分区 指定 连接 申请 本进程 读写 进关程键程字 (2)消息传递系统 进程间的数据交换以消息(message)或报文为单位,程序员利用一组通信命令(原语)来实现通信,可分为直接通信和间接通信两种方式。 优点:大量数据传送;隐藏通讯的实现细节。 (3)管道(Pipe)通信 也称共享文件方式,基于文件系统,利用一个打开的共享文件连接两个相互通信的进程,文件作为缓冲传输介质。 发送进程 接收进程 字符流方式写入读出;先进先出顺序。 二、消息缓冲通信(直接通信) 消息:进程之间相互传送的,有结构的一组信息。 消息缓冲通信:是一种直接通信方式,即一个进程直接发送一个消息给接收进程,企图发送或接收消息的每个进程必须指出消息发给谁,或者从谁那里接收消息。是一种可直接以较高的效率传递较多数据的信息交换方式,被广泛应用于本地进程之间的通信。 每当发送进程欲发送消息时,便形成一个消息缓冲区,其结构如下: Sptr:指向发送进程的指针(或sender:发送进程的标识符); Npty:指向消息队列中下一个消息缓冲区的指针; Size:消息长度; Text:消息正文; 消息缓冲区是内存中的一个区域,其中可以存放一条消息。发送进程可以把消息填写到消息缓冲区中,并把该消息缓冲区插入到接收进程的消息链上,以待接收进程进行加工处理。 为此,PCB中还应该增加如下的数据项: 1) hpty :消息队列头指针,初值为空。 由于接收进程可能会收到几个进程发来的消息,故应将所有的消息缓冲区链成一个队列,其队头通过在接收进程PCB中设置队首指针hpty来指出。 2) mutex :消息队列互斥信号量,初值为1。 消息队列属于临界资源,故在PCB中设置了互斥信号量mutex,每当对消息链操作之前和结束操作之后,应在mutex上分别执行P操作和V操作。 3) Si :消息队列同步计数信号量。初值为0。 当发送进程发来一个消息,在此信号量上执行V(Si);而当接收进程从消息队列上欲取走一个消息时,先对信号量执行P(Si),如果有消息,则从消息链中取走hpty所指出的第一个消息。 发送进程在发送消息之前,应先在自己的内存空间设置一个发送区,把欲发送的消息正文以及接收进程标识符id和消息长度填入其中,然后用发送原语构造消息并把消息发送出去; 接收进程在接收消息之前,在本进程的内存空间中设置一个接收区,然后用接收原语接收消息。 receive(n,sid); send(m); 指向发送进程 (1)发送原语:send(m) m为发送区开始地址。 功能:把消息从发送区复制到消息缓冲区,并将它挂到接收进程消息队列的末尾。如果该接收者正因等待消息而处于等待状态,则唤醒该进程。 (2)接收原语:receive(n,sid) n为接收区开始地址,sid为发送进程的id号。 功能:查看消息链中计数信号量来获知有待处理的消息否?若无,则接收进程插入消息链的等待队列;若有消息,

文档评论(0)

挑战不可能 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档