1 disk->disk controller->DMA(direct memory access)->kernel space buffer -> user space buffer
从kernel到user space的拷贝非常浪费了。
2 内存映射可以减少这种浪费。
a)减少了read() write()等系统调用。
b)减少了buffer间的拷贝
3 MMU(Memory management unit)来管理虚拟内存的映射。
4 file lock(文件锁)。读写锁,读锁可以并发,写锁只能独占。
5 硬盘的读是block io,tty console及网络则是stream io。stream(流)一般慢于block(块)。
6 nio中,Buffer的compact:将pos及数据移到0
7 Direct Buffer : 连续的地址空间,而jvm 的byte array并不一定是连续的。需由native方法实现,ByteBuffer.allocateDirect()