Skip to content

i/o 模型 #19

@WeihanLi

Description

@WeihanLi

UNIX系统将所有的外部设备都看作一个文件来看待,所有打开的文件都通过文件描述符来引用。文件描述符是一个非负整数,它指向内核中的一个结构体。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。而对于一个socket的读写也会有相应的文件描述符,称为 socketfd(socket文件描述符)。

在UNIX系统中,I/O输入操作(例如标准输入或者套接字的输入)通常包含以下两个不同的阶段:

  1. 等待数据准备好
  2. 从内核向进程复制数据

例如对于套接字的输入,第一步是等待数据从网络中到达,当所等待的数据到达时,数据被复制到内核中的缓冲区。第二步则是把数据从内核缓冲区复制到应用进程的缓冲区。

根据在这两个不同阶段处理的不同,可以将I/O模型划分为以下五种类型:

  • 阻塞式I/O模型
  • 非阻塞式I/O模型
  • I/O复用
  • 信号驱动式I/O
  • 异步I/O

Reference

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions