其实关于这方面的知识,我阅读的是《UNIX网络编程:卷一》,书里是以UNIX为中心展开描述的,根据这部分知识,在网上参考了部分资料。以Linux为中心整理了这篇博客。 Linux的I/O模型 和Unix的I/O模型基本一致,Linux下一共有5种I/O模型[1] 阻塞式I/O模型 ...
一 关于I O模型的引出 我们都知道,为了OS的安全性等的考虑,进程是无法直接操作I O设备的,其必须通过系统调用请求内核来协助完成I O动作,而内核会为每个I O设备维护一个buffer。如下图所示: 整个请求过程为:用户进程发起请求,内核接受到请求后,从I O设备中获取数据到buffer中,再将buffer中的数据copy到用户进程的地址空间,该用户进程获取到数据后再响应客户端。 在整个请求 ...
2016-02-26 16:15 2 4795 推荐指数:
其实关于这方面的知识,我阅读的是《UNIX网络编程:卷一》,书里是以UNIX为中心展开描述的,根据这部分知识,在网上参考了部分资料。以Linux为中心整理了这篇博客。 Linux的I/O模型 和Unix的I/O模型基本一致,Linux下一共有5种I/O模型[1] 阻塞式I/O模型 ...
1.1 五种I/O模型 1)阻塞I/O 2)非阻塞I/O 3)I/O复用 4)事件(信号)驱动I/O 5)异步I/O 1.2 为什么要发起系统调用? 因为进程想要获取磁盘中的数据,而能和磁盘打交道的只能是内核, 进程通知内核,说要磁盘中的数据 此过程 ...
阻塞与非阻塞 阻塞就是卡在那儿什么也不做,双方之间也没有信息沟通。 非阻塞就是即使对方不能马上完成请求,双方之间也有信息的沟通。 同步与异步 同步就是一件事件只由一个过程处理 ...
一、什么是同步?什么是异步? 同步和异步的概念出来已经很久了,网上有关同步和异步的说法也有很多。以下是我个人的理解: 同步就是:如果有多个任务或者事件要发生,这些任务或者事件必须逐个 ...
前言 本文是笔者的第一篇博文,在这篇文章的大部分内容基于steven大神的《Unix Network Programming》。一来是对书本内容的整理与归纳。二来也是为接下来的博文奠定基础 ...
1 阻塞I/O(blocking IO) 应用程序调用一个IO函数,导致应用程序阻塞,如果数据已经准备好,从内核拷贝到用户空间,否则一直等待下去。一个典型的读操作流程大致如下图,当用户进程调用recvfrom这个系统调用时,kernel就开始了IO的第一个阶段:准备数据,就是数据被拷贝到内核 ...
1)阻塞I/O(blocking I/O)2)非阻塞I/O (nonblocking I/O)3) I/O复用(select 和poll) (I/O multiplexing)4)信号驱动I/O (signal driven I/O (SIGIO))5)异步I/O (asynchronous I ...
前言 I/O多路复用有很多种实现。在linux上,2.4内核前主要是select和poll,自Linux 2.6内核正式引入epoll以来,epoll已经成为了目前实现高性能网络服务器的必备技术。尽管他们的使用方法不尽相同,但是本质上却没有什么区别。本文将重点探讨将放在EPOLL ...