1.5种IO模型
2022-04-06 02:26:45 0 举报
1阻塞 2非阻塞 3 IO复用 4信号 5异步
作者其他创作
大纲/内容
sigaction系统调用
. . .
SIGIO
等待数据就绪,拷贝数据
处理数据
系统调用
4.信号驱动I/O
5.异步IO
内核
递交至aio_read指定的信号
SIGIO 是一种UNIX信号,无法区分TCP socket七种之多的信号事件,目前用在UDP和NTP服务器上
read
3.IO复用
信号处理
可读事件
应用进程建立SIGIO的信号处理程序
epoll_wait
类似观察者模式
使用fcntl把connect accept read/write设为非阻塞
进程阻塞于select()调用
数据就绪,拷贝数据
写文件描述符
内核无数据
进程阻塞于read调用
文系统调用本
返回可读事件
等待可调用事件触发
拷贝完成
EAGIN
应用进程
return
内核无可读事件触发
阻塞等待
应用进程read
读文件描述符
select(poll)
1.阻塞I/O
内核无数据准备就绪
应用进程aio_read
数据处理
select/epoll 是顺序扫描fd就绪,而且支持的fd数量不宜过大,因此使用受到了一些制约
异常事件描述符
2.非阻塞I/O
信号处理程序处理数据
0 条评论
回复 删除
下一页