IO类型
我的内容来自于《马哥Linux2016最新高薪运维视频课程-Nginx应用基础及配置详解》
httpd:MPM
prefork,worker,event
prefork:主进程,生成多个子进程,每个子进程处理一个请求;
worker:主进程,生成多个子进程,每个子进程再生成多个线程,每个线程响应一个请求
event:主进程,生成多个子进程,每个子进程响应多个请求
I/O类型:
同步I/O和异步I/O:synchronous,asynchronous
关注的是被调用者的消息通知机制
同步I/O:调用发出之后结果不会立即返回,但一旦返回,则返回既是最终结果
异步I/O:调用发出之后,被调用方立即返回消息,但返回的并不是最终结果;被调用方完成任务后会通过状态、通知机制等来通知调用者,或者通过回调函数来处理结果
阻塞I/O和非阻塞I/O:block,nonblock
关注的是调用者等待被调用者返回调用结果时的状态
阻塞:调用结果返回之前,调用者会被挂起,调用者只有在得到返回结果之后才能继续
非阻塞:调用者在结果返回之前,不会被挂起,即调用不会阻塞调用者
I/O模型:
blocking I/O:阻塞式I/O
nonblocking I/O:非阻塞式I/O
I/O multiplexing:复用型I/O 阻塞型,是阻塞在内核的代理上;当在内核代理上阻塞时,其调用者是没有阻塞的,可以发送请求
signal driven I/0:事件驱动式I/O 一个进程可以对应多个请求
asynchronous I/O:异步I/O 性能得到了极大提高
例如:在磁盘上做一次read操作
一个进程向磁盘发起一次请求后,会先通知内核,内核再把磁盘的数据加载到内核内存,再从内核内存把数据拷贝一份到进程内存中;真正执行I/O过程的阶段为内核把数据拷贝给进程内存的操作
(1)等待数据准备好,从磁盘到内核内存
(2)从内核内存复制到进程内存