本站以分享各种运维经验和运维所需要的技能为主
《python零基础入门》:python零基础入门学习
《python运维脚本》: python运维脚本实践
《shell》:shell学习
《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战
《k8》暂未更新
《docker学习》暂未更新
《ceph学习》ceph日常问题解决分享
《日志收集》ELK+各种中间件
《运维日常》运维日常
《linux》运维面试100问
I/O过程
I/O 介绍
I/O 通常有内存 IO 、网络 I/O 、磁盘 I/O 等,但我们通常说的是网络 I/O 以及磁盘 I/O 。网络 I/O :本质是 socket 读取
每次 I/O 请求,都会有两个阶段组成: 第一步:等待数据,即数据从磁盘到内核内存;将数据从磁盘文件先加载到
内核内存空间(缓冲区),等待数据准备完成,时间较长。第二步:复制数据,即数据内核内存到进程内存;将数
据从内核缓冲复制到用户空间的进程内存中,时间较短。
Web 请求处理过程
1. 客户端发起情况到服务器网卡
2. 服务器网卡接受到请求后转交给内核处理
3. 内核根据请求对应的套接字,将请求交给工作在用户空间的 Web 服务器进程
4.Web 服务器进程根据用户请求,向内核进行系统调用,申请获取相应资源(如:客户端获取图片)
5. 内核发现 Web 服务器进程请求的是一个存放在本地硬盘上的资源,因此通过驱动程序连接磁盘
6. 内核调用磁盘,获取需要的资源
7. 内核将资源存放在自己的缓存区中,并通知 Web 服务器进程
8.Web 服务器进程通过系统调用取得资源,并将其复制到进程自己的缓冲区中
9.Web 服务器进程形成响应,通过系统调用再次发给内核以响应请求
10. 内核将响应发送至网卡
11. 网卡发送响应给用户
通过这样的一个复杂过程,一次请求就完成了
简单来说就是: 用户请求 —— 》送达用户空间 —— 〉系统调用 —— 》内核空间 —— 〉内核到磁盘上读取图片资源 —— 》返回到用户
空间 —— 〉响应给用户
上述简单的说明了一下,客户端向 Web 服务器请求过程,
在这个过程中,有两个 I/O 过程:
一是客户端请求的网络 I/O,
二个是 Web 服务器请求图片磁盘 I/O 。