1.操作系统是一个运行在硬件之上的软件系统,操作系统控制IO(磁盘,网络(socket)),cpu,内存的绝对控制权限,这些操作都是在内核空间完成的。
2.操作系统对外提供一些接口,其他接口可以调用这些接口控制外设,而用户的这些代码运行在用户空间里面,而这里里面的一些指令不能操作内核控制的一些设备或者内存区间。
3.大家都知道,IO(网络IO和磁盘IO)都是一种设备,需要读取磁盘和网卡,而这些设备用户不能直接控制,只能委托操作系统去调用,保证安全。而IO的描述符大小是有限制的,这与操作系统的实现有关,比如同时最多打开多少个文件,并发连接数的最大个数,而这些在hadoop生态系统就会遇到。
4.IO里面的网络IO和磁盘IO读写的内存数据拷贝,效率低下(有用户buffer拷贝到内核buffer,再有内核buffer拷贝到IO设备的Buffer),所以为了减少拷贝。