STREAMS 简介

STREAMS 表示可以创建,使用和拆解流的系统调用,内核资源和内核实用程序例程的集合。 是内核空间中的驱动程序与用户空间中的进程之间的全双工处理和数据传输路径。

STREAMS 机制通过串行连接内核驻留的 STREAMS 组件来构造流,每个组件由一组特定的结构构造。 如 "流详细信息" 图 (图 1) 所示,主要的 STREAMS 组件包括:
描述
流头 提供流与用户进程之间的接口。 其主要功能是处理与 STREAMS 相关的用户系统调用。 可以从 64 位和 32 位用户进程使用 STREAMS 系统调用。
模块 处理在流头和驱动程序之间传输的数据。 模块是可选的。
流结束 提供外部输入/输出设备或内部软件驱动程序的服务。 内部软件驱动程序通常称为伪设备驱动程序。
图 1。 流详细信息
此图显示了顶部的用户进程,其中有一个双向箭头进入到流头的内核空间中。 在下游路径 (或左) 上,箭头从流头移动到模块 B 中的队列 Bd ,然后箭头进入模块 A 中的队列 Ad (以消息 Ad 作为参数)。 然后,箭头将从队列 Ad 移动到流端中的队列对。 驱动程序例程连接到驱动程序中的队列对。 存在从驱动程序例程到外部接口的双向箭头。 在上游路径 (或右) 上,一个箭头从队列对行进到模块 A 中的队列 Au ,然后一个箭头行进到模块 B 中的队列 Bu (以消息 Bu 作为参数)。 然后箭头从队列 Bu 移动到流头。

STREAMS 为系统内核内以及内核与系统其余部分之间的字符输入和输出定义标准接口。 相关联的机制是简单且开放式的。 它由一组系统调用,内核资源和内核实用程序例程组成。 标准接口和开放式机制支持模块化,可移植开发和易于集成高性能网络服务和组件。 STREAMS 不会强制实施任何特定网络体系结构。 相反,它提供了一个强大的框架,具有与现有字符输入/输出接口兼容的一致用户界面。

通过使用系统调用,内核例程和内核实用程序的组合, STREAMS 以消息形式在驱动程序和流头之间传递数据。 从流头向驱动程序传递的消息被认为是 下游 传递的消息,而在另一个方向传递的消息是 上游传递的消息。