【操作系统】2.1.4 进程通信

简介: 【操作系统】2.1.4 进程通信

@[TOC]

1. 什么是进程通信?

:star:进程通信:进程通信就是指进程之间的信息交流。进程时分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。

:microphone:每个进程都是独立的,不可能让进程之间随意就可以读取信息(乱闯民宅是犯法的),如果随机读取了那还得了,你的信息都要被泄露。所以为了保证安全,一个进程不能直接访问另一个进程的内存地址空间。但是进程直接交换信息也是必要的(比如用QQ音乐的登录时,如果你已经登录了qq,那么就会获取到你的QQ信息,就可以直接点击登录了)。

image-20220722114309814

2.共享存储

:star: 共享空间:为了实现两个进程之间的通信,操作系统会在内存中开辟一块内存空间供两个进程共同使用。但是两个进程对共享空间的访问必须是互斥的(我这边还在更改信息,你那边就要读信息,拿到的肯定是错误的信息啊,所以为了正确性,必须要保证互斥)

  • 基于数据结构的共享:比如共享空间里只能放一个长度为10的数字,这种共享方式速度慢,限制多,是一种低级通信方式。
  • 基于存储区的共享:在内存中开辟一块共享存储区,数据的形式、存放位置都由进程控制,而不是操作系统,这种方式速度快,是一种高级通信方式。(没有了限制,当然快啦)

image-20220722115013041

3.管道通信

:star: 管道:是指用于连接读写进程的一个共享文件,其实就是在内存重开辟了一个大小固定的缓冲区。

  • 管道只能采用半双工通信,某一时间段内只能实现单向的传输,如果要实现双向同时通信,则需要设置两个管道
  • 各进程要互斥地访问管道
  • 数据以字符流地形式写入管道,当管道写满时,写进程地write()系统调用就被阻塞,等待读进程将数据取走,当取完时,管道变空,此时都进程的read()系统调用将被阻塞。(写完了才能读,读完了才能写)
  • 管道中的数据一旦被读出就无法挽回,所以读进程只能有一个,否则可能会有读错数据的情况。

image-20220722123240453

4. 消息传递

:star: 消息:消息包括消息头和消息体(信件一样),消息头包括了发送进程ID(发送方),接受线程ID(接收方),消息类型,消息长度等格式化信息。消息体包含要发送的信息。

  • 直接通信方式:消息直接挂到接收进程的消息缓冲队列(每个进程都有一个接收消息的消息缓冲队列,每次取消息就从缓冲队列中取)当中去。
  • 间接通信方式:消息发到邮箱中,接收方道邮箱中取消息。

image-20220722123841218

总结

image-20220722123905306

