Linux中的CFQ调度器有一组请求queues.The,来自进程的同步请求进入单独的每进程请求队列,而所有异步请求进入一组共享队列。
如何将请求分类为同步或异步?在这个上下文中,异步是否意味着使用内核AIO完成IO?(以及所有其他正常的read()/write()和buffered fread()/fwrite()被算作同步)
发布于 2012-01-10 19:32:06
同步请求是那些在进程完成之前被阻塞的请求,异步请求是那些进程可以在其完成时并行继续的请求。
通常,程序进行的所有正常读取都是同步的,因为在获得所请求的数据之前,进程无法前进。然而,写入在本质上通常是异步的-只要保证进程看到它执行的所有写入,这由缓冲区/页面缓存负责,一旦调用了write系统调用,该进程就不关心数据实际写入存储设备的时间。
从那时起,事情就变得复杂了: fsync()系统调用是一个同步请求,对于日志文件系统上的一些元数据更改调用也是如此,但在非日志文件系统上不是这样,依此类推……
https://stackoverflow.com/questions/8799813
复制相似问题