扫码阅读
手机扫码阅读

女朋友:不跟我解释清楚 Linux I/O 今晚你就睡沙发吧!

94 2024-07-20

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:女朋友:不跟我解释清楚 Linux I/O 今晚你就睡沙发吧!
文章来源:
咸鱼运维杂谈
扫码关注公众号
Linux I/O 模型摘要

前言

本文解释了计算机操作系统中的输入输出(I/O)在 Linux 中的应用,并以文件 I/O 为例介绍了 Linux 的 I/O 模型。程序打开文件时,数据需从硬盘读取到内核缓冲区,再拷贝到程序缓冲区。所有 I/O 模型都需经历这两个阶段。

Linux I/O 模型

阻塞 I/O (BIO)

在阻塞 I/O 中,进程在数据传输的两个阶段均阻塞,直到操作完成。

非阻塞 I/O

非阻塞 I/O 模型中,进程在数据准备阶段不阻塞,而是不断轮询内核,但在数据拷贝阶段阻塞。

I/O 复用

允许进程同时操作多个数据流,使用 select、poll、epoll 等系统调用,进程在数据复制阶段阻塞。

信号驱动 I/O

信号驱动 I/O 在等待数据阶段非阻塞,设置信号回调,数据准备后内核通知进程,但数据拷贝阶段阻塞。

异步 I/O

异步 I/O 模型实现了完全非阻塞的操作,在两个阶段都使用信号回调。

总结

阻塞与非阻塞I/O关注进程是否等待I/O完成,而同步与异步关注进程是否在I/O操作期间阻塞。只有异步 I/O 完全非阻塞,其他四种都是同步 I/O。同步 I/O 包括阻塞 I/O、非阻塞 I/O 和 I/O 复用。

想要了解更多内容?

查看原文:女朋友:不跟我解释清楚 Linux I/O 今晚你就睡沙发吧!
文章来源:
咸鱼运维杂谈
扫码关注公众号