I/O多路复用

1.面试被问了很多次,今天好好总结一下:

1.阻塞状态:

进程的运行和阻塞:程序在执行的同时,由于期待的某些事情没有发生,为什么没有发生呢?可能是系统资源失败,等待某种操作的完成,新数据未到达或者无法新工作,则系统自动执行阻塞语句,程序由运行态变成阻塞态!

2.阻塞模型:

阻塞I/O模型示意图:

I/O多路复用

从内核复制数据的过程:

   一个输入操作包含两个阶段:

         (1).等待数据准备好。

         (2).从内核向进程复制数据。

         对于套接字上的输入操作,第一步通常涉及等待数据从网络中到达,当所等待的数据分组到达时,它被复制到内核的某个缓冲区,第二步就是把数据从缓冲区复制到应用进程缓冲区。

1.进程调用recvfrom,系统调用直到数据报到达且被复制到应用程序的缓冲区或者发生错误时才被返回,进程再调用recvfrom开始到它返回的整段时间内是阻塞的,recvfrom成功返回后,应用进程开始处理数据报。