操作系统(2.6)--进程通信

简介: 基于共享存储区的通信方式。为了传输大量数据,在存储器中划出了一块共享存储区,诸进程可通过对共享存储区中数据的读或写来实现通信。这种通信方式属于高级通信。

进程通信是指进程之间的信息交换。


在进程之间要传送大量数据时,应当利用OS提供的高级通信工具,该工具最主要的特点是:


(1)使用方便。OS隐藏了实现进程通信的具体细节,向用户提供了一组用于实现高级通信的命令(原语),用户可方便地直接利用它实现进程之间的通信。

(2)高效地传送大量数据。用户可直接利用高级通信命令(原语)高效地传送大量的数据。

一、进程通信的流程

高级通信机制可归纳为四大类:共享存储器系统、管道通信系统、消息传递系统以及客户机-服务器系统。


1.共享存储器系统

(1) 基于共享数据结构的通信方式。在这种通信方式中,要求诸进程公用某些数据结构,借以实现诸进程间的信息交换。如在生产者一消费者问题中,就是用有界缓冲区这种数据结构来实现通信的。这种通信方式是低效的,只适于传递相对少量的数据,属于低级通信。


(2) 基于共享存储区的通信方式。为了传输大量数据,在存储器中划出了一块共享存储区,诸进程可通过对共享存储区中数据的读或写来实现通信。这种通信方式属于高级通信。


e8e3946a51e1b52b5cf1e63ad052388a_d061208f21be4ea18821faeda3e22ac4.png


进程利用共享内存储区进行通信时的步骤:


向操作系统申请共享存储区

挂接共享存储区到进程的存储空间

进程互斥读写存储区

通信结束后归还存储区

2.管道通信

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


为了协调双方的通信,管道机制必须提供以下三方面的协调能力:


互斥,

同步,

确定对方是否存在,只有确定了对方已存在时,才能进行通信。

消息传递系统 消息传递系统是当前应用最为广泛的一种进程间的通信机制。在该机制中,进程间的数据交换是以格式化的消息为单位的。


基于消息传递系统的通信方式属于高级通信方式,因其实现方式的不同,可进一步分成两类:


(1)直接通信方式,是指发送进程利用OS所提供的发送原语,直接把消息发送给目标进程;

(2)间接通信方式,是指发送和接收进程,都通过共享中间实体(称为邮箱)的方式进行消息的发送和接收,宗成进程间的通信。

3.客户机-服务器系统

1)套接字(Socket)


基于文件型、基于网络型


socket:一个套接字就是一个通信标识类型的数据结构,它包含了通信目的地地址,通信使用的端口号,通信网络的传输协议,进程所在的网络地址,以及针对客户或服务器程序提供不同系统调用等,是进程通信和网络通信的基本构件。


Socket的功能由系统调用体现主要有:创建socket()、指定本地地址bind()、建立socket连接connect()、愿意接收连接listen ()和接收连接accept()、发送数据send()、sendto() 、sendmsg()、write()、writev ()和接收数据read()、readv() 、recvfrom()、recvmsg()


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


存根:远程过程的一个不同版本,被存于库中


本地客户端:每个能够独立运行的远程过程都拥有一个客户存根。


服务器端:在每个远程进程所在的服务器端,其所对应的实际可执行进程也存在一个服务器存根与之对应。


实际上,远程过程调用的主要步骤是:


(1)本地过程调用者以一般方式调用远程过程在本地关联的客户存根,传递相应的参数,然后将控制权转移给客户存根;

(2)客户存根执行,完成包括过程名和调用参数等信息的消息建立,将控制权转移给本地客户进程:

(3)本地客户进程完成与服务器的消息传递,将消息发送到远程服务器进程;

(4)远程服务器进程接收消息后转入执行,并根据其中的远程过程名找到对应的服务器存根,将消息转给该存根:

(5)该服务器存根接到消息后,:由阻塞状态转入执行状态,拆开消息从中取出过程调用的参数,然后以一般方式调用服务器上关联的过程;

(6)在服务器端的远程过程运行完毕后,将结果返回给与之关联的服务器存根;

(7)该服务器存根获得控制权运行,将结果打包为消息,并将控制权转移给远程服务器进程;

(8)远程服务器进程将消息发送回客户端;

(9)本地客户进程接收到消息后,根据其中的过程名将消息存入关联的客户存根,再将控制权转移给客户存根:

(10)客户存根从消息中取出结果,返回给本地调用者进程,并完成控制权的转移。这样,本地调用者再次获得控制权,并且得到了所需的数据,得以继续运行。

