文件缓冲区和 socket 缓冲区 是同一个吗?

2019-05-26 01:06:21 +08:00
 fghjghf
epoll 能否处理文件 IO,还是说只能处理网络 socket 缓冲区。
4325 次点击
所在节点    Linux
11 条回复
Maboroshii
2019-05-26 01:26:55 +08:00
只要用文件描述符的都能处理
Qzier
2019-05-26 02:01:09 +08:00
epoll 监听的是文件描述符,socket 也是文件。
littlewing
2019-05-26 03:24:44 +08:00
一切皆文件
HelloAmadeus
2019-05-26 03:34:27 +08:00
epoll 并不能处理文件描述符
turi
2019-05-26 08:05:18 +08:00
select 好像可以对文件。
epoll 上次看到好像不行(这个不知道记错没有)
RitchieLee
2019-05-26 09:38:27 +08:00
fghjghf
2019-05-26 12:33:31 +08:00
icerwinter
2019-05-26 12:46:37 +08:00
@RitchieLee 内容不错
scriptB0y
2019-05-26 13:44:38 +08:00
为什么需要处理普通文件呢?普通文件不是不阻塞的么?
fghjghf
2019-05-26 18:25:38 +08:00
@scriptB0y 我理解是:中断过后、让出总线交给 DMA 后就可以切换线程继续榨干 CPU 了,异步 IO。我不惑的是,缓存型 IO,从磁盘获取数据到内存分页,再从内核态的缓存再传给用户态的缓存,这几个传输过程中会堵塞吗。看了楼上的回复应该有点头绪了
scriptB0y
2019-05-27 21:55:57 +08:00
@fghjghf 我也不是很确定,但是我觉得应该不会阻塞,我们平常说的阻塞是 CPU 在等待。但是你读文件的时候其实 CPU 不是在等待的,经历了内核操作磁盘读文件到 kernel buffer,然后 CPU 将内容从 kernel buffer copy 到 user buffer,所以 CPU 并不是空闲的。 (不是很确定,我觉得你读一读《 Linux System Programming 》这本书可能对 IO 好理解一下,这本书 2、3、4 章都是 IO 内容)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/567699

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX