从操作系统概念出发
影响I/O性能的另一个问题是对file系统的写入是同步发生还是异步发生。同步写入按磁盘子系统接收它们的顺序进行,而写入不被缓冲。因此,调用例程必须等待数据到达磁盘驱动器才能继续。在异步写入中,数据存储在缓存中,控制返回给调用方。大多数写都是异步的。然而,元数据写入,除其他外,可以是同步的。操作系统经常在
open系统调用中包含一个flag,以允许同步执行写入的进程请求。例如,数据库将此特性用于原子事务,以确保数据以所需的顺序达到稳定的存储。
open系统调用中包含一个flag,以允许进程同步执行写入的请求。”通过调用哪些函数可以实现同步写入,以及如何调用它们?是open()和O_DIRECT吗?write()是阻塞的,并在完成对缓冲区缓存的写入时返回,这是否正确?write()是否由引号中的定义同步写入?aio_write()也称为异步I/O。aio_write()是否异步写入?谢谢。
发布于 2018-10-13 23:51:07
Re O_SYNC和O_DIRECT,它们不一样:
正在阻塞,是和不是:
Re open,来自man 2 open:
O_SYNC Write operations on the file will complete according to the
requirements of synchronized I/O file integrity completion (by
contrast with the synchronized I/O data integrity completion
provided by O_DSYNC.)有关这方面的更多信息,请参见手册页。
https://unix.stackexchange.com/questions/475328
复制相似问题