小盯裆 (@little_dingdang) 在 IO模型那些事儿 中发帖
0x00 背景
我们在学习编程时经常接触到林林色色的IO模型,例如阻塞IO,非阻塞IO,异步IO,IO多路复用,信号驱动IO等等,这也是我在很多面经里面看到的经常被问到的话题,我自己之前也是一知半解,知道点儿但不多,最近工作需要深度学习 netty ,于是又回顾了一下关于IO模型的理论,感悟颇多,遂记录之
0x01 概念
首先需要厘清IO模型的关键概念,有这些:
I/O:即input和output,从程序的角度来说,是应用程序向文件或者网络套接字输入数据或者输出数据的过程。
内核空间:操作系统内核进程运行的地方,具备对硬件系统的完全控制权限,常驻内存。
用户空间:用户应用程序进程默认运行的地方,不允许直接在内核空间区域进行读写,也不允许直接调用内核代码定义的函数。
系统调用:如果应用程序想要从用户态进入内核态执行特定操作(如文件读写),唯一的途径是执行系统调用向...