I/O复用 select和poll

一、I/O模型

1、阻塞式I/O模型:

2、非阻塞式I/O模型

3、I/O复用模型

4、信号驱动式I/O模型

5、异步I/O

信号驱动式I/O和异步I/O之间的区别是:信号驱动式I/O是由内核通知何时可以启动I/O操作,而异步I/O是由内核通知I/O操作何时完成。

二、同步I/O与异步I/O

同步I/O:导致请求进程阻塞,直到I/O操作完成。

异步I/O:不导致请求进程阻塞。

I/O模型的比较如下:

原文地址:https://www.cnblogs.com/rabbit0212/p/11169120.html

时间: 2024-10-21 05:23:29

I/O复用 select和poll的相关文章

Linux下I/O复用 Select与Poll

Select#include <sys/time.h>#include <sys/types.h>#include <sys/unistd.h> int select (int n, fd_set readfds, fd_set writefds, fd_set exceptfds, struct timeval timeout); FD_CLR(int fd, fd_set *set); FD_ISSET(int fd, fd_set *set); FD_SET(in

UNPv1第六章:IO复用select&amp;poll

有些进程需要一种预先告知内核的能力,使得内核一旦发现进程指定的一个或多个I/O条件就绪(也就是说输入已准备好被读取,或者描述符已能承受更多的输出),他就通知进程,这个能力称为I/O复用 1.IO模型 5种基本I/O模型 阻塞式I/O 非阻塞式I/O I/O复用(select和poll) 信号驱动式I/O(SIGIO) 异步I/O 一个输入操作通常包括两个不同的阶段 (1)等待数据准备 (2)从内核向进程复制数据 对于一个套接口上的输入操作,第一步一般是等待数据到达网络,当分组到达时,它被拷贝到内

socket阻塞与非阻塞,同步与异步、I/O模型,select与poll、epoll比较

1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步/异步主要针对C端: 同步:      所谓同步,就是在c端发出一个功能调用时,在没有得到结果之前,该调用就不返回.也就是必须一件一件事做,等前一件做完了才能做下一件事. 例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事 异步:      异步的概念和同步相对.当c端一个异步过程调用发出后,调

高性能网络服务器--I/O复用 select poll epoll_wait之间的区别

一.select 使用的集合的方式,最多只能监听1024个文件描述符,内部使用位操作,将相应的位置为1或者置为0,需要将可读.可写.异常的三类事件分开来用,内部使用轮询的方法,每次返回都需要将所有的套接字从内核到用户空间之间进行拷贝. 二.poll 比select稍微好一点,也是在指定时间内轮询一定数量的文件描述符,以测试其中是否有就绪. 三.epoll_wait 把用户关心的文件描述符上事件放在内核里的一个事件表中从而无需像select和poll那样每次调用都要重复传入文件描述符集或者事件集.

UNIX网络编程笔记(5)—I/O复用select/poll

I/O复用:select和poll函数 1. 概述 考虑一种情况,当客户端阻塞于fgets调用时,服务器进程被杀死:此时服务器TCP虽然正确地给客户TCP发送了一个FIN,但是由于客户进程阻塞于标准输入的过程,直到从套接字读时为止.这样的进程就需要一种机制,使得内核一旦发现进程指定的一个或多个I/O条件就绪,就通知进程.这个能力就叫做I/O复用.由select和poll函数支持的. I/O复用典型使用在下列网络应用场合: (1)客户处理多个描述符. (2) 客户通知处理多个套接字. (3) 服务

UNIX网络编程:I/O复用技术(select、poll、epoll)

Unix下可用的I/O模型一共有五种:阻塞I/O .非阻塞I/O .I/O复用 .信号驱动I/O .异步I/O.此处我们主要介绍第三种I/O符复用. I/O复用的功能:如果一个或多个I/O条件满足(输入已准备好读,或者描述字可以承接更多输出)时,我们就被通知到.这就是有select.poll.epoll实现. I/O复用应用场合: 1.当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用.在这前一段中已做描述. 2.一个客户同时处理多个套接口是可能的,但很少出现. 3.如果

【unix网络编程第三版】阅读笔记(五):I/O复用:select和poll函数

本博文主要针对UNP一书中的第六章内容来聊聊I/O复用技术以及其在网络编程中的实现 1. I/O复用技术 I/O多路复用是指内核一旦发现进程指定的一个或者多个I/O条件准备就绪,它就通知该进程.I/O复用适用于以下场合: (1) 当客户处理多个描述符(一般是交互式输入或网络套接字),必须适用I/O复用 (2) 当一个客户处理多个套接字时,这种情况很少见,但也可能出现 (3) 当一个TCP服务器既要处理监听套接字,又要处理已连接套接字,一般就要使用I/O复用 (4) 如果一个服务器既要适用TCP,

【Unix网络编程】chapter6 IO复用:select和poll函数

chapter6 6.1 概述 I/O复用典型使用在下列网络应用场合. (1):当客户处理多个描述符时,必须使用IO复用 (2):一个客户同时处理多个套接字是可能的,不过不叫少见. (3):如果一个TCP服务器既要处理监听套接字,又要处理已连接套接字. (4):如果一个服务器既要处理TCP,又要处理UDP (5):如果一个服务器要处理多个服务或多个协议 IO复用并非只限于网络,许多重要的应用程序也需要使用这项技术. 6.2 I/O模型 在Unix下可用的5种I/O模型的基本区别: (1)阻塞式I

一次读懂 Select、Poll、Epoll IO复用技术

我们之前采用的多进程方式实现的服务器端,一次创建多个工作子进程来给客户端提供服务.其实这种方式是存在问题的. 可以打个比方:如果我们先前创建的几个进程承载不了目前快速发展的业务的话,是不是还得增加进程数?我们都知道系统创建进程是需要消耗大量资源的,所以这样就会导致系统资源不足的情况. 那么有没有一种方式可以让一个进程同时为多个客户端端提供服务? 接下来要讲的IO复用技术就是对于上述问题的最好解答. 对于IO复用,我们可以通过一个例子来很好的理解它.(例子来自于<TCP/IP网络编程>) 某教室