实际上任何Linux发行版(Centos/RedHat....),其系统内核都是Linux。我们的应用都需要通过Linux内核与硬件交互。为了避免用户应用导致冲突甚至内核崩溃,用户应用与内核是分离的:
-
进程的寻址空间会划分为两部分:内核空间、用户空间。
-
用户空间只能执行受限的命令(Ring3),而且不能直接调用系统资源,必须通过内核提供的接口来访问。
-
内核空间可以执行特权命令(Ring0),调用一切系统资源。
Linux操作系统为了提高IO效率,会在用户空间和内核空间都加入缓冲区:
-
往磁盘写数据时,要先把用户缓冲区数据拷贝到内内核缓冲区,然后再写入磁盘。
-
从磁盘读数据时,要先将数据从磁盘读取到内核缓冲区,然后再拷贝到用户缓冲区。