计算机操作系统-第十三天

简介: 计算机操作系统-第十三天



前言

进程通信(IPC)

概念:进程间通信(Inter-Process Communication,IPC)是指两个进程之间产生数据交互

进程间通信需要依赖于操作系统内核的支持,为什么?

1、进程是分配资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立

2、出于安全性考虑,一个进程不能直接访问另一个进程的地址空间

(你只能登你的QQ但是不能登我的QQ)

进程通信的方法

共享存储

概念:某个进程申请共享存储区,在该区中写入数据,其它进程就可以从中读取存放的数据

注意事项:

1、为避免出错,各个进程对共享空间的访问应该是互斥的,即一个进程在访问共享存储区时其它的进程不能访问

2、共享存储还可以细分为基于数据结构的共享基于存储区的共享

  • 基于数据结构的共享:共享内存空间放什么数据、怎么放都是操作系统规定好的,比如共享空间里只能放一个长度为10的数组,这种共享方式速度慢,限制多,是一种低级通信方式
  • 基于存储区共享:操作系统在内存中划出一片共享内存区,在这里放什么数据,怎么放都是由通信进程控制,拥有高度自治权,这种共享方式速度很快,是一种高级通信方式

消息传递

概念:进程间的数据交换以格式化的信息为单位,进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换,格式化的消息消息头消息尾组成(消息头中包含发送进程ID【谁发】、接受进程ID【谁收】、消息长度等格式化信息,消息尾中包含要传递的具体数据)

直接通信方式

概念:消息发送进程要指明接受进程的ID

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

概念:通过“信箱”间接地通信

特点: 操作系统允许多个进程往同一个信箱send消息,也可以多个进程从一个信箱中receive消息

管道通信

概念:“管道”是一个特殊的共享文件(pipe文件)本质就是在内存中开辟一个大小固定的内存缓冲区

特点:

1、管道中数据的流动是单向的,且先进先出(FIFO,相当于一个队列,只能先读取队头元素,这也是它区别于共享存储的原因,在实际情况下管道其实是一个循环队列,即如果读数据速度小于写数据速度,当后面的空间被填满时,由于前面的数据已经被读取了,所以再写入数据时可以在前面的空出来的地方写数据,需要注意的是此时仍然遵循先进先出的性质,循环队列的队头是在不断变化的)

<夹带私货时间😋>设计循环队列:http://t.csdnimg.cn/9weVt

2、管道只能采用半双工通信(单向传递),某一段时间内只能实现单向的传输,如果要实现全双工通信,则需要设置两个管道

3、各进程要互斥的访问管道(由操作系统实现)

4、管道中的数据可以边读边写:

  • 只要管道未空,读进程就可以从管道读取数据
  • 只要管道未满,写进程就可以往管道写数据

5、 管道中的数据一旦被读出,就彻底消失,因此多个进程读同一个管道时,可能会错乱,对此通常有两种解决方案:

  1. 规定一个管道允许多个写进程,一个读进程(2014年408真题高教社官方答案)
  2. 规定一个管道可以有多个写进程,多个读进程,但系统会让各个读进程轮流从管道中读取数据(Linux操作系统的方案)
  3. 在实际应用过程中第二种方案更适用

本节思维导图

~over~

相关文章
|
7月前
|
存储 Unix Linux
手写操作系统(4)——计算机是如何启动的?BIOS、GRUB、文件系统......
手写操作系统(4)——计算机是如何启动的?BIOS、GRUB、文件系统......
122 1
|
4月前
|
存储 算法 网络协议
了解操作系统的基本原理和常见操作,提高计算机使用效率
了解操作系统的基本原理和常见操作,提高计算机使用效率
48 4
|
5月前
|
Linux 调度
部署02-我们一般接触的是Mos和Wimdows这两款操作系统,很少接触到Linux,操作系统的概述,硬件是由计算机系统中由电子和机械,光电元件所组成的,CPU,内存,硬盘,软件是用户与计算机接口之间
部署02-我们一般接触的是Mos和Wimdows这两款操作系统,很少接触到Linux,操作系统的概述,硬件是由计算机系统中由电子和机械,光电元件所组成的,CPU,内存,硬盘,软件是用户与计算机接口之间
|
6月前
|
运维 安全 Linux
计算机架构“寒武纪爆发”,操作系统进化迸发中国浪潮
计算机架构“寒武纪爆发”,操作系统进化迸发中国浪潮
|
7月前
|
存储 算法 Linux
【计算机操作系统】深入探究CPU,PCB和进程工作原理
【计算机操作系统】深入探究CPU,PCB和进程工作原理
194 1
|
7月前
|
存储 安全 数据处理
【计算机系统组成原理】操作系统处理器深入介绍
【计算机系统组成原理】操作系统处理器深入介绍
|
7月前
|
存储 缓存 安全
【linux基础(八)】计算机体系结构--冯诺依曼系统&操作系统的再理解
【linux基础(八)】计算机体系结构--冯诺依曼系统&操作系统的再理解
|
7月前
|
存储 安全 Unix
计算机的操作系统
计算机的操作系统
48 2
|
7月前
|
安全 Linux Shell
操作系统究竟是什么?在计算机体系中扮演什么角色?
操作系统究竟是什么?在计算机体系中扮演什么角色?
140 0
|
7月前
|
存储 Ubuntu Unix
【Linux】1、操作系统、计算机硬件和软件、Linux 介绍
【Linux】1、操作系统、计算机硬件和软件、Linux 介绍
85 0