浙江自考网

咨询热线

15700080354 (点击在线咨询)
您现在的位置:浙江自考网>复习资料 > 正文
自考攻略
自考助学

  进程通信是指进程之间的信息交换。PV操作是低级通信方式,高级通信方式是指以较高的效率传输大量数据的通信方式。高级通信方法主要有以下三类。

  1.共享存储

  在通信的进程之间存在一块可直接访问的共享空间,通过对这片共享空间进行写/读操作实现进程之间的信息交换,如图2.2所示。在对共享空间进行写/读操作时,需要使用同步互斥工具(如 P操作、V操作),对共享空间的写/读进行控制。共享存储又分为两种:低级方式的共享是基于数据结构的共享;高级方式的共享则是基于存储区的共享。操作系统只负责为通信进程提供可共享使用的存储空间和同步互斥工具,而数据交换则由用户自己安排读/写指令完成。

QQ截图20220616102703.jpg

  注意,进程空间一般都是独立的,进程运行期间一般不能访问其他进程的空间,想让两个 进程共享空间,必须通过特殊的系统调用实现,而进程内的线程是自然共享进程空间的。

  简单理解就是,甲和乙中间有一个大布袋,甲和乙交换物品是通过大布袋进行的,甲把物品放在大布袋里,乙拿走。但乙不能直接到甲的手中拿东西,甲也不能直接到乙的手中拿东西。

进程的通信架构图

  2.消息传递

  在消息传递系统中,进程间的数据交换以格式化的消息(Message)为单位。若通信的进程 之间不存在可直接访问的共享空间,则必须利用操作系统提供的消息传递方法实现进程通信。进程通过系统提供的发送消息和接收消息两个原语进行数据交换。这种方式隐藏了通信实现细节, 使通信过程对用户透明,简化了通信程序的设计,是当前应用最广泛的进程间通信机制。在微内核操作系统中,微内核与服务器之间的通信就采用了消息传递机制。由于该机制能很好地支持多处理机系统、分布式系统和计算机网络,因此也成为这些领域最主要的通信工具。

  1)直接通信方式。发送进程直接把消息发送给接收进程,并将它挂在接收进程的消息缓冲队列上,接收进程从消息缓冲队列中取得消息,如图2.3所示。

  2)间接通信方式。发送进程把消息发送到某个中间实体,接收进程从中间实体取得消息。这种中间实体一般称为信箱。该通信方式广泛应用于计算机网络中。

  简单理解就是,甲要告诉乙某些事情,就要写信,然后通过邮差送给乙。直接通信就是邮差把信直接送到乙的手上;间接通信就是乙家门口有一个邮箱,邮差把信放到邮箱里。

  3.管道通信

  管道通信是消息传递的一种特殊方式(见图2.4)所 谓“管道”,是指用于连接一个读进程和一个写进程以实现它们之间的通信的一个共享文件,又名pipe文件。向管

管道通信

  道(共享文件)提供输入的发送进程(即写进程),以字 图2.4管道通信

  符流形式将大量的数据送入(写)管道;而接收管道输出的接收进程(即读进程)则从管道中接 收(读)数据。为了协调双方的通信,管道机制必须提供以下三方面的协调能力:互斥、同步和确定对方的存在。

  在Linux中,管道是一种使用非常频繁的通信机制。从本质上说,管道也是一种文件,但它 又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题,具体表现如下:

  1) 限制管道的大小。实际上,管道是一个固定大小的缓冲区。在Linux中,该缓冲区的大 小为4KB,这使得它的大小不像文件那样不加检验地增长。使用单个固定缓冲区也会带来问题,比如在写管道时可能变满,这种情况发生时,随后对管道的write。调用将默认 地被阻塞,等待某些数据被读取,以便腾出足够的空间供write,调用写。

  2) 读进程也可能工作得比写进程快。当所有当前进程数据已被读取时,管道变空。当这种 情况发生时,一个随后的read()调用将默认地被阻塞,等待某些数据被写入,这解决了 read()调用返回文件结束的问题。

  注意:从管道读数据是一次性操作,数据一旦被读取,就释放空间以便写更多数据。管道只 能采用半双工通信,即某一时刻只能单向传输。要实现父子进程互动通信,需定义两个管道。

  管道可以理解为共享存储的优化和发展,因为在共享存储中,若某进程要访问共享存储空间, 则必须没有其他进程在该共享存储空间中进行写操作,否则访问行为就会被阻塞。而管道通信中, 存储空间进化成了缓冲区,缓冲区只允许一边写入、另一边读出,因此只要缓冲区中有数据,进程就能从缓冲区中读出,而不必担心会因为其他进程在其中进行写操作而遭到阻塞,因为写进程会先把缓冲区写满,然后才让读进程读,当缓冲区中还有数据时,写进程不会往缓冲区写数据。 当然,这也决定了管道通信必然是半双工通信。


声明:

(一)由于考试政策等各方面情况的不断调整与变化,本网站所提供的考试信息仅供参考,请以权威部门公布的正式信息为准。

(二)本网站在文章内容来源出处标注为其他平台的稿件均为转载稿,免费转载出于非商业性学习目的,版权归原作者所有。如您对内容、版权等问题存在异议请与本站联系,我们会及时进行处理解决。

报名提醒

【考试时间:4月12-13日】

浙江自考服务中心

  • 微信公众号
  • 考生交流群
  • 微信公众号 扫一扫加关注微信公众号

    与考生自由互动、并且能直接与专业老师进行交流解答。

  • 考生交流群 扫一扫加入微信交流群

    与考生自由互动、并且能直接与专业老师进行交流解答。

关注公众号

回复“免费资料”领取复习资料

微信公众号

微信公众号

微信公众号

微信交流群

<<点击收起

在线咨询

在线咨询

APP

APP
下载

man
联系
微信
wxlogo
扫描
二维码
反馈建议
反馈
建议
回到顶部
回到
顶部
app
微信客服
 微信公众号