1、基本概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O...
分类:
其他好文 时间:
2015-05-11 01:27:31
阅读次数:
169
1、基本知识 epoll是在2.6内核中提出的(mac没有),是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述...
分类:
其他好文 时间:
2015-05-09 20:40:53
阅读次数:
165
五种I/O模型介绍(1)阻塞I/O[默认] 当上层应用App调用recv系统调用时,如果对等方没有发送数据(Linux内核缓冲区中没有数据),上层应用Application1将阻塞;当对等方发送了数据,Linux内核recv端缓冲区数据到达,内核会把数据copy给用户空间。然后上层应用App解除阻塞,执行下一步操作。 (2)非阻塞I/O[少用] 上层应用App将套接字设置成非阻塞模式, 然...
分类:
其他好文 时间:
2015-03-14 17:05:48
阅读次数:
220
转:select、poll、epoll之间的区别总结[整理] select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步....
分类:
其他好文 时间:
2015-03-09 18:46:53
阅读次数:
149
package com.winwill.nio;
/**
* @author qifuguang
* @date 15-2-4 下午2:07
*/
public class TimeServerMain {
public static void main(String[] args) throws Exception {
// 启动时间服务器
new...
分类:
编程语言 时间:
2015-02-05 09:38:57
阅读次数:
149
select、poll、epoll都是IO多路复用的机制,但是他们的机制有很大的区别
1、select
select机制刚开始的时候,需要把fd_set从用户空间拷贝到内核空间,并且检测的fd数是有限制的,由FD_SETSIZE设置,一般是1024。
检测的时候,根据timeout,遍历fd_set表,把活跃的fd(可读写或者错误),拷贝到用户空间,
再在用户空间依次处理相关的fd。...
分类:
系统相关 时间:
2015-01-20 20:35:55
阅读次数:
1199
linux 下的 select 知识点 unp 的第六章已经描述的很清楚,我们这里简单的说下 select 的作用,并给出 select 的客户端实例。我们知道 select 是IO 多路复用的一个最简单支持,poll 和 epoll 是 select 的升级版。在UNIX 网络编程第五章读后有.....
分类:
系统相关 时间:
2015-01-13 19:20:31
阅读次数:
283
在前面的文章中介绍了五种 I/O 模型《I/O 模型》,这里介绍 I/O 模型中 I/O 多路复用在 TCP 套接字编程中的使用。在 I/O 多路复用中主要是 select 和 poll 函数的使用。
select 函数
该函数允许进程指示内核等待多个事件中的任何一个发生,并只在一个或多个事件发生或超过指定时间后才被唤醒。进程调用 select 函数是告知内核,进程对哪些描述...
分类:
其他好文 时间:
2014-12-13 17:57:48
阅读次数:
166
在分析 I/O 模型之前,首先了解 同步 I/O 和 异步 I/O 的基本概念:
同步 I/O:进程调用 I/O 操作函数时,在 I/O 操作函数返回之前,该进程会被挂起(即阻塞),直到 I/O 操作完成后返回;
异步 I/O:进程调用 I/O 操作函数时,在 I/O 操作函数返回之前,该进程不会被挂起(即不阻塞),当 I/O 操作完成后会通知方式告知进程;
在 Unix 系统中主要有 5 种 I/O 模型:阻塞式 I/O;非阻塞式 I/O;I/O 多路复用;信号驱动式 I/O;异步 I/O;
一般一个输入...
分类:
其他好文 时间:
2014-12-13 13:31:12
阅读次数:
188
阻塞I/O 说明1:当上层应用Application1调用recv系统调用时,如果对等方没有发送数据(Linux内核缓冲区中没有数据),上层应用Application1将阻塞[默认:被Linux内核阻塞)说明2:当对等方发送了数据,Linux内核recv端缓冲区数据到达,内核会把数据copy给用户空间。然后上层应用Application1解除阻塞,执行下一步操作。 非阻塞I/O 说明1: 上层应...
分类:
其他好文 时间:
2014-12-06 16:53:38
阅读次数:
208