linux IO的比较
借用其他博客的图形,如侵权请告知。
阻塞IO和非阻塞IO的主要区别是:进程(线程)在执行过程中是否立即返回(可以这么理解).阻塞IO是则是在系统调用函数的内核中。
同步IO和异步IO:
- 同步IO: 请求进程被阻塞,直到IO操作完成。
- 异步IO:请假进行不会被阻塞。
所以常用IO可以区分为:
- 同步阻塞IO:
- 同步:做一件事情,等待完成,
- 阻塞:等待完成期间,不能去做别的任务;
- 同步非阻塞IO:
- 同步:做一件事情,等待完成,
- 非阻塞:期间可以去做别的任务,但是要不停地查看是否被完成。
- 异步阻塞IO:(一般不用)
- 异步:做一件事情,不等待完成,完成后通知我。
- 阻塞:在等待的过程中,不能做任何任务。
- 异步非阻塞IO:
- 异步:做一件事情,不等待完成,完成后通知我。
- 非阻塞:在等待的过程中,去做别的任务,完成后通知我。
Linux 的IO 模型
linux的IO模型主要分为:
阻塞式I/O
非阻塞式I/O
I/O复用(select,poll,epoll等)
信号驱动式I/O(SIGIO)
异步I/O(POSIX的aio_系列函数)