快速与慢速系统调用:信号如何唤醒阻塞的系统调用

2025-06-03

本文深入探讨了操作系统中快速和慢速系统调用的核心区别。快速系统调用(如`getpid()`)立即返回,而慢速系统调用(如`read()`)可能因等待外部事件而阻塞。文章重点介绍了信号如何中断阻塞的慢速系统调用,并通过代码示例演示了`EINTR`错误的处理以及`SA_RESTART`标志的使用。此外,文章还分析了磁盘I/O的特殊性以及内核对不同类型系统调用的处理机制,并比较了各种I/O模型(阻塞I/O、非阻塞I/O、I/O多路复用、信号驱动I/O、异步I/O和I/O Uring)的优缺点。

开发 I/O模型