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

这篇具有很好参考价值的文章主要介绍了操作系统(2.6)--进程通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

一、进程通信的流程

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

1.共享存储器系统

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

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

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

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

  • 向操作系统申请共享存储区
  • 挂接共享存储区到进程的存储空间
  • 进程互斥读写存储区
  • 通信结束后归还存储区

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)远程过程调用和远程方法调用

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

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

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

实际上,远程过程调用的主要步骤是:文章来源地址https://www.toymoban.com/news/detail-419362.html

  • (1)本地过程调用者以一般方式调用远程过程在本地关联的客户存根,传递相应的参数,然后将控制权转移给客户存根;
  • (2)客户存根执行,完成包括过程名和调用参数等信息的消息建立,将控制权转移给本地客户进程:
  • (3)本地客户进程完成与服务器的消息传递,将消息发送到远程服务器进程;
  • (4)远程服务器进程接收消息后转入执行,并根据其中的远程过程名找到对应的服务器存根,将消息转给该存根:
  • (5)该服务器存根接到消息后,:由阻塞状态转入执行状态,拆开消息从中取出过程调用的参数,然后以一般方式调用服务器上关联的过程;
  • (6)在服务器端的远程过程运行完毕后,将结果返回给与之关联的服务器存根;
  • (7)该服务器存根获得控制权运行,将结果打包为消息,并将控制权转移给远程服务器进程;
  • (8)远程服务器进程将消息发送回客户端;
  • (9)本地客户进程接收到消息后,根据其中的过程名将消息存入关联的客户存根,再将控制权转移给客户存根:
  • (10)客户存根从消息中取出结果,返回给本地调用者进程,并完成控制权的转移。这样,本地调用者再次获得控制权,并且得到了所需的数据,得以继续运行。

到了这里,关于操作系统(2.6)--进程通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 操作系统——MFC实现进程创建和通信2

    我接着上篇博客讲,如果没有构建项目的童鞋请移步到操作系统——MFC实现进程创建和通信1 实现进程通信的方法有很多,我们先用一个比较简单的方法实现一下。 window.postMessage() 方法可以安全地实现跨源通信。通常,对于两个不同页面的脚本,只有当执行它们的页面位于具

    2024年02月07日
    浏览(40)
  • 操作系统进程线程(一)—进程线程协程区别、多进程多线程、进程调度算法、进程线程通信

    定义上 进程: 资源分配和拥有 的基本单位,是调度的基本单位。 运行一个可执行程序会创建一个或者多个进程;进程就是运行起来的程序 线程:程序 执行 基本单位,轻量级进程。 每个进程中都有唯一的主线程 ,主线程和进程是相互依赖的关系。 协程: 用户态 的轻量级

    2024年02月01日
    浏览(55)
  • C++ Linux Web Server 面试基础篇-操作系统(三、进程通信)

    ⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您, 麻烦点个赞 👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三连支持一下呗。👍⭐️❤️ Qt5.9专栏 定期更新Qt的一些项目Demo

    2023年04月22日
    浏览(98)
  • Linux下的系统编程——进程间的通信(九)

    前言:  前面我们已经对进程已经有了一个简单的了解与认识,那么进程间的通信是什么样的呢,什么是父子进程,什么是兄弟进程,没有血缘关系间的进程是如何实现进程通信的,下面让我们一起学习一下什么是进程间的通信吧。 目录 一、进程间通信常用方式 IPC方式:

    2024年02月09日
    浏览(32)
  • Linux--进程间的通信--进程池

    进程间的通信–匿名管道 进程池是一种将多个进程组织起来以执行特定任务的机制 。 它由多个预先创建好的资源进程和一个管理进程组成。这些资源进程被管理进程负责分配和调度,用于处理任务 。 当有新的任务提交时,管理进程会从进程池中取出一个资源进程,将任务

    2024年04月25日
    浏览(35)
  • 【Linux之进程间通信】04.Linux进程间的信号通信

      【Linux之进程间通信】 项目代码获取: https://gitee.com/chenshao777/linux-processes.git (麻烦点个免费的Star哦,您的Star就是我的写作动力!) 04.Linux进程间的信号通信 【目录】   一、进程间信号发送方式   二、进程间信号接收方式   三、进程间信号处理方式 一、进程间信号发

    2024年02月06日
    浏览(41)
  • 操作系统:4、进程管理之进程同步

    上述过程,若并发执行就会出现缓冲区数据出错 “哲学家进餐问题中会发生极端情况,所有哲学家都饿死,也就是所有进程都陷入等待状态” “生产者消费者问题”以及“哲学家进程问题”的根源问题是:彼此相互之间没有通信。 若生产者通知消费者我已经完成一件产品生

    2023年04月26日
    浏览(49)
  • 操作系统(一):进程状态与进程调度

            操作系统作为计算机基础的四大件,系统学习无疑是十分重要的。在这个系列的文章中,荔枝会结合操作系统的知识进行归纳梳理,总结输出博文!下面这篇文章主要介绍的是进程状态和调度,重点是几种调度算法的理解和掌握,希望对正在学习的小伙伴有帮助

    2024年02月05日
    浏览(50)
  • 【操作系统核心概念】进程管理和进程调度

    本文主要讲的是操作系统的一些核心概念, 主要讲解 进程管理和进程调度 的问题, 当然学习完本篇并不会让你能从零打造一个操作系统, 而只是让读者有了对操作系统核心概念的基本认识. 关注收藏, 开始学习吧🧐 操作系统是一组做计算机资源管理的软件的统称 , 其本质上也

    2024年02月12日
    浏览(61)
  • 【操作系统】聊聊不可中断进程和僵尸进程

    当我们输入top命令之后 其中S代表的是当前进程的状态 R (Running 或 Runnable) 进程在CPU的就绪队列中,正在运行或者等待运行。 D (Disk Sleep) 不可中断睡眠,进程正在跟硬件交互,不运行被其他进程或者中断打断。 Z (Zombie) 进程已经结束,但是父进程没有回收资源 (描述符、PID等

    2024年02月07日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包