Skip to content

Latest commit

 

History

History
20 lines (20 loc) · 1.82 KB

IO模型了解哪些?.md

File metadata and controls

20 lines (20 loc) · 1.82 KB
  1. 阻塞IO模型(Blocking IO):
    • 在阻塞IO模型中,当应用程序发起IO操作时,会被阻塞直到数据准备好或者IO完成。
    • 这意味着应用程序在进行IO操作时会暂停执行,直到数据准备好可以读取或写入完成后才会继续执行。
    • 阻塞IO模型简单易用,但可能导致资源浪费和性能下降。
  2. 非阻塞IO模型(Non-blocking IO):
    • 在非阻塞IO模型中,应用程序发起IO操作后,并不会被阻塞,而是立即返回结果。
    • 应用程序需要通过轮询等方式主动查询IO操作是否完成,从而实现异步IO操作。
    • 非阻塞IO模型相比阻塞IO模型可以提高系统的并发性能。
  3. 多路复用IO模型(I/O multiplexing):
    • 多路复用IO模型利用操作系统提供的select、poll、epoll等机制同时监控多个文件描述符的IO状态。
    • 当某个文件描述符就绪时,应用程序可以通过事件通知来进行IO操作,避免了阻塞等待。
    • 多路复用IO模型可以有效地管理多个IO操作,提高系统的效率和吞吐量。
  4. 信号驱动IO模型(Signal-driven IO):
    • 信号驱动IO模型通过向内核注册信号处理函数,在IO操作完成时由内核发送信号来通知应用程序。
    • 应用程序可以继续执行其他任务,而无需阻塞等待IO操作完成。
    • 信号驱动IO模型相对于非阻塞IO模型提供了更好的异步IO支持。
  5. 异步IO模型(Asynchronous IO):
    • 异步IO模型通过操作系统提供的异步IO接口来实现IO操作,应用程序可以在IO操作完成后得到通知。
    • 应用程序无需关心IO操作的具体状态,可以继续执行其他任务。
    • 异步IO模型适合处理大量的IO请求,提高系统的响应速度和并发处理能力。