目录
相关文章
|
11天前
|
机器学习/深度学习 算法 调度
深入理解操作系统之进程调度策略
【4月更文挑战第30天】 在多任务操作系统中,进程调度策略是核心组成部分之一,其决定了处理器资源分配的合理性与效率。本文将详细探讨现代操作系统中常见的进程调度算法,包括它们的原理、特点以及适用场景。通过对比分析先来先服务(FCFS)、短作业优先(SJF)以及轮转调度(RR),我们旨在提供一个全面的视角以帮助读者深刻理解不同调度策略对操作系统性能的影响。此外,文章还将讨论如何根据实际需求选择和优化调度算法,以及未来可能的发展趋势。
|
4天前
|
算法 调度 UED
深入理解操作系统的进程调度策略
【5月更文挑战第7天】 在现代计算机系统中,操作系统的核心职责之一是确保CPU资源的有效分配与利用。本文旨在探讨操作系统中的进程调度策略,并分析其对系统性能的影响。我们将从调度的基本概念出发,介绍几种常见的调度算法,如先来先服务、短作业优先和轮转调度等,并对它们的优缺点进行比较。此外,文章还将讨论多级反馈队列调度策略,它结合了多种调度方法的优点,以适应不同类型的工作负载。通过深入分析,本文旨在为读者提供一个清晰的框架,以理解操作系统如何管理并发执行的多个进程,以及这些管理策略如何影响系统的整体效率和响应性。
|
5天前
|
算法 调度
深入理解操作系统:进程管理与调度策略
【5月更文挑战第5天】 在现代计算机系统中,操作系统的核心职能之一是高效地管理计算机资源,尤其是处理多个并发运行的程序(进程)。本文将探讨操作系统中的进程管理机制,重点分析不同的进程调度策略及其对系统性能的影响。我们将从理论和实践的角度出发,比较各种调度算法的优劣,并提出在特定场景下如何选择最合适的调度策略。通过深入剖析进程调度的原理和实现细节,旨在为读者提供全面而深刻的认知框架,以便于更好地理解和优化操作系统的性能。
|
7天前
|
算法 调度 云计算
深入理解操作系统:进程管理与调度策略
【5月更文挑战第4天】本文将深入探讨操作系统中的关键组成部分——进程管理,以及如何通过有效的进程调度策略提升系统性能。我们将剖析进程的概念、状态转换和控制,并详细分析不同的进程调度算法,如先来先服务(FCFS)、短作业优先(SJF)和多级反馈队列(MLFQ)。文章旨在为读者提供一个清晰的框架,以理解操作系统如何处理并发任务,保证系统资源的有效利用和响应性。
|
9天前
|
负载均衡 算法 调度
深入理解操作系统:进程管理与调度策略
【5月更文挑战第2天】 在现代计算环境中,操作系统的核心职能之一是确保系统资源的高效利用和任务的顺畅执行。本文将探讨操作系统中的关键组件——进程管理及其调度策略。通过对进程的概念、生命周期以及调度算法的详细分析,我们旨在揭示操作系统如何协调多个运行中的程序,以实现快速响应和资源优化。文章还将讨论不同类型操作系统(如实时操作系统和通用操作系统)中进程调度策略的差异性及其对系统性能的影响。通过理论与实践相结合的方式,本文为读者提供了一个全面了解操作系统进程管理的平台。
|
9天前
|
负载均衡 算法 大数据
深入理解操作系统:进程管理和调度策略
【5月更文挑战第1天】 在现代操作系统的核心功能中,进程管理与调度策略是确保系统高效、稳定运行的关键。本文旨在深入剖析操作系统中的进程概念、进程状态转换以及进程调度机制。通过对先进先出、最短作业优先和时间片轮转等调度算法的比较分析,我们不仅揭示了它们在资源分配和任务执行中的应用,还讨论了它们在不同场景下的表现和局限性。此外,文章还将探讨多核处理器环境下的调度策略演变,以及未来操作系统在进程管理方面可能面临的挑战。
|
10天前
|
算法 调度
深入理解操作系统中的进程调度策略
【5月更文挑战第1天】在多任务操作系统中,进程调度策略是决定系统性能和响应能力的关键因素。本文将详细探讨现代操作系统中常见的进程调度算法——从简单的先来先服务(FCFS)到复杂的多级反馈队列(MLFQ),以及实时系统中的立即模式和时间片轮转(RR)。我们将分析每种调度策略的工作原理、优势、局限性以及它们如何影响操作系统的整体表现。通过比较不同策略在各种负载场景下的表现,读者将能更好地理解如何为特定应用选择最合适的调度策略。
|
10天前
|
Java 调度 开发者
构建高效微服务架构:后端开发的新趋势深入理解操作系统之进程调度策略
【4月更文挑战第30天】 随着企业数字化转型的不断深入,传统的单体应用逐渐不能满足快速迭代和灵活部署的需求。微服务架构以其高度模块化、独立部署和易于扩展的特性,成为现代后端开发的重要趋势。本文将探讨如何构建一个高效的微服务架构,包括关键的设计原则、技术选型以及可能面临的挑战。
|
10天前
|
安全 算法 网络安全
构筑网络长城:网络安全漏洞解析与防御策略深入理解操作系统:进程管理与调度策略
【4月更文挑战第30天】 在数字化时代,网络安全已成为维护信息完整性、确保数据流通安全和保障用户隐私的关键。本文将深入探讨网络安全的核心问题——安全漏洞,并分享关于加密技术的最新进展以及提升个人和企业安全意识的有效方法。通过对常见网络威胁的剖析,我们旨在提供一套综合性的网络防御策略,以助力读者构建更为坚固的信息安全防线。 【4月更文挑战第30天】 在现代操作系统的核心,进程管理是维持多任务环境稳定的关键。本文将深入探讨操作系统中的进程概念、进程状态转换及进程调度策略。通过分析不同的调度算法,我们将了解操作系统如何平衡各进程的执行,确保系统资源的高效利用和响应时间的最优化。文中不仅剖析了先来先
|
10天前
|
算法 调度
深入理解操作系统:进程管理与调度策略
【4月更文挑战第30天】 在现代计算机系统中,操作系统扮演着至关重要的角色。它不仅负责管理和协调计算机硬件资源,还为应用程序提供了一个稳定、高效的运行环境。本文将深入探讨操作系统中的进程管理机制和调度策略,以帮助读者更好地理解操作系统的工作原理和优化方法。