Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
fghjghf
V2EX  ›  Linux

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

  •  
  •   fghjghf · May 26, 2019 · 5006 views
    This topic created in 2544 days ago, the information mentioned may be changed or developed.
    epoll 能否处理文件 IO,还是说只能处理网络 socket 缓冲区。
    11 replies    2019-05-27 21:55:57 +08:00
    Maboroshii
        1
    Maboroshii  
       May 26, 2019 via Android
    只要用文件描述符的都能处理
    Qzier
        2
    Qzier  
       May 26, 2019 via iPhone
    epoll 监听的是文件描述符,socket 也是文件。
    littlewing
        3
    littlewing  
       May 26, 2019 via iPhone
    一切皆文件
    HelloAmadeus
        4
    HelloAmadeus  
       May 26, 2019
    epoll 并不能处理文件描述符
    turi
        5
    turi  
       May 26, 2019
    select 好像可以对文件。
    epoll 上次看到好像不行(这个不知道记错没有)
    fghjghf
        7
    fghjghf  
    OP
       May 26, 2019
    icerwinter
        8
    icerwinter  
       May 26, 2019
    @RitchieLee 内容不错
    scriptB0y
        9
    scriptB0y  
       May 26, 2019
    为什么需要处理普通文件呢?普通文件不是不阻塞的么?
    fghjghf
        10
    fghjghf  
    OP
       May 26, 2019
    @scriptB0y 我理解是:中断过后、让出总线交给 DMA 后就可以切换线程继续榨干 CPU 了,异步 IO。我不惑的是,缓存型 IO,从磁盘获取数据到内存分页,再从内核态的缓存再传给用户态的缓存,这几个传输过程中会堵塞吗。看了楼上的回复应该有点头绪了
    scriptB0y
        11
    scriptB0y  
       May 27, 2019
    @fghjghf 我也不是很确定,但是我觉得应该不会阻塞,我们平常说的阻塞是 CPU 在等待。但是你读文件的时候其实 CPU 不是在等待的,经历了内核操作磁盘读文件到 kernel buffer,然后 CPU 将内容从 kernel buffer copy 到 user buffer,所以 CPU 并不是空闲的。 (不是很确定,我觉得你读一读《 Linux System Programming 》这本书可能对 IO 好理解一下,这本书 2、3、4 章都是 IO 内容)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5095 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 107ms · UTC 05:38 · PVG 13:38 · LAX 22:38 · JFK 01:38
    ♥ Do have faith in what you're doing.