华东理工815操作系统第8讲剖析

上传人:今*** 文档编号:107758917 上传时间:2019-10-20 格式:PPT 页数:29 大小:496KB
返回 下载 相关 举报
华东理工815操作系统第8讲剖析_第1页
第1页 / 共29页
华东理工815操作系统第8讲剖析_第2页
第2页 / 共29页
华东理工815操作系统第8讲剖析_第3页
第3页 / 共29页
华东理工815操作系统第8讲剖析_第4页
第4页 / 共29页
华东理工815操作系统第8讲剖析_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《华东理工815操作系统第8讲剖析》由会员分享,可在线阅读,更多相关《华东理工815操作系统第8讲剖析(29页珍藏版)》请在金锄头文库上搜索。

1、2.5 进程通信高级通信(1),一、进程通信的类型 进程通信是指进程之间的信息交换。根据所交换的信息量的多少分为: 低级通信 进程之间交换的信息量较少且效率低。如进程同步和互斥。 高级通信 进程之间交换的信息量较多且效率高。又分为:,2.5 进程通信高级通信(2),共享存储器系统 指进程之间通过对共享某些数据结构或共享存储区读写来交换数据。 消息传递系统 指进程间的通信以消息为单位,程序员可通过通信原语实现通信,按其实现方式不同可分为: 直接通信方式 发送进程直接把消息发送给接收进程。 间接通信方式 发送进程把消息发送到某个中间实体(信箱),接收进程从中取得消息。,2.5 进程通信高级通信(3

2、),管道通信系统 发送进程(写进程)以字符流形式将大量数据送入管道(管道:用于连接读进程和写进程以实现它们之间通信的共享文件),接收进程(读进程)从管道接收数据。,一、共享存储器系统,相互通信的进程通过共享数据结构和存储区进行通信,因而可进一步分为: 基于共享数据结构的通信方式(低效,只适于传递少量数据) 基于共享存储区的通信方式。为了传送大量数据,在存储区中划出一块共享存储区,各个进程可通过对共享存储区进行读或写数据实现通信。,二、消息传递系统 -直接通信方式(消息缓冲通信)(1),发送进程利用OS所提供的发送命令,直接把消息发送给接收进程。 要求:发送进程和接收进程都以显式方式提供对方的标

3、识符。 系统提供的两条通信原语: Send(Receiver,message);发送一个消息给接收进程; Receive(Sender,message);接收Sender发来的消息;,二、消息传递系统 -直接通信方式(消息缓冲通信)(2),生产者-消费者问题的解决 repeat . . . Produce an item in nextp; . . . Send(consumer,nextp); until false;,repeat . . . Receive(producer,nextc); . . . consume the item in nextc; until false;,二、消

4、息传递系统 -间接通信方式(信箱通信)(1),发送进程把消息发送到某个中间实体(信箱),接收进程从中取得消息。 系统提供的若干条原语 信箱创建和撤消原语 两条通信原语 Send(mailbox,message) 将一个消息发送给指定信箱; Receive(mailbox,message) 从指定信箱中接收一个消息; 信箱的分类:私用信箱(进程为自己创建)、公用信箱(操作系统创建)、共享信箱(由某进程创建,指明是共享的),二、消息传递系统 -间接通信方式(信箱通信)(2),在利用信箱通信时,在发送进程和接收进程之间,存在着四种关系: 一对一关系:即可以为发送进程和接收进程建立一条专用的通信链路;

5、 多对一关系:允许提供服务的进程与多个用户进程进行交互,也称客户/服务器交互; 一对多关系:允许一个发送进程与多个接收进程交互,使发送进程用广播的形式,发送消息; 多对多关系:允许建立一个公用信箱,让多个进程都能向信箱投递消息,也可取走属于自己的消息。,三、消息传递系统实现中的若干问题(1),通信链路 建立通信链路(显式建立链路、隐式建立链路) 通信链路的连接方法(点-点、多点) 通信方式(单向、双向) 通信链路的容量(无容量、有容量),三、消息传递系统实现中的若干问题(2),消息格式 消息头和消息正文 进程同步方式 发送进程阻塞,接收进程阻塞(紧密同步,无缓冲) 发送进程不阻塞,接收进程阻塞

6、(应用最广) 发送进程和接收进程均不阻塞(较常见,消息队列),四、消息缓冲队列通信机制(1),消息缓冲区 Type message buffer=record sender:发送消息的进程名或标识符 size:发送的消息长度 text:发送的消息正文 next-ptr:指向下一个消息缓冲区的指针 end 在进程的PCB中涉及通信的数据结构 mq:消息队列队首指针 mutex:消息队列互斥信号量, 初值为1 sm:表示接收进程消息队列上消息的个数,初值为0,是控制收发进程同步的信号量,四、消息缓冲队列通信机制(2),发送原语send 申请一个消息缓冲区,把发送区内容复制到这个缓冲区中;找到接收进

