I/O介绍

I/O通常有内存IO、网络I/O、磁盘I/O等,但我们通常说的是网络I/O以及磁盘I/O。
网络I/O:本质是socket读取

每次I/O请求,都会有两个阶段组成:
第一步:等待数据,即数据从磁盘到内核内存;将数据从磁盘文件先加载到内核内存空间(缓冲区),等待数据准备完成,时间较长。
第二步:复制数据,即数据内核内存到进程内存;将数据从内核缓冲复制到用户空间的进程内存中,时间较短。

Web请求处理过程

I/O介绍

  1. 客户端发起情况到服务器网卡
  2. 服务器网卡接受到请求后转交给内核处理
  3. 内核根据请求对应的套接字,将请求交给工作在用户空间的Web服务器进程
  4. Web服务器进程根据用户请求,向内核进行系统调用,申请获取相应资源(如:客户端获取图片)
  5. 内核发现Web服务器进程请求的是一个存放在本地硬盘上的资源,因此通过驱动程序连接磁盘
  6. 内核调用磁盘,获取需要的资源
  7. 内核将资源存放在自己的缓存区中,并通知Web服务器进程
  8. Web服务器进程通过系统调用取得资源,并将其复制到进程自己的缓冲区中
  9. Web服务器进程形成响应,通过系统调用再次发给内核以响应请求
  10. 内核将响应发送至网卡
  11. 网卡发送响应给用户

通过这样的一个复杂过程,一次请求就完成了

简单来说就是:

用户请求——》送达用户空间——〉系统调用——》内核空间——〉内核到磁盘上读取图片资源——》返回到用户空间——〉响应给用户

上述简单的说明了一下,客户端向W