前言
学了C++后发现之前对Java中NIO的理解还是太片面了,所以现在开始更加深入的去学习系统中的IO。学习IO的所有模型可以戳这篇10分钟看懂, Java NIO 底层原理。但是在看之前要先明白操作系统中的用户态和内核态。
值得注意的是Java中的NIO并不是非阻塞式IO(NoneBlocking IO),而是多路复用IO(New IO)。
用户态和内核态
用户态字面理解就是用户使用的空间,内核态则是操作系统使用的空间。在IO中(文件IO或者是网络IO),都是由用户去调用Read读取内核态中的数据,读取数据到用户态;而write则是将数据从用户态写到内核态中,由内核去写入文件或者是通过网络IO(网卡)发送数据。
下图是Linux系统中的用户态和内核态空间分配。
1.特权级的概念
在具体的解释用户态和内核态之前,要先解释一下特权级的概念,简单的理解就是超级会员有普通会员的权限