美文网首页
Uinx系统下的I/O模型

Uinx系统下的I/O模型

作者: 一ccc | 来源:发表于2018-01-07 17:51 被阅读0次

5种I/O模型的基本区别:

  • 阻塞式I/O
  • 非阻塞式I/O
  • I/O复用(select,poll,epoll)
  • 信号驱动式I/O(SIGIO)
  • 异步I/O(POSIX的aio_系列函数)

1阻塞式I/O模型

1.png

recvfrom函数视为系统调用,因为要区分应用进程和内核.
进程调用recvfrom,其系统调用知道数据报到达且被应用进程的缓冲区中或者发生错误时才返回.最常见的错误是系统调用与信号中断,进程在从调用recvfrom开始到它返回的整段时间内都是阻塞的,recvfrom成功返回后,,应用进程开始处理数据报.

2非阻塞式I/O

进程把一个套接字设置成非阻塞是在通知内核:当所请求的I/O操作非得把本进程投入睡眠才能完成,不要把本进程投入睡眠,而是返回一个错误.所以应用程序轮询(polling)内核已查看操作是就绪.这个过程超级浪费CPU时间.

一看就懂得图...真的好用
2.png

非阻塞套接字在控制建立的多个连接,在数据的收发量不均,时间不定时,明显具有优势。这种套接字在使用上存在一定难度,但只要排除了这些困难,它在功能上还是非常强大的。

I/O复用模型

简介:主要是select和epoll;对一个IO端口,两次调用,两次返回,比阻塞IO并没有什么优越性;关键是能实现同时对多个IO端口进行监听;

I/O复用模型会用到select、poll、epoll函数,这几个函数也会使进程阻塞,但是和阻塞I/O所不同的的,这两个函数可以同时阻塞多个I/O操作。而且可以同时对多个读操作,多个写操作的I/O函数进行检测,直到有数据可读或可写时,才真正调用I/O操作函数


3.png

4信号驱动式I/O模型

POSIX信号处理

4.png

5异步I/O模型

异步I/O由POSIX规范定义.
一版来说,这些函数的工作机制是:告知内核启动某个操作,并让内核在整个操作(包括将数据从内核复制到我们自己的缓冲区)完成后通知我们.
信息驱动式I/O是由内核通知我们何时可以启动一个I/O操作,而异步I/O模型是由内核通知我们I/O操作何时完成


5.png

5种I/O模型的比较

6.png

相关文章

  • Uinx系统下的I/O模型

    5种I/O模型的基本区别: 阻塞式I/O 非阻塞式I/O I/O复用(select,poll,epoll) 信号驱...

  • 聊聊面试中的IO

    [toc] I/O模型 阻塞I/O 最常见的I/O模型,默认情况下通过read或者write等系统调用读写文件或者...

  • Java I/O 模型

    UNIX系统下的I/0模型有5种:同步阻塞I/O、同步非阻塞I/O、I/O多路复用、信号驱动I/O和异步I/O。 ...

  • Unix网络编程-I/O模型

    1. I/O 模型 Unix下可用的5种I/O模型: 阻塞式I/O; 非阻塞式I/O; I/O复用(select ...

  • 大厂求职必看!Tomcat线程模型—全网最清晰的讲解!

    UNIX系统的I/O模型 同步阻塞I/O、同步非阻塞I/O、I/O多路复用、信号驱动I/O和异步I/O。 什么是 ...

  • linux I/O5中模型认识

    linux I/O5中模型 引入I/O模型 标准I/O: 缓存 IO 又被称作标准 IO,大多数文件系统的默认 I...

  • Unix系统下的I/O模型

    Unix系统下一共有5种I/O模型: 阻塞式I/O; 非阻塞式I/O; I/O复用(select 和 poll);...

  • Linux I/O模型的前世今生

    Linux I/O模型 阻塞式I/O模型 非阻塞式I/O模型 I/O复用式模型 信号驱动式I/O模型 异步I/O模...

  • netty

    I/O 模型 阻塞I/O模型(BIO) 非阻塞I/O模型 I/O复用模型(select/poll;epoll)se...

  • 第六章 设备管理1

    一、I/O系统的功能、模型和接口 1、基本任务: 1)完成用户提出的I/O请求, 2)提高I/O速率、改善I/O设...

网友评论

      本文标题:Uinx系统下的I/O模型

      本文链接:https://www.haomeiwen.com/subject/glhmnxtx.html