Linux下五种网络IO模型

本文介绍了Linux下的五种网络IO模型:阻塞IO、非阻塞IO、IO复用、信号驱动IO和异步IO,阐述了它们的基本原理和区别,帮助读者更好地理解和运用异步编程。
摘要由CSDN通过智能技术生成

 

本文我们主要来了解一下Unix/Linux下5种网络IO模型:blocking IO, nonblocking IO, IO multiplexing, signal driven IO, asynchronous IO的基本原理,更好的理解在高级语言中的异步编程,一起来看看吧,希望对大家学习linux有所帮助。

  写在前面

  为了更好的理解下面提到的Linux下5种网络IO的概念,我们还是有必要先理清几个概念。

  1.程序空间与内核空间

  在Linux中,对于一次读取IO的操作,数据并不会直接拷贝到程序的程序缓冲区。它首先会被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的缓冲区。p.s: 最后一句话非常重要,重复一遍。

  1. Waiting for the data to be ready(等待数据到达内核缓冲区)

  2.Copying the data from the kernel to the process(从内核缓冲区拷贝数据到程序缓冲区)

  2.阻塞与非阻塞

  阻塞就是说我们某一个请求不能立即得到返回应答,否则就可以理解为非阻塞。

  3.同步IO与异步IO

  这里先直接引用Stevens(POSIX)在Unix网络编程中的定义:

  A synchronous I/O operation causes the requesting process to be blocked until that I/O operation completes.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值