IO的几个模型

这篇具有很好参考价值的文章主要介绍了IO的几个模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.I/O模型名词介绍

说到I/O模型,都会牵扯到同步、异步、阻塞、非阻塞这几个词,以下讲解这几个词的概念。

阻塞和非阻塞

阻塞和非阻塞指的是一直等还是可以去做其他事。

阻塞(一直等水烧开)(blocking):调用结果返回之前,调用者被挂起(当前线程进入非可执行状态,在这个状态,CPU不会分配时间片,线程暂停运行);

非阻塞(去看电视,时不时看水烧开没有)(nonblocking):调用结果返回之前,调用者不会被挂起(当前线程还是可执行状态,CPU会分配时间片,线程还可以运行)

同步和异步

同步/异步关注的是消息通信机制

同步(不会响的水壶)(synchronous):被调用者完成任务后,不会主动给调用者返回调用结果。

异步(会响的水壶)(asynchronous):被调用者完成任务后,会主动给调用者返回调用结果。

                  

       阻塞、非阻塞、多路IO复用,都是同步IO,异步必定是非阻塞的,所以不存在异步阻塞和异步非阻塞的说法。真正的异步IO需要CPU的深度参与。换句话说,只有用户线程在操作IO的时候根本不去考虑IO的执行全部都交给CPU去完成,而自己只等待一个完成信号的时候,才是真正的异步IO。所以,拉一个子线程去轮询、去死循环,或者使用select、poll、epool,都不是异步。

二.I/O模型类型

IO模型分为以下五类

  1. 阻塞I/O:所有过程全阻塞
  2. 非阻塞I/O:如果没有数据buffer,则立即返回EWOULDBLOCK
  3. I/O复用型(select和poll):在wait和copy阶段分别阻塞
  4. 信号驱动型I/O(SIGIO):在wait阶段不阻塞,但copy阶段阻塞(信号驱动I/O),即通知
  5. 异步I/O(AIO):完全无阻塞方式,当I/O完成时提供信号

1.阻塞I/O

IO的几个模型,计算机,数据库,java,sql

说明:应用程序调用一个IO的recvfrom函数,会导致应用程序阻塞,进入阻塞状态后直到I/O操作结束才会返回;如果系统内核数据没有准备好,那就一直等待数据准备,因为是调用了recvfrom函数导致了应用程序阻塞,所以一直在等,做不了任何事情,内核数据准备好之后把数据从内核拷贝到用户空间,拷贝结束后,I/O函数返回成功指示。 注:其阻塞时在I/O操作阶段

2.非阻塞I/O

IO的几个模型,计算机,数据库,java,sql

说明:用户线程发起IO请求时立即返回。但并未读取到任何数据,则返回字段为“EWOULDBLOCK”,用户线程需要不断地发起IO请求,直到数据到达后,才真正读取到数据,继续执行。即“轮询”机制。 整个IO请求过程中,虽然用户线程每次发起IO请求后可以立即返回,但是为了等到数据。仍需要不断地轮询、重复请求、消耗了大量的CPU资源;是比较浪费CPU的方式,一般很少用这种模型,而是在其他模型中使用非阻塞IO这一特性。

3.I/O复用(select和poll)

IO的几个模型,计算机,数据库,java,sql

说明:I/O复用模型会用到select或poll函数,在I/O复用模型中,并不是阻塞到I/O操作过程中,而是阻塞到select或者poll函数中; 以select为例:进程在select处阻塞,等待几个描述符中的一个变为可操作,如果没等待到就继续阻塞在第一阶段,如果等到了一个描述符变为了可操作,则调用recvfrom函数将数据拷贝到应用缓冲区。

4.信号驱动I/O(SIGIO)

IO的几个模型,计算机,数据库,java,sql

说明:首先,我们允许套接口进行信号驱动I/O,并安装一个信号处理函数SIGIO,如果数据没有准备好,则立即返回结果,进程继续工作并不阻塞。当数据准备好时,系统内核会主动发送一个SIGIO信号给应用程序,应用程序收到信号后,可以在信号处理函数中调用I/O操作函数recvfrom进行数据处理。 信号驱动I/O模型的优点是当数据报到达时,可以不阻塞,主循环可以继续执行,只是等待处理程序的通知,或者数据已经准备好被处理,或者数据报已经准备好被读了。

5.异步I/O(AIO)

IO的几个模型,计算机,数据库,java,sql

说明:当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态通知和回调通知来告诉调用者的输入输出操作。 用户可以直接对I/O执行读写操作,这些操作告诉内核用户读写缓冲区的位置,以及I/O操作完成之后内核通知应用程序的方式,就是上面讲的通过状态通知或者回调通知来告诉调用者。异步I/O的读写操作总是立即返回,但没有返回结果说是否阻塞,因为异步I/O操作真正的读写操作已由内核接管,内核自己对数据处理完成后生成一个信号,然后通知用户刚才交给自己的事件已经处理完成。

