Linux网络I/O模型整理
来源:互联网 发布:edi网络传输的数据是 编辑:程序博客网 时间:2024/05/22 16:38
Linux的内核将所有外部设备都看作一个文件来操作,对一个文件的读写操作会调用内核的系统命令,返回一个fd(file descriptor),对于socket则对应为socket描述符,描述符就是一个数字,指向内核中的一个结构体(文件路径、数据区等)。
根据对I/O模型的分类,linux提供了5种I/O模型。包括阻塞I/O模型、非阻塞I/O模型、I/O复用模型、信号驱动I/O模型、异步I/O。下面将一一介绍。
阻塞I/O模型
进程从调用recvfrom开始到返回的整段时间内都是被阻塞的。
非阻塞I/O模型
I/O复用模型
select/poll机制实现,进程通过将一个或多个fd传递给select或poll系统调用,阻塞在select操作上,这样select/poll可以侦测多个fd是否处于就绪状态。select/poll是顺序扫描fd是否就绪,支持的fd数量有限。
epoll使用基于事件驱动方式代替顺序扫描,性能更高,当有fd就绪时,立即回调函数rollback。
信号驱动I/O模型
首先开启信号驱动I/O功能,通过调用sigaction执行一个信号处理函数(此系统调用立即返回,进程继续工作,非阻塞的)。当数据准备就绪时,就为该进程生成一个SIGIO信号,通过信号回调通知应用程序调用recvfrom来读取数据。
异步I/O模型
告知内核启动某个操作。与信号驱动I/O的主要区别是:信号驱动I/O由内核通知我们何时可以开始一个I/O操作;异步I/O模型由内核通知我们I/O操作何时已经完成。
0 0
- Linux网络I/O模型整理
- Linux网络I/O模型
- 网络I/O模型
- 网络I/O模型
- 网络I\O模型
- 网络 I/O 模型
- Linux I/O 模型
- Linux I/O模型
- linux I/O模型
- linux I/O模型
- Linux I/O模型
- linux I/O模型
- Linux I/O模型
- Linux I/O模型
- UNIX网络I/O模型
- nignx网络I\O模型
- 网络基础 I/O模型
- 《网络编程》I/O 模型
- Ajax学习
- Retrofit指南
- 内外网端口映射
- 修改freemarker的ftl时,不重启tomcat的办法
- 怀念
- Linux网络I/O模型整理
- java 动态代理与静态代理
- 第八周项目3——分数类中的运算符重载(四则运算)
- 清楚固定样式
- Linux常用的网络命令
- Arduino和蜂鸣器制作简单的音乐播放器
- android 利用socket 发送Json数据demo
- 为学习Hadoop使用VMware准备3台一模一样的Linux虚拟机的详细搭建过程
- C#三层中oracle事务的使用