7、程的PCB,执行互斥操作P(mutex) ;把缓冲区挂到接收进程消息队列的尾部,执行V(mutex),然后执行V(sm) ,即消息数加1; 接收原语 receive 执行P(sm),查看是否有信件;执行互斥操作P(mutex) ,从消息队列中摘下第一个消息,执行V(mutex) ;把消息缓冲区内容复制到接收区,释放消息缓冲区,四、消息缓冲队列通信机制(3),2.6 线程(1),20世纪80年代中期,出现了比进程更小的能独立运行的基本单位-线程 线程的引入 引入进程的目的 使多个程序并发执行 改善资源利用率,提高系统吞吐量,2.6 线程(2),引入线程的目的 减少程序并发执行时所付出的时空开销

8、使操作系统具有更好的并发性 从进程的两个基本属性(拥有资源的独立单位、可独立调度和分派的基本单位)来进一步说明引入线程的目的,一、线程的基本概念(线程的定义),线程的定义 线程是进程中的一个实体,是被系统独立调度和分派的基本单位。线程基本上自己不拥有系统资源,只拥有少部分在运行中必不可少的资源,但它可与同属一个进程中的其它线程共享进程所拥有的全部资源。,一、线程的基本概念(线程的定义),一个线程可以创建和撤消另一个线程 同一个进程中的多个线程可以并发地执行 当一个线程改变了存储器中的一个数据项时,在其它线程访问这一项时它们能够看到变化后的结果 如果一个线程为读操作打开一个文件时,同一个进程中的

9、其它线程也能够从该文件中读。,一、线程的基本概念(线程的属性),线程的属性 线程是轻型实体。基本上不拥有系统资源,只有一点必不可少的、能保证独立运行的资源。 线程是独立调度和分派的基本单位。 可并发执行。一个进程中的多个线程可并发执行;不同进程中的线程也能并发执行。 共享进程资源。同一进程中的各个线程,都可以共享该进程所拥有的资源。,一、线程的基本概念(线程和进程的比较),能并发执行,提高资源的利用率和系统吞吐量.,提高并发执行的程度,进一步提高资源的利用率和系统吞吐量.,较低,较高,资源拥有的基本单位进程 独立调度/分派的基本单位进程,资源拥有的基本单位进程 独立调度/分派的基本单位线程,就

10、绪; 执行;等待,就绪;执行;等待,资源拥有的基本单位进程,资源拥有的基本单位进程,创建/撤消/切换时空开销较大,创建/撤消/切换时空开销较小,创建,撤消,切换,创建,撤消,切换,进程控制块PCB,进程控制块PCB,线程控制块TCB,单进程单线程;单进程多线程;多进程单线程;多进程多线程,一、线程的基本概念(线程和进程的比较),Process is an infrastructure in which execution takes place (address space + resources) Thread is a program in execution within a proce

11、ss context each thread has its own stack,一、线程的基本概念(线程和进程的比较),二、多线程(1),指OS支持在一个进程中执行多个线程的能力 传统的每个进程中只有一个线程在执行 MS-DOS是支持单用户进程和单线程的OS UNIX支持多用户进程,但只支持每个进程一个线程(即多进程单线程) 单进程多线程的例子:Java运行环境 多进程多线程的例子:Windows 2000,二、多线程(2),多线程OS中进程的属性 作为系统资源分配的单位 可包括多个线程。至少包括一个线程,这些线程可并发执行。OS中的所有线程都只能属于某一个特定的进程 进程不是一个可执行的实

12、体,线程是作为独立运行的基本单位,三、线程间的同步(1),互斥锁 比较简单的、用于实现线程间对资源互斥访问的机制 条件变量 为避免互斥锁造成的死锁问题,在创建互斥锁时就联系着一个条件变量 单纯的互斥锁用于短期锁定,用来保证互斥进入CS 条件变量用于线程的长期等待,直到所等资源可用,三、线程间的同步(2),信号量机制 私用信号量(属于特定的进程所有,OS不知其存在) 公用信号量(系统信号量) 多读、单写锁,四、线程的实现方式(1),内核支持线程(KST-KernelSupported Threads) 如Macintosh和OS/2操作系统 用户级线程(ULT-UserLevelThreads) 如一些数据库管理系统(如Infomix) 组合方式 把ULT和KST两种方式进行组合,提供了组合方式ULT/KST线程 如Solaris操作系统,四、线程的实现方式(2),四、线程的实现方式(3),五、Solaris OS 中的线程,Solaris 2:是UNIX的一种版本,92年以前仅支持传统的单线程的重型进程,现在已发展为可支持用户级、内核/核心级线程,对称多处理器和实时调度的OS。,用户级线程,轻型进程,内核级线程,进程,内核,第8讲作业,P83页:第33-43题,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号