I/O操作——同步与异步,阻塞与非阻塞

本文介绍了I/O操作的基本概念,包括同步与异步、阻塞与非阻塞的区别。同步是关注CPU与进程间的交互,阻塞与非阻塞关注进程执行状态。I/O模型包括阻塞I/O、非阻塞I/O、异步I/O、信号驱动I/O和I/O多路复用。每种模型在处理I/O操作时有不同的方式,如阻塞I/O会等待数据准备完成,而非阻塞I/O在数据未准备好时返回错误。异步I/O则由内核通知用户进程操作完成。
摘要由CSDN通过智能技术生成

一、什么是I/O?

I/O是Input/Output(输入/输出),可分为I/O设备和I/O接口两个部分。

二、什么是I/O操作?

在Linux中,一切皆文件,而文件是什么呢?文件就是一串二进制流而已,不管socket,还是FIFO、管道、终端,一切都是文件,一切都是流。在信息交换的过程中,我们对这些流进行数据的收发操作,简称为I/O操作(input and output),简言之就是磁盘读写,从数据流中读取数据,系统会调用read(读取数据);写入数据,系统调用write(写入数据)。不过 ,计算机里有这么多的流,我怎么知道要操作哪个流呢?对,就是文件描述符,即通常所说的fd,一个fd就是一个整数,所以,对这个整数的操作,就是对这个文件(流)的操作。我们创建一个socket,通过系统调用会,返回一个文件描述符,那么剩下对socket的操作就会转化为对这个描述符的操作。

三、同步异步,阻塞与非阻塞之间的区别与联系

实际上同步与异步是针对应用程序与内核的交互而言的。同步过程中进程触发IO操作并等待(也就是我们说的阻塞)或者轮询的去查看IO操作(也就是我们说的非阻塞)是否完成。 异步过程中进程触发IO操作以后,直接返回,做自己的事情,IO交给内核来处理,完成后内核通知进程IO完成。

同步和异步对应用程序而言关注的是cpu与进程中间的协作关系;阻塞与非阻塞更关注的是单个进程的执行状态。

同步有阻塞和非阻塞之分,异步没有&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值