五种I/O模型的总结及比较

中文图示如下:

IO的几个模型,计算机,数据库,java,sql

英文图示如下:

IO的几个模型,计算机,数据库,java,sql

从两张图中我们可以看到,越往后,阻塞越少,理论上效率也是最优。 其中五种I/O模型中,前三种属于同步I/O,后两者属于异步I/O。文章来源地址https://www.toymoban.com/news/detail-656582.html

到了这里,关于IO的几个模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决MySQL数据库拒绝远程计算机连接问题

    错误信息:Host is not allowed to connect to this mysql server 以前MySQL数据库部署在云服务器上,程序服务端也部署在云服务器上,连接服务器从没出现过问题。最近有一次需要做一个完全局域网的环境部署,我把数据库和程序服务端部署在里两台不同的电脑上,访问数据库的时候出现

    2024年02月09日
    浏览(28)
  • 【软考数据库】第一章 计算机系统基础知识

    目录 目录 1.1 计算机系统 1.1.1 计算机硬件组成 1.1.2 中央处理单元 1.1.3 数据表示 1.1.4 校验码 1.2 计算机体系结构 1.2.1 体系结构分类 1.2.2 指令系统存 1.2.3 储系系统 1.2.4 输入/输出技术 1.2.5 总线结构 1.3 可靠性、性能、安全 1.3.1 计算机可靠性 1.3.2 计算机系统的性能评价 1.

    2023年04月13日
    浏览(89)
  • 山东专升本计算机第六章-数据库技术

    数据库技术 SQL数据库与NOSQL数据库的区别 数据库管理系统 考点 6 数据库管理系统的组成和功能 组成 • 模式翻译 • 应用程序的翻译 • 交互式查询 • 数据的组织和存取 • 事务运行管理 • 数据库的维护 功能 • 数据定义功能 • 数据存取功能 • 数据库运行管理能力 • 数

    2024年02月05日
    浏览(32)
  • 11K+ Star!图解计算机网络、操作系统、计算机组成、数据库!

    大家好,我是 Java陈序员 。 俗话说得好, 面试造火箭,入职拧螺丝 。我们在工作中,其实很少用到一些计算机底层知识,往往只要编码完事。但是, 知其然还要知其所以然 ,我们不仅要做一个合格的“CV 工程师”,更是要掌握一些底层原理! 计算机基础知识,作为计算机

    2024年02月05日
    浏览(83)
  • 三、计算机理论-关系数据库-结构化查询语言SQL

    SQL 概述 是一种介于关系代数与关系演算之间的语言,现成为关系数据库的标准语言 特点:综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方式(直接使用或者嵌入高级语言使用)、语言简洁,易学易用。 四大功能如下: SQL功能 动词 数据查

    2024年01月24日
    浏览(48)
  • 计算机复试面试基础知识(八股文)(数据库、数据结构、操作系统、计网、机组等)

    数据库绪论 1、简述三层模式、两级映射,分别有什么作用? 模式(逻辑模式):是数据库中全体数据的逻辑结构和特征的描述,是数据库系统模式结构的中间层,即不涉及数据的物理存储细节,也与具体应用程序开发工具语言无关。 外模式(用户模式):是用户能看见和使

    2023年04月09日
    浏览(96)
  • 数据增强:让计算机视觉模型更加智能和有效

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 随着计算机视觉技术的快速发展,各种数据增强技术也应运而生。数据增强技术可以有效地提高计算机视觉模型的智能和有效性,从而在众多应用场景中取得更好的表现。 1.2. 文章目的 本文旨在阐述数据增强技术在计算机视

    2024年02月08日
    浏览(31)
  • 系统架构设计师---计算机基础知识之数据库系统结构与规范化

    目录 一、基本概念  二、 数据库的结构  三、常用的数据模型         概念数据模型        基本数据模型        面向对象模型 四、数据的规范化      函数依赖       范式   1. 数据库 (DataBase, DB) : 是指长期储存在计算机内的、有组织的、可共享的数据集合。   

    2024年02月12日
    浏览(39)
  • 数据增强:如何让计算机视觉模型更加准确和可靠

    作者:禅与计算机程序设计艺术 数据增强(Data Augmentation)是一种常用的技术,可以提高计算机视觉模型的精度和鲁棒性。本文主要介绍数据增强技术的原理、分类方法及应用。通过实例分析,阐述数据增强对模型精度提升的重要作用。最后,讨论一些未来可能遇到的问题与

    2024年02月07日
    浏览(31)
  • java碳排放数据信息管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

    一、源码特点     java Web碳排放数据信息管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环 境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。 java Web碳排放数据信

    2024年01月22日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包