03.并发IO

并发IO

IO的概念,从字义来理解就是输入输出。操作系统从上层到底层,各个层次之间均存在IO。比如,CPUIO,内存有IO, VMMIO,底层磁盘上也有IO,这是广义上的IO。通常来讲,一个上层的IO可能会产生针对磁盘的多个IO,也就是说,上层的IO是稀疏的,下层的IO是密集的。

所谓的并发IO,即在一个时间片内,如果一个进程进行一个IO操作,例如读个文件,这个时候该进程可以把自己标记为休眠状态并出让CPU的使用权,待文件读进内存,操作系统会把这个休眠的进程唤醒,唤醒后的进程就有机会重新获得CPU的使用权了。这里的进程在等待IO时之所以会释放CPU使用权,是为了让CPU在这段等待时间里可以做别的事情,这样一来CPU的使用率就上来了;此外,如果这时有另外一个进程也读文件,读文件的操作就会排队,磁盘驱动在完成一个进程的读操作后,发现有排队的任务,就会立即启动下一个读操作,这样IO的使用率也上来了。

典型的场景就是Nginx这样的反向代理服务器,Redis这样的数据库以及各种RPC框架;它们的共通点就是会有大量的并发请求,并且每个请求都可能消耗一定的逻辑处理时间。