Linux教程

操作系统 第二章 进程的描述与控制(6)进程通信

本文主要是介绍操作系统 第二章 进程的描述与控制(6)进程通信,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

计算机操作系统

读书笔记


操作系统 第二章 进程的描述与控制(6)进程通信

  • 计算机操作系统
  • 前言
  • 六、进程通信
    • 进程通信的类型
    • 消息传递通信的实现方法
      • 直接通信方式
      • 信箱通信(间接通信方式)
      • 消息传递系统实现中的若干问题(前文出现)
      • 消息缓冲队列通信机制
  • 总结


前言

在这里插入图片描述

  传统的OS中,为提高资源利用率和系统吞吐量,通常采用多道程序技术,将多道程序同时装入内存,使之并发运行,此时作为资源分配和独立运行的基本单位都是进程,OS的四大特征也都是基于进程而形成的。所以进程是极其重要的,本章将对其进行详细阐述。

  操作系统的主要作用:管理好这些设备,提高它们的利用率和系统的吞吐量。


六、进程通信

  进程通信,指进程间的信息交换。
在这里插入图片描述
在这里插入图片描述

进程通信的类型

1.共享存储器系统(Shared-Memory System)

  • (1) 基于共享数据结构的通信方式。

在这里插入图片描述

  • (2) 基于共享存储区的通信方式。

在这里插入图片描述
2.消息传递系统(Message passing system)
在这里插入图片描述

  • 进程间的数据交换,是以格式化的消息(message)为单位的;

  • 直接利用系统提供的一组通信命令(原语)进行通信;

  • 因其实现方式的不同而进一步分成直接通信方式和间接通信方式两种

3管道(Pipe)通信

  所谓“管道”,是指用于连接一个读进程和一个写进程以实现他们之间通信的一个共享文件,又名 p i p e pipe pipe 文件。

  • 注:管道文件存在于内存中,而非磁盘中。

在这里插入图片描述
  向管道(共享文件)提供输入的发送进程(即写进程),以字符流形式将大量的数据送入管道;而接受管道输出的接收进程(即读进程),则从管道中接收(读)数据。

  由于发送进程和接收进程是利用管道进行通信的,故又称为管道通信

管道机制必须提供以下三方面的协调能力:
1.互斥
  即当一个进程正在对 pipe 执行读/写操作时,其它(另一)进程必须等待。
2.同步
  指当写(输入)进程把一定数量(如 4 KB)的数据写入 p i p e pipe pipe,便去睡眠等待,直到读(输出)进程取走数据后,再把他唤醒。当读进程读一空 p i p e pipe pipe 时,也应睡眠等待,直至写进程将数据写入管道后,才将之唤醒。
3.确定对方是否存在
  只有确定了对方已存在时,才能进行通信。

4. 客户机-服务器系统(Client-Server system)

1) 套接字(Socket)

  • 套接字起源于 20 世纪 70 年代加州大学伯克利分校版本的
    U N I X ( 即 B S D U n i x ) UNIX(即 BSD Unix) UNIX(即BSDUnix),是 U N I X UNIX UNIX 操作系统下的网络通信接口。

  • 起初用在同一台主机上多个应用程序之间的通信(即进程间的通信)。

  • 现在已逐渐成为最流行的网络通信程序接口之一。

2)远程过程调用和远程方法调用

  • 远程过程(函数)调用 RPC(Remote Procedure Call),是一个通信协议,用于通过网络连接的系统。

  • 该协议允许运行于一台主机(本地)系统上的进程调用另一台主机(远程)系统上的进程,而对程序员表现为常规的过程调用,无需额外地为此编程。

  • 如果涉及的软件采用面向对象编程,那么远程过程调用亦可称做远程方法调用。

消息传递通信的实现方法

直接通信方式

  在直接消息传递系统中采用直接通信方式,即发送进程利用 O S OS OS 所提供的发送命令(原语),直接把消息发送给目标进程。

在这里插入图片描述
在这里插入图片描述
1.直接通信原语

  • 对称寻址方式
    收发双方必须以显式方式提供对方的标识符。
send(recever,message);
receive(sender,message);
  • 非对称寻址方式。

接收方可能要接收多个不确定的发送方发送的消息,如打印服务进程,此时接收原语不需指定发送方标识符。

send(recever,message);
receive(id,message);//id 保存接收操作执行后的返回值。

2.消息的格式

  • 定长消息格式

  • 变长的消息格式

3.进程的同步方式

  发送者和接收者都可阻塞或不阻塞,通常有三种组合,一个系统一般实现其中 1~2 种。
① 阻塞 send,阻塞 receive
② 无阻塞 send,阻塞 receive
③ 无阻塞 send,无阻塞 receive
在这里插入图片描述

4.通信链路

  为使在发送进程和接收进程之间能进行通信,必须在两者之间建立一条通信链路。

  • 建立通信链路方式:

  由发送进程在通信之前用显式的“建立连接”命令(原语)请求系统为之建立一条通信链路,在链路使用完后拆除链路。
  发送进程无须明确提出建立链路的请求,利用系统提供的发送命令(原语),系统自动为之建立一条链路。
在这里插入图片描述

在这里插入图片描述

信箱通信(间接通信方式)

在这里插入图片描述

1.信箱的结构
信箱定义为一种数据结构。在逻辑上,可以将其分为两个部分:
   (1) 信箱头
   (2) 信箱体
在这里插入图片描述
3.信箱通信原语

系统为邮箱通信提供了若干条原语,分别用于:

  • 邮箱的创建和撤消。

  • 消息的发送和接收。

send(mailbox,message);
receive(mailbox,message);

3.信箱的类型

  邮箱可由操作系统创建,也可由用户进程创建,创建者是邮箱的拥有者。据此,可把邮箱分为以下三类:
(1) 私用邮箱。
(2) 公用邮箱。
(3) 共享邮箱。在这里插入图片描述

消息传递系统实现中的若干问题(前文出现)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
通信链路的分类:
在这里插入图片描述

消息缓冲队列通信机制

  消息缓冲队列通信机制首先由美国的Hansan提出,并在RC 4000系统上实现,后来被广泛应用于本地进程之间的通信中。在这种通信机制中,发送进程利用 Send 原语将消息直接发送给接收进程;接收进程则利用 Receive 原语接收消息。

1. 消息缓冲队列通信机制中的数据结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.发送原语

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

3.接收原语

在这里插入图片描述
在这里插入图片描述

总结

期待大家和我交流,留言或者私信,一起学习,一起进步!

这篇关于操作系统 第二章 进程的描述与控制(6)进程通信的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!