bio和nio
1. 用户态和内核态 操作系统为了限制程序的数据访问,来防止获取其他进程或外围设备数据,将CPU划分为用户态和内核态: 内核态(Kernel Mode):cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。 用户态(User Mode):只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序获取。 一个完整的I/O操作分为两步: 用户层API调用; 内核层完成系统调用,实际调用read发起I/O请求,读取socket中的内容。 通常讲的“异步/同步”的是指用户层API调用;“阻塞/非阻塞”是指内核完成I/O调用的模式: nio是同步阻塞io,bio是同步非阻塞io,两者的区别在于是否阻塞,就是内核层io调用模式。并且阻塞是对于网络io来说的,对于磁盘io,总是视为非阻塞的。 同步是指API调用完成之前会一直等待;阻塞是指系统调用的时候,如果没有数据可供操作,那么线程就会阻塞,直到有有新的数据到来。例如当系统调用read从socket里读取数据,如果此时没有数据可读,线程阻塞,直到有数据可读。 2....




