- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
什么是流?
流是一个通用的,灵活的,可编程的Unix系统通讯服务的模块。流为内核与Unix系统的其他部分定义字符输入输出的标准接口。其机制由一组系统调用,内核资源和内核方法组成。
Stream允许你创建一个模块用来提供标准数据通讯服务,并且工作在这个流上。
一个流在用户空间和内核流驱动之间进行全双工数据传输。一个流由3个部分组成:流头,模块,驱动。
流的定义
大写的STREAMS指的是stream可编程模块和工具。小写的stream指的是一个在用户应用程序和驱动之间的一个全双工的实例。
流是一个数据的传输途径
一个流是一个内核的流驱动和用户程序之间的双向的传输路径。一个应用程序打开一个流设备就能创建一个流。
流头:
流头是流里最接近用户空间的。它是流和用户空间的接口。当第一次打开流设备时,流只有流头和流驱动组成(这时没有模块)。
流模块:
一个流模块是一组定义了内核级的方法和数据结构。一个模块以黑箱的方式处理传入的数据。例如一个模块转换小写的字符为大写的字符,或者加上网络路由信息等。流模块是被用户应用程序动态的“压”到流里的。模块及其操作参照第10章。
流设备驱动:
一个流设备驱动是一个实现了流接口的字符设备驱动。流设备驱动在流头和一些模块的下面。它能够在操作外部设备或内部软驱动。驱动在内核和设备之间传送数据。驱动和内核之间的调用Solaris DDI/DKI接口。驱动和内核其他部分的关系在Write Device Dirvers里有解释。这被驱动的细节参见第9章。
流数据:
数据在流里是以消息的格式传输。每个流头,流模块,流驱动都有一个读端和一个写端。当消息从一个模块的读端到下一个模块的读端,这种方式被叫做向上流。消息从一个模块的写端到另一个模块的写端,被称为向下流。内核级的消息操作在“消息组件”章节讨论。
消息队列:
每个流头,模块和驱动都有属于它们自己的一对队列。一个是读队列,一个是写队列。消息在队列中按FIFO的方式有序传输。内核级的队列细节在“消息队列的结构”章节描述。
与流驱动通信
为了和一个流驱动通信,一个应用程序使用read(), write(), getmsg(), getpmsg() , putmsg() , putpmsg() 和ioctl()在一个流上传送和接收数据。
要配置一个流,可以通过命令autopush或者在程序中调用ioctl。
ioctl()接口对一个设备驱动执行一个read(),write()都无法执行的控制操作。ioctl()操作包括压入和弹出一个模块,刷新流,操作信号和选项。某些ioctl命令不仅仅操作模块或驱动,而是整个流。Streamio手册描述了ioctl命令。第4章描述了流之间的通信。
STREAMS多路复用
一个模块化的流允许一个或多个上层的流路由数据进入一个或多个下层的流。这个过程被定义为多路复用。多路复用的例子在“配置多路复用流”章节中描述。
STREAMS轮旬
流中的polling允许一个用户进程检测流头发生的事情。指定你关心的事件,等待它发生。一个应用程序可能需要与多个流合作。poll()系统调用允许应用程序在一个或多个流头检测发生的事件,第3章描述了polling.
消息传输流程控制
流程控制调节用户进程,流头,模块,驱动之间的消息传输速率。With flow control, a module that cannot process data at the rate being sent can queue the data to avoid flooding modules upstream. Flow控制作用于本地的模块或者驱动。第8章介绍了flow控制。
什么时候适用STREAMS
STREAMS架构最合适于需要模块化和可配置的情况。例如:网络驱动,终端驱动,图形化I/O驱动。可以根据程序的希望的行为压入或者弹出模块。
STREAMS是在一组协议之间提供模块化。它在Unix System V的网络中是一个主要的组件,因为它易于在协议之间通信。
STREAMS如何工作------应用程序接口
一个应用程序打开一个流设备,这样就创建了流头并可以访问设备驱动。流头把从用户程序的数据打包成STREAMS消息,并传入向下流进入内核空间。一个或者多个Module可以被压入流头和驱动之间来定制一组任务以在传入驱动之前完成一些处理。换句话说,一个流可以只有流头和驱动,而根本没有Module.
打开一个流
对于一个用户应用程序来说,一个流设备类似一个普通的字符I/O设备,它在系统文件表中有一个或者多个节点(node)。用open()就可以打开。
文件系统将每一个设备看作一个特殊文件。文件中有一个主设备号的入口,指出实际的设备驱动将激活这个设备。There are corres
您可能关注的文档
- 东方古州——青州学习网站的建设与应用研究》.doc
- 东莞教师培训.doc
- 会统计共通性作业项目.doc
- 传真机的基本原理-仪器信息网.ppt
- 严以修身努力做三严三实的践行者甘肃省第二人民医院纪.ppt
- 个人会员表.doc
- 伺服参数调整方法-Multiprojekt.ppt
- 但见表达了作者什么情感-扬中市第二中学.ppt
- 住房公积金贷款申请审批表-济南住房公积金.doc
- 体系文件的重要性.ppt
- 西藏阿里地区(新版)2024小学语文统编版小升初模拟(综合卷)完整试卷(含答案).docx
- 西藏山南地区(新版)2024小学语文统编版(五四制)小升初摸底(评估卷)完整试卷(含答案).docx
- 西藏山南地区(新版)2024小学语文苏教版小升初摸底(拓展卷)完整试卷(含答案).docx
- 西藏拉萨市(新版)2024小学语文苏教版小升初模拟(评估卷)完整试卷(含答案).docx
- 西藏拉萨市(新版)2024小学语文苏教版小升初核心能力评测(备考卷)完整试卷(含答案).docx
- 西藏拉萨市(新版)2024小学语文统编版小升初模拟(提分卷)完整试卷(含答案).docx
- 西藏林芝地区(新版)2024小学语文统编版(五四制)小升初质量检测(巩固卷)完整试卷(含答案).docx
- 西藏昌都地区(新版)2024小学语文部编版小升初真题(强化卷)完整试卷(含答案).docx
- 西藏那曲地区(新版)2024小学语文统编版小升初测试(强化卷)完整试卷(含答案).docx
- 西藏阿里地区(新版)2024小学语文部编版小升初模拟(拓展卷)完整试卷(含答案).docx
最近下载
- 核心素养下的农村民族小学写作教学策略研究课题实施方案.doc VIP
- 浙教版四年级上册信息科技全册教学设计教案.pdf VIP
- 拥有积极的人生态度(21张PPT)道德与法治.pptx VIP
- word简历表格下载.docx VIP
- 2023年统一战线工作总结范文(通用5篇).docx
- 六级真题24套及答案.pdf
- 《全面质量管理(习题集)》学习考试题库资料(含答案).pdf
- 汇川INOVANCE SV630P系列伺服用户手册-中文.PDF
- 中国血脂管理指南(2023+年).pdf VIP
- 形势与政策(第3版) 课件 第9、10讲 发展全过程人民民主 彰显中国式民主优势、 坚定践行多边主义 促进世界共同发展.pptx VIP
文档评论(0)