(面经总结)一篇文章带你整理面试过程中关于IO 模型的相关知识

本文详细介绍了IO模型的基础知识,包括内核空间与用户空间、文件描述符、直接I/O和缓存I/O的概念。进一步探讨了阻塞I/O、非阻塞I/O、多路复用I/O(select、poll、epoll)以及信号驱动I/O和异步I/O模型的工作原理。重点对比了BIO、NIO和AIO的区别,并补充了非阻塞I/O系统调用与异步I/O系统调用的区别,以及多路复用如何解决阻塞IO的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基础知识

(1)内核空间和用户空间

系统调用将 Linux 整个体系分为用户态和内核态(或者内核空间和用户空间)

内核态:运行操作系统的程序,控制计算机的硬件资源,例如协调CPU资源,分配内存资源,并且提供稳定的环境供应用程序运行

用户态:运行用户程序;

为了使应用程序访问到内核管理的资源例如CPU,内存,I/O;内核必须提供一组通用的访问接口,这些接口就叫系统调用

内核态和用户态最大的区别就是权限不同, 用户态的进程能够访问的资源受到了极大的控制,而运行在内核态的进程可以“为所欲为”。

一个进程可以运行在用户态也可以运行在内核态,那它们之间肯定存在用户态和内核态切换的过程。

  • 系统调用,这个上面已经讲解过了,
  • 异常:如果当前进程运行在用户态,如果这个时候发生了异常事件,就会触发切换。例如:缺页异常。
  • 外设中断:当外设完成用户的请求时,会向CPU发送中断信号。

消耗其实主要发生在用户态和内核态之间的切换,因为切换时需要将用户态的CPU状态保

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南淮北安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值