五种IO模型

五种IO模型

  • blocking IO
  • non-blocking IO
  • IO multiplexing
  • signal driven IO
  • asynchronous IO

IO过程中,会涉及到用户进程系统内核两个概念,分两步完成IO。
首先,等待数据准备。
然后,将数据从系统内核copy到用户进程。

阻塞IO

  1. process 要求 kernal 返回数据
  2. process 等待
  3. kernal 开始准备数据
  4. kernal 准备好数据
  5. 将数据从内核空间复制到用户空间
  6. process 处理 数据

五种IO模型_第1张图片

kernal准备数据并返回数据的整个过程中,process不能做别的事,这就是所谓的阻塞

非阻塞IO

  1. process 要求 kernal 返回数据
  2. kernal 还没准备好,通知 process 没准备好你去干点别的吧
  3. process 又问 kernal
  4. kernal 说还没准备好
  5. process 去喝了口水,又问kernal
  6. kernal说准备好了,你来取吧
  7. process开始读取数据(阻塞)
  8. process 读取数据完成

IO多路复用

  1. process想要kernal返回数据
  2. processfd去做这个事
  3. processfd交给select
  4. processselect可以取数据了么
  5. select说不行,再等等
  6. processselect可以取数据了么
  7. select说可以
  8. process开始取数据
  9. process取数据完成

异步IO

  1. process想要kernal返回数据
  2. kernal开始准备数据 ,process去做别的事情了
  3. kernal把数据准备好,并送到process手中
  4. process拿到数据了,开始处理数据

你可能感兴趣的:(io)