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

Mach

作为基于消息的操作系统的例子。
Mach内核支持多任务的创建和删除, 这里的任务与进程相似,但能有多个控制的创建和删除,这里的任务与进程相似,但能有多个控制线程。Mach的绝大多数通信,包括绝大多数系统调用和所有任务间信息,是通过消息实现的。
消息通过邮箱(Mach称为端口)来发送和接收。

即使系统调用也是通过消息进行的。每个任务在创建时,也创建了两个特别邮箱: 内核(kernel) 邮箱 和 通报(notify)邮箱。 内核使用内核邮箱和任务进行通信。 内核使用内核邮箱 与任务进行通信。内核使用内核邮箱与任务进行通信。内核 向通报端口发送时间发生的通知。消息传输只需要三个系统调用。调用 msg_send向邮箱发送消息。消息可通过 msg_receive接收。远程过程调用(RPC)通过msg_rpc执行,它能发送消息并只等待来自发送消息的一个返回消息。这样RPC 模拟了典型的 子程序过程调用,但能在系统之间工作。

系统调用port_allocate创建新邮箱并未其消息队列分配空间。消息队列的最大尺寸默认为 8个消息。 创建邮箱是该邮箱的拥有者的任务。拥有者也被赋予了对邮箱的访问权。一次只能有一个任务能拥有邮箱或从邮箱中接收,但是如果需要, 这些权利也能发送给其他任务。

邮箱开始时,其消息队列为空。随着消息向邮箱发送,消息被复制到邮箱中。所有消息具有相同的优先权。Mach确保来自同一发送者的多个消息按照先进先出(FIFO)顺序来排队,但并不确定绝对排序。例如, 来自两个发送者的消息可cai以按人和网顺序排队。

消息本身由固定长度的头和可变长度的数据部分组成。头部包括消息长度和两个邮箱名称。当发送消息时, 一个邮箱名称是消息发送的目的哟想。通常,发送线程也期待一个回应,发送者的邮箱名称传递到接收任务,接收任务可用它作为“返回地址”,以发回消息。

… pass

Windows 2000

采用模块化,以增强其功能,并降低了泳衣实现新特征所需的时间。Windows 2000 支持多个操作环境或 子系统,应用程序可通过消息传递机制进行通信。应用程序可作为 Windows 2000 子系统服务器的客户。

Windows 2000 的消息传递工具称作 本地过程调用(LPC)工具。 Windows 2000 的LPC 在位于同一机器的两进程之间进行通信。它类似于广泛使用的标准 RPC机制,但是为 Windows 2000 进行了优化并很特殊。 与Mach一样 ,Windows 2000 使用了端口对象,以建立和为何两个进程之间的连接。调用子系统的每个客户需要一个通信信道, 由端口队形提供且不能继承。 Windows 2000 使用两种类型的端口: 连接端口和通信端口。它们事实上是相同的,但根据它们如何使用而具有不同名称。 连接端口称为对象, 为所有进程所课件, 它们赋予应用程序一种方法来建立通信信道。这种通信工作如下:

  • 客户机打开子系统的连接端口对象的句柄
  • 客户机发送连接请求。
  • 服务器创建两个私有通信端口,并返回其中之一的句柄给客户机。
  • 客户机和服务器使用相应端口句柄,以发送消息或回调,并等待回答。
    Windows 2000 使用三种类型的端口消息传递技术,端口可在客户机建立信道是被指明。最为简单的,用于小消息的,使用端口消息队列作为中间存储,并将消息从一个进程复制到另一个进程。采用这种方法,可发送最多256B的消息。

如果客户机需要发送更大的消息,那么它可通过区段对象(或共享内存)来传递消息。 客户机在建立频道时,必须决定它是否需要发送大消息。如果客户机发送大消息,那么他要求建立区段对象。同样的 服务器如果决定发送大消息,则也会建立一个区段对象。为了能使用区段对象,需要发送一个消息,它包括关于区段的一个指针和大小信息。这种方法比第一种方法更为复杂,但是它避免了数据复制。对于这两种情况,当客户程序或服务器不能马上相应请求时,可使用回调机制。回调机制允许它们执行异步消息传递。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值