其实我也是一知半解。从计算机架构来说,IO的含义是通过IO总线读写数据到内存中,或者是DMA直接读取(看图)。可以看成是计算机各组件之间根据底层协议和接口发生的通信。不是cpu中寄存器的运算操作。
从汇编的层面看。命令mov设置好输出输入的端口port,然后用in, out命令和memory器件进行通信传输数据。
读写操作中的open,read,write,close,flush都是操作系统或者是底层的函数会把具体IO的操作都做好。
java是跑在虚拟机上,但是很多的native函数是基于虚拟机所在的计算机架构,也就是虚拟机会去实现。
java中的这几种分类,我记得是buffer和不buffer,byte和bit来读写。区别只是在于存储设备如果不是内存很可能是硬盘,硬盘是字符设备,按照字符来存储的,欧不是,是块设备,是一整块的数据读出来。所以可能一个个字节读取还是按照字节读取,这个操作依然是远没有现在cpu的计算性能高的。都可能对cpu的计算产生阻塞。
buffered或者是其他的名称的类是指会写到缓存,或者写到其他地方去。那就要理解什么是缓存,以及这种读写方式硬件层面的操作。
--
java老鸟一只,其实也是思维混乱,表述不清。希望能有点启发。自己百度也是可以的
IO控制的几种方式