进程通信方式--管道通信

来自计算思维百科
跳转至: 导航搜索

计算机执行程序其实就是完成一种工作,如果为了完成一个任务需要做很多工作,那么这些工作之间需要进行沟通。完成工作就是执行进程,进行之间相互沟通,就是通信,进程之间如何进行通信的,这就进行通信方式要解决的问题。管道通信系统是应用在许多计算机操作系统中的进程通信方式之一,能有效传达大量数据。

基本概念

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

管道通信系统,就是通过管道连接读进程和写进程,保证消息的传递,读进程从管道读取信息,写进程向管道写入信息。

为协调双方通信,管道通信需要遵循三方面的协调能力:

1. 互斥,即当一个进程对管道进行读或者写操作的时候,其他进程都需要等待;

2. 同步,指当写(输入)进程把一定数量的数据写入管道后就去等待,直到读(输出)进程取走数据,写进程才能重新工作;当读进程读取一空的管道时,也应该等待,直到写进程   往管道写入东西。

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

应用范围

管道通信系统可应用于学习、生活或工作中需要借助第三方进行通信的场景,例如军训物资的发放和领取,食堂的开放管理等

使用方法及步骤

1. 确定互动方是否存在,如果存在可进行通信,否则等待直到互动方出现

2. 当一方在往存储区放东西时,另一方需要等待直到该方操作结束;当存储区没有东西的时候,取东西的一方需要等待直到有另一方放东西进来

应用1- 军训物资的存放和领取

案例:大学在正式开始军训前,每个学生都需要到领取军训物资,且物资发放数量需要进行记录,为了保证发放前后物资总量保持一致,学校该如何设置领取流程?

解决步骤:

1. 物资管理员将军训物资放在某个比较宽阔的房间或区域,并编号记录在表格中

2. 让学生在指定时间内来物资领取处领取物资,先来先领取,每当领取一份,物资发放员在表格中做记号表明已被领取

3. 当军训物资被取完后,学生需要等待直到物资管理员重新补充物资;当物资放在房间里,需要等到所有物资被领取完后再补充。

在这个解决方案中,领取物资、补充物资是两个进程,领取物资填写的表格就是通道,两个进程通过通道交换信息。

应用2-食堂的开放管理

案例:学校假期多,所以学校的总流动人数也大。在节假日,学校的人数会减少很多;在需要上课的日子,学生和老师的人数都会增加很多。对于这种情况,学校的几个外包食堂该如何安排开放时间才能保证食堂的经营有盈利?

解决步骤:

1. 根据学校通知的放假消息和以往经验,确定大概的留校人数

2. 根据留校人数确定食堂开放时间,以及食堂开放个数,如果人数较多,则比正常上课时间开放食堂少一到两个,缩短开放时间,如果人数较少,则可以减少较多的食堂的开放。

3. 在食堂窗口前,如果负责卖菜的师傅正在往窗口前放饭菜,那么点菜的同学需要等待;

如果点菜窗口没有放饭菜,则学生需要等到饭堂师傅放完饭菜再点菜。

在这个解决方案中,食堂的师傅放菜是一个进程,学生点菜是一个进程,食堂的窗口就是通道,把菜放在窗口上就是写数据,把菜拿走就是读数据,菜作为数据通过这个通道被传输。

可以体现的计算思维

管道通信方式借助文件作为通信中消息的中间传递者,可以有效地传送大量的信息和对象,体现了计算思维的调度特点。