Solaris 文件与文件 I/O 详解
1. 数据完整性和同步标志
Solaris 提供了文件标志,用于设置不同级别的数据同步和文件完整性。在open系统调用中,可以设置三个适用的标志:O_SYNC、O_RSYNC和O_DSYNC。这些标志在文件打开时会对应设置到文件结构的f_flag字段中。具体如下表所示:
|open(2)中的标志 | 文件结构中对应的标志 | 定义 |
| — | — | — |
|O_SYNC|FSYNC| 写入时保证数据和索引节点的完整性 |
|O_DSYNC|FDSYNC| 写入时保证数据的完整性 |
|O_RSYNC|FRSYNC| 读取数据同步 |
- O_SYNC 标志:当在文件描述符上设置
O_SYNC标志并进行写入操作时,写入系统调用直到数据被写入磁盘且文件索引节点数据被更新后才会返回给调用进程或线程。若未设置该标志,写入操作在数据被提交到缓冲区缓存(物理内存)中的页面时就会返回,索引节点信息也会被缓存,这是默认的异步行为。默认行为能利用 Solaris 环境中的缓存机制,实现更好的整体文件 I/O 吞吐量。O_S