day1 IO 模型

文章详细介绍了基本的I/O概念,包括内存I/O、网络I/O和磁盘I/O。同步和异步主要关注于对结果的等待机制,而阻塞和非阻塞则关乎线程在等待消息时的状态。线程可能因调用阻塞操作、等待锁或条件而进入阻塞状态。文章列举了可能阻塞套接字的LinuxSocketsAPI调用,并概述了五种I/O模型:阻塞I/O、非阻塞I/O、I/O多路复用、信号驱动I/O和异步I/O,以及它们之间的对比。
摘要由CSDN通过智能技术生成

目录

基本概念

同步和异步

阻塞和非阻塞

线程在运行过程中,可能由于以下几种原因进入阻塞状态:

可能阻塞套接字的Linux Sockets API调用分为以下四种

五种 I/O 模型

阻塞I/O

非阻塞I/O

​编辑

 I/O多路复用模型

 信号驱动式I/O模型

 异步I/O 模型

 五种 I/O 模型的对比​编辑


基本概念

I/O 即数据的读取(接收)或写入(发送)操作;

通常用户进程中的一个完整I/O 分为两个阶段

        1、用户进程空间<-->内核空间;

        2、内核空间 <--> 设备空间(磁盘、网卡等)

I/O 分为内存I/O 、网络I/O 和磁盘I/O 三种;

同步和异步

1、对于一个线程的请求调用来讲,同步和异步的区别在于是否要等这个请求出最终结果;

2、对于多个线程而言,同步或异步就是线程间的步调是否要一致、是否要协调;

3、同步也经常用在一个线程内先后两个函数的调用上;

4、异步就是一个请求返回时一定不知道结果,还得通过其他机制来获知结果,如:主动轮询或被动通知。

阻塞和非阻塞

1、阻塞与非阻塞与等待消息通知时的状态(调用线程)有关

2、阻塞和同步是完全不同的概念。同步是对于消息的通知机制而言,阻塞是针对等待消息通知时的状态来说的

3、进程从创建、运行到结束总是处于下面五个状态之一:新建状态、就绪状态、运行状态、阻塞状态及死亡状态

线程在运行过程中,可能由于以下几种原因进入阻塞状态:
 

1、线程通过调用sleep方式进休眠状态

2、线程调用一个在I/O上被阻塞的操作,即该操作在输入/输出操作完成前不会返回到它的调用者

3、线程试图得到一个锁,而该锁正被其他线程持有,于是只能进入阻塞状态,等到获取了同步锁,才能恢复执行

4、线程在等待某个触发条件

可能阻塞套接字的Linux Sockets API调用分为以下四种

1、输入操作

2、输出操作

3、接受连接

4、外出连接

五种 I/O 模型

阻塞I/O

非阻塞I/O

 I/O多路复用模型

 信号驱动式I/O模型

 异步I/O 模型

 五种 I/O 模型的对比

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值