相信很多人在面试的过程中,都被问到过同步和异步的区别、阻塞和非阻塞的区别,以及这两对关系又有什么联系?本文尽可能从专业的角度,用易懂的语言,帮助大家理解
01 前置知识
用户空间和内核空间
操作系统可以支持多个进程同时运行,但需要保证不同进程之前不会相互影响(即一个进程不能恶意读取或修改其他进程中的数据)。因此将操作系统分为用户空间和内核空间,用户空间进行数据的处理,而对于数据的读写以及其他的调度和管理,则有内核空间处理
进程通信
两个进程通信的时候,都会将数据从用户空间的缓冲区拷贝到内核空间的缓冲区,然后将内核空间缓冲区的数据发送出去。接收的时候相反,会先把网络传输过来的数据放置到内核缓冲区中,然后再拷贝到用户空间的缓冲区中进行处理
02 相关概念
关于同步、异步、阻塞、非阻塞在《操作系统概念(第九版)》中有如下解释