相关文章
|
2天前
|
算法 调度 UED
探索操作系统的心脏——进程管理机制
本文将深入探讨操作系统中至关重要的部分——进程管理机制。我们将从基本概念入手,逐步解析进程的定义、状态及其在操作系统中的角色。随后,我们会详细讨论进程调度算法,包括先来先服务、短作业优先、时间片轮转和优先级调度等,分析它们的优势与应用情景。最后,通过实例展示这些算法在实际系统运作中的运用,帮助读者更好地理解进程管理的核心原理。
|
2天前
|
算法 调度 Python
探索操作系统的内核——一个简单的进程调度示例
【9月更文挑战第17天】在这篇文章中,我们将深入探讨操作系统的核心组件之一——进程调度。通过一个简化版的代码示例,我们将了解进程调度的基本概念、目的和实现方式。无论你是初学者还是有一定基础的学习者,这篇文章都将帮助你更好地理解操作系统中进程调度的原理和实践。
|
5天前
|
算法 调度 Python
深入理解操作系统:进程管理与调度
【9月更文挑战第14天】操作系统是计算机系统的核心,负责管理和控制计算机硬件资源,并提供用户和应用程序所需的服务。本文将介绍操作系统中进程管理与调度的基本概念、原理和实现方法,并通过代码示例进行说明。通过阅读本文,读者可以深入了解操作系统的工作原理和机制,提高对计算机系统的理解和掌握能力。
|
1天前
|
算法 调度 开发者
深入理解操作系统的进程调度策略
【9月更文挑战第18天】本文将通过浅显易懂的方式,带你深入了解和掌握操作系统中一个至关重要的概念——进程调度。我们将从基础概念出发,逐步探讨进程调度的策略、算法及其在操作系统中的实现方式。无论你是初学者还是有一定基础的开发者,这篇文章都将为你打开一扇通往操作系统深层知识的大门,让你对进程调度有更深刻的理解和认识。
9 3
|
5天前
|
开发者 Python
深入浅出操作系统:进程与线程的奥秘
【8月更文挑战第46天】在数字世界的幕后,操作系统扮演着至关重要的角色。本文将揭开进程与线程这两个核心概念的神秘面纱,通过生动的比喻和实际代码示例,带领读者理解它们的定义、区别以及如何在编程中运用这些知识来优化软件的性能。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和实用技巧。
|
1天前
|
消息中间件 Python
深入理解操作系统的进程间通信(IPC)机制
本文将探讨操作系统中的核心概念——进程间通信(IPC),揭示其在系统运作中的重要性及实现方式。通过分析不同类型的IPC手段,如管道、信号、共享内存等,帮助读者更好地理解操作系统的内部工作原理及其在实际应用中的表现。
11 1
|
2天前
|
算法 Linux 调度
探索操作系统的心脏:进程管理与调度策略
【9月更文挑战第17天】在数字世界的复杂迷宫中,操作系统扮演着守护者的角色,确保每一次计算的旅程都顺畅无阻。本文将深入探讨操作系统的核心机制——进程管理与调度,揭示它们如何在微观层面影响宏观的系统性能。从理解进程的本质出发,我们将逐步揭开现代操作系统如何通过精妙的调度策略,平衡多任务处理的效率与公平性。通过深入浅出的语言,即便是技术新手也能领略到这一数字世界奇迹背后的智慧。
|
2天前
|
算法 调度 UED
深入理解操作系统中的进程调度
【9月更文挑战第17天】在操作系统的心脏深处,进程调度机制如同一位精心编排交响乐的指挥,确保系统的和谐与效率。本文将揭开进程调度的神秘面纱,从理论到实践,深入浅出地探讨其背后的原理与实现。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和深刻的见解,让你对操作系统有更全面的理解。让我们一起走进这场技术与智慧的盛宴,探索进程调度的秘密吧!
|
3天前
|
消息中间件 存储 大数据
深入理解操作系统中的进程间通信(IPC)机制
本文旨在探讨操作系统中进程间通信(IPC)的核心机制与其重要性。通过对不同IPC手段如管道、信号、消息队列及共享内存等的详细解析,揭示它们如何高效地促进进程间的信息交换与同步。文章不仅阐述各种IPC技术的实现原理,还探讨了它们在实际系统应用中的场景与优化策略,为系统开发者提供全面而深入的理解。
|
3天前
|
消息中间件 程序员 数据处理
探究操作系统中的进程间通信(IPC)机制及其在现代软件开发中的应用
本文深入探讨了操作系统中的核心概念——进程间通信(IPC),揭示了其在现代软件开发中的关键作用。通过对各种IPC机制如管道、消息队列、共享内存等的详细分析,本文旨在为读者提供一个清晰的理解框架,帮助他们掌握如何在实际应用中有效利用这些技术以实现进程间的协同工作。此外,文章还将探讨IPC在高并发环境下的性能优化策略,以及如何避免常见的IPC编程错误。通过结合理论与实践,本文不仅适合希望深入了解操作系统原理的技术人员阅读,也对那些致力于提升软件质量和开发效率的程序员具有重要参考价值。
9 0