HTTP 并发响应模型

httpd: MPM 并发响应模型
prefork(select 1024个并发), worker, event

1、穿行响应模型

2、多进程模型,主控进程负责接收链接(监听端口),主控进程fork一个子进程进行通信,子进程占用一个句柄。启动的子进程数量有限,fork的进程需要预先提供好,所以叫prefork。

3、worker模型,线程模型响应,主控进程fork一个子进程(可以由多个自己进程),子进程内部有多个线程去响应链接。 

4、event,事件驱动模型,

I/O模型

1、同步 synchronous  一个任务的完成需要依赖于另一个任务时,需要被依赖的任务完成,依赖的才能完成。可靠的任务序列,两个任务可以保持一致,要么都完成要么都失败。

   异步:asyncrhonous  调用者无须等待被调用者,只是通知被依赖者,依赖着还会继续执行后面的任务,无须等待被依赖着任务进度。

 

  两者的消息通知机制不同,被调用者响应的方法有两种:

    同步:等待对方返回消息,

    异步:被调用者通过状态、通知或者回调机制,让调用者得到结果。

      状态:通过轮询来查看状态。盲等。

      通知:被条用者完成后会通知调用者完成。

      回调:外表和通知差不多。

  

  调用结果返回之前,调用者的状态有两种:

    阻塞:block :调用结果返回之前,调用者挂起。

    非阻塞:nonblock: 调用结果返回之前,调用者不会被挂起。

  I/O类型:

    网络IO:本质是socket读取:

    磁盘IO:流

    

    每次IO都经由两个阶段:

      第一步:数据先加载至内核内存空间,可以是阻塞或者非阻塞

      第二步:数据从内核缓冲区复制到用户空间的进程内存中去;这个步骤一定是阻塞的

    数据复制两个阶段  

      等待数据准备完成

      数据内核复制到进程

  

   I/O模型:

    同步阻塞:阶段一,阶段二都挂起

    同步非阻塞:阶段一盲等,阶段二挂起

       I/O 复用: 第一阶段阻塞在io复用,第二阶段阻塞在内核。select机制最多1024个并发,poll

    信号驱动IO:第一阶段解脱出来,第二阶段阻塞

    异步IO:阶段一,阶段二都飞阻塞

原文地址:https://www.cnblogs.com/Nvax/p/7571503.html