免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3704 | 回复: 11
打印 上一主题 下一主题

什么是stream? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-09-30 21:57 |只看该作者 |倒序浏览
可不可以理解为在内核的输入输出API 上套上一个input buffer和一个output buffer就是stream?如果不是那是什么?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-09-30 23:18 |只看该作者

什么是stream?

我说一下我的理解。
流是一个抽象的,逻辑上的概念。是一种形象的说法。
当你对一个文件操作时,文件实际存储在
硬盘上,有对应的柱面,柱面,扇区。
但是作为一个程序员,你看不到这些,
你看到的只是文件的逻辑视图,
即是一个单一的连续的字节流
由文件系统负责逻辑位置和物理地址
之间的映射,正如你所说,操作系统
会自动进行缓冲。

论坛徽章:
0
3 [报告]
发表于 2005-09-30 23:46 |只看该作者

什么是stream?

谢谢lenovo解疑,

原来是个这么抽象的概念,就是说无论有没有使用buffer,这个概念都是存在的?先看C的std lib的历史的时候以为是为了提高输入输出效率才有了流这个概念,以为把fd 代到FILE 里面就生成流了。。。

论坛徽章:
0
4 [报告]
发表于 2005-10-04 04:56 |只看该作者

什么是stream?

不光是文件,还可以是网络数据,都可以当做字节流。
那么,在stream中是用module来对数据进行处理了,比如
处理IP报文,有IP module,处理TCP报文有TCP module。
具体的可以看solaris下的STREAM programming guide.

[quote]原帖由 "lenovo" 发表:

论坛徽章:
0
5 [报告]
发表于 2005-10-04 05:29 |只看该作者

什么是stream?

The fundamental STREAMS unit is the stream. A stream is a full-duplex bidirectional data-transfer path between a process in user space and a STREAMS driver in kernel space. A stream has three parts: a stream head, zero or more modules, and a driver.


实在感谢lose的建议,看来有必要装个Solaris...

论坛徽章:
0
6 [报告]
发表于 2005-10-04 07:28 |只看该作者

什么是stream?

流就是01010101010101010101010101010101010101010101010...

这个东西,他和有没有buffe没有任何关系。

把流理解成火车,你是按照流(火车)来处理,还是按照字节处理(车皮)处理根据你的需要。

论坛徽章:
0
7 [报告]
发表于 2005-10-11 01:33 |只看该作者

什么是stream?

stream是设备驱动程序和进程之间的一个东东.
该东东是全双工连接,既一个队列对.
一个输出,一个输入.实际是为了OS的I/O的模块性.以适应现实中不同的设备驱动程序.

论坛徽章:
0
8 [报告]
发表于 2005-10-11 09:47 |只看该作者

什么是stream?

FILE *的stream概念,跟Unix I/O子系统的STREAMS概念,是不一样的。后者可有可无,在某些Unix上,如Linux,是未曾实现的。

论坛徽章:
0
9 [报告]
发表于 2005-10-11 10:42 |只看该作者

什么是stream?

文件(包括设备)的IO的stream方式是和早期的OS的非stream--结构方式相对应的。

早期的OS比如(DOS的小号码系统调用,VAX上的VMS?)等,文件内部是有结构的(记录)。要打开文件,要做一个登记表提交(叫什么文件控制信息块等名字)。读写要按记录来。

后来unix就发名了stream IO,将其变成无结构的字节流。将FCB变为/user1/dir1/the_file目录方式。
WINDOWS的\ABC\AAA\FILE都是后学来的。

论坛徽章:
0
10 [报告]
发表于 2005-10-11 11:05 |只看该作者

什么是stream?

[quote]原帖由 "albcamus"]FILE *的stream概念,跟Unix I/O子系统的STREAMS概念,是不一样的。后者可有可无,在某些Unix上,如Linux,是未曾实现的。[/quote 发表:


说的对,system V演变来的unix系统至今还有stream,
简单的说,属于内核模块,在Richard steven的网络编程第2卷里有简单介绍,并且,有直接在stream的api上编写网络程序的例子。

如果想仔细了解,可以参考docs.sun.com上的关于stream的书籍。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP