`

5种IO模型

    博客分类:
  • IO
阅读更多
Linux的内核将所有外部设备都看做一个文件来操作,对一个文件的读写操作会调用内核提供的系统命令,返回一个file descriptor(fd,文件描述符),对一个socket的读写也会有相应的描述符,称为socketfd(socket描述符),描述符就是一个数字,它指向内核中的一个结构体(文件路径,数据区等一些属性)最上面是用户(或应用程序)空间。

GNU/Linux 操作系统的基本体系结构如下图所示:user space这是用户应用程序执行的地方。用户空间之下是内核空间,Linux 内核正是位于这里。GNU C Library (glibc)也在这里。它提供了连接内核的系统调用接口,还提供了在用户空间应用程序和内核之间进行转换的机制。这点非常重要,因为内核和用户空间的应用程序使用的是不同的保护地址空间。每个用户空间的进程都使用自己的虚拟地址空间,而内核则占用单独的地址空间。


Linux五种IO模型
IO阻塞模型
在缺省情形下,所有文件操作都是阻塞的,比如套接字接口,在进程空间中调用recvfrom,其系统调用直到数据包到达且被复制到应用进程的缓冲区中或者发生错误时才返回,进程在调用recvfrom开始到它返回的整段时间内都是被阻塞的,因此被称为阻塞I/O模型

IO非阻塞模型

recvfrom从应用层到内核的时候,,如果该缓冲区没有数据的话,就直接返回EWOULDBLOCK错误,一般都对非阻塞I/O模型进行轮询检查这个状态,看内核是不是有数据到来

IO复用模型

Linux提供select/poll,进程通过将一个或多个fd传递给select或poll系统调用,阻塞在select操作上,这样select/poll可以帮我们侦测多个fd是否处于就绪状态,select/poll是顺序扫描fd是否就绪,但是支持的fd数量有限,Linux还提供了一个epoll系统调用,epoll使用基于事件驱动方式代替顺序扫描,当有fd就绪时,立即回调函数rollback;

信号驱动IO模型

首先开启套接口信号驱动I/O功能,并通过系统调用sigaction执行一个信号处理函数(调用后立即返回,进程继续工作,非阻塞),当数据准备就绪时,就为该进程生成一个sigio信号,通过信号回调通知应用程序调用recvfrom来读取数据,并通知主循环函数来处理函数

异步IO

告知内核启动某个操作,并让内核在整个操作完成后(包括将数据从内核复制到用户自己的缓冲区)通知我们,这种模型与信号驱动模型的主要区别是:信号驱动由内核通知我们何时可以开始一个I/O操作;异步I/O模型由内核通知我们I/O操作何时已经完成
  • 大小: 30.8 KB
  • 大小: 37 KB
  • 大小: 30.8 KB
  • 大小: 29.1 KB
  • 大小: 56.1 KB
  • 大小: 45.5 KB
  • 大小: 29.4 KB
分享到:
评论
1 楼 QING____ 2015-09-14  
不错,继续努力!

相关推荐

    Windows Socket五种IO模型

    Windows 操作系统提供了五种 IO 模型,分别是选择模型(Select)、异步选择模型(WSAAsyncSelect)、事件选择模型(WSAEventSelect)、重叠 IO 模型(Overlapped I/O)和完成端口模型(Completion Port)。每一种...

    Linux 下的五种 IO 模型详细介绍

    在深入探讨Linux下的五种IO模型之前,我们先来了解一些基础概念。在Linux操作系统中,进程与内核之间的交互非常重要,特别是涉及到输入输出(IO)操作时更是如此。本文将详细解释Linux系统中的五种IO模型,包括它们...

    ws Socket五种IO模型代码

    WS Socket五种IO模型代码 作为一名IT行业大师,我将根据提供的文件信息,生成相关知识点,以下是详细的解释: WS Socket五种IO模型 在Windows平台上构建服务器应用时,I/O模型是必不可少的考虑因素。Windows操作...

    windows socket 五种IO模型-代码全攻略

    本文将深入探讨五种常见的Windows Socket I/O模型,并提供相应的代码示例,帮助你全面理解并应用这些模型。 1. 同步阻塞I/O模型(Blocking I/O) 这是最基础的模型,当调用recv或send函数时,如果数据未准备好,...

    重叠IO模型

    重叠IO模型是一种高效处理输入/输出(I/O)操作的机制,特别是在多任务和并发环境中。这种模型允许操作系统在进行I/O操作的同时处理其他任务,从而提高系统资源的利用率和程序的响应速度。在本文中,我们将深入探讨...

    WinSock 异步IO模型

    WinSock异步IO模型是Windows Socket编程中一种高效的数据传输方式。它允许应用程序在等待数据传输完成时执行其他任务,从而提高系统资源利用率和程序响应性。与传统的同步IO模型不同,异步IO不会阻塞调用线程,而是...

    linux 5中 IO模型.pptx

    5. 异步IO模型(AIO): 异步IO是最复杂的模型,也是效率最高的。应用进程通过aio_read系统调用发起IO请求,然后立即返回,不等待数据准备或拷贝。当数据准备好时,内核会自动完成数据拷贝,并通过预先设置的回调...

    网络编程IO模型源代码

    IO模型主要有五种:同步阻塞IO、同步非阻塞IO、I/O多路复用、信号驱动IO和异步非阻塞IO。每种模型都有其特点和适用场景: 1. **同步阻塞IO**:这是最基础的模型,当进行IO操作时,进程会被阻塞,直到IO操作完成。...

    winsock IO五种模型

    这是winsocket的五种IO模型实现,压缩里面有2个VC控制台应用程序工程: 1、winsock_server工程,服务器端。这里实现了五种winsoket IO模型,你要看那个模型的代码,只需要把那个模型的注释代码放开,其他模型的代码...

    IO模型编程实例

    本篇文章将深入探讨四种主要的IO模型:阻塞IO、无阻塞IO、多路复用IO(也称为选择器或I/O多路复用)以及异步IO,结合源码分析来帮助理解它们的工作原理和应用。 首先,我们来看**阻塞IO**。在这种模型中,当一个...

    Factory IO 电梯模型

    5. **故障诊断与安全机制**:在电梯模型中,学习者会接触到安全相关的编程,例如超速保护、门防夹机制、电梯停止后的紧急操作等。 6. **优化调度**:在复杂场景中,多部电梯的调度算法是一个重要的考虑因素,如何...

    五种常见的IO模型.pdf

    "五种常见的IO模型" IO 模型是计算机科学中一个基本概念,它描述了计算机系统中输入/输出(IO)操作的处理方式。不同的 IO 模型具有不同的特点和应用场景,了解这些模型对开发高效、可靠的计算机系统非常重要。 一...

    Winsockt_IO模型

    选择哪种IO模型取决于具体的应用需求。对于需要高效处理大量并发连接的服务器,通常会选择IO复用模型或异步IO模型。而对于简单的客户端应用,同步IO模型可能就足够了。 四、Winsockt_IO模型的优化 为了提高性能,...

    linux io 模型

    linux io模型,区分阻塞非阻塞同步异步的概念,从底层理解io。

    Linux下IO模型及epoll介绍

    Linux IO模型 epoll 多进程模型 Socket

    IO模型介绍

    接下来,我们将详细介绍五种基本的IO模型,这些模型是理解和设计高性能网络应用程序的基础。 1. **阻塞IO**:这是最简单的IO模型。在读写操作发生时,调用线程会被阻塞直到操作完成。阻塞IO简单易懂但效率较低,...

    网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO

    - **BIO(Blocking IO)**:这是Java早期提供的IO模型,特点是简单易用,但效率较低,适用于连接数量较少且对响应时间要求不高的场景。 - **NIO(Non-blocking IO)**:NIO提供了非阻塞的能力,通过选择器可以同时...

    IO模型与性能分析

    ### IO模型与性能分析 #### 一、基本概念与背景 在探讨IO模型与性能分析之前,我们需要了解一些基础概念: - **时钟周期**:指的是一个时钟脉冲所持续的时间,它是衡量处理器速度的基本单位之一。 - **总线周期**...

    幽默Socket+IO模型.doc幽默Socket+IO模型.doc

    4. **异步I/O(Asynchronous I/O)**:如上所述的Overlapped I/O模型就是一种异步I/O实现,允许应用程序提交I/O操作后立即返回,而不必等待操作完成,从而提高程序的并发性和响应性。 ### 示例代码分析 文档中还...

    异步IO模型编程实例(纯C语言)

    "异步IO模型编程实例(纯C语言)" 异步IO模型是指在进行IO操作时,不会阻塞当前线程或进程,而是将IO操作交由操作系统或专门的IO处理线程处理,从而提高系统的并发性和响应速度。在Windows平台上,异步IO模型主要...

Global site tag (gtag.js) - Google Analytics