美文网首页
Linux I/O模式及select、poll机制

Linux I/O模式及select、poll机制

作者: Spike_Spiegel | 来源:发表于2017-07-11 16:37 被阅读0次

    Linux IO模式及 select、poll、epoll详解

    一. 涉及概念

    • 用户空间与内核空间

    • 进程间切换

    • 进程的阻塞

    • 文件描述符

    • 缓存I/O

    • 用户控件与内核空间


    操作系统根据寻址空间,划分为内核空间与用户控件。
    Linux 操作系统的高位1G字节为内核使用;低位3G字节位用户使用 (32位操作系统而言)

    • 进程切换

    为了控制进程的执行,内核必须有能力挂起正在CPU上运行的进程,并恢复以前挂起的某个进程的执行。这种行为被称为进程切换

    • 进程的阻塞

    正在执行的进程,由于期待的某些事件未发生,如请求系统资源失败、等待某种操作的完成、新数据尚未到达或无新工作做等,则由系统自动执行阻塞原语(Block),使自己由运行状态变为阻塞状态。当进程进入阻塞状态,是不占用cpu资源的

    • 文件描述符fd

    文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符

    • 缓存I/O

    缓存 I/O 又被称作标准 I/O,大多数文件系统的默认 I/O 操作都是缓存 I/O。在 Linux 的缓存 I/O 机制中,操作系统会将 I/O 的数据缓存在文件系统的页缓存( page cache )中,也就是说,数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。

    select,poll,epoll 都属于用户进程调用函数,整个进程进入block状态(block状态不占用CPU);
    而同时kernel监控所有函数指负责的socket文件描述符,有任何的一个socket中的数据准备好了,select(poll,epoll)就会返回;
    用户进程此时将会终止block状态,进行下一步的操作。

    相关文章

      网友评论

          本文标题:Linux I/O模式及select、poll机制

          本文链接:https://www.haomeiwen.com/subject/yurmhxtx.html