本站以分享各种运维经验和运维所需要的技能为主
《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
。