日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Linux文件IO深入剖析

發(fā)布時間:2025/4/5 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux文件IO深入剖析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 1 linux文件系統(tǒng)基本概念
      • 1.1 文件系統(tǒng)基本概念
      • 1.2 文件系統(tǒng)緩存
    • 2 文件IO訪問方式概述
      • 2.1 標(biāo)準(zhǔn)文件IO
      • 2.2 直接IO
      • 2.3 緩存同步

1 linux文件系統(tǒng)基本概念

1.1 文件系統(tǒng)基本概念

文件系統(tǒng) -一種把數(shù)據(jù)組織成文件和目錄的存儲方式,提供了基于文件的存取接口,并通過文件權(quán)限控制訪問。

1.2 文件系統(tǒng)緩存

主存(通常是DRAM)的一塊區(qū)域,用來緩存文件系統(tǒng)的內(nèi)容,包含各種數(shù)據(jù)和元數(shù)據(jù)。


2 文件IO訪問方式概述

2.1 標(biāo)準(zhǔn)文件IO

標(biāo)準(zhǔn)文件IO訪問方式如下:

2.2 直接IO

直接IO訪問方式如下:

直接IO的使用方式:

  • open +O_DIRECT:繞過內(nèi)核緩沖區(qū)的直接訪問,便有效避免了CPU和內(nèi)存的多余時間開銷。
  • 直接IO 繞過緩存,不會出現(xiàn)write成功而數(shù)據(jù)丟失的情況。

注意: 直接I/O的缺點(diǎn)就是如果訪問的數(shù)據(jù)不在應(yīng)用程序緩存中,那么每次數(shù)據(jù)都會直接從磁盤進(jìn)行加載,這種直接加載會非常緩慢!通常直接I/O跟異步I/O結(jié)合使用會得到較好的性能。

O_DIRECT和O_SYNC不同:

  • 后者只對寫數(shù)據(jù)有效,它將寫入內(nèi)核緩沖區(qū)的數(shù)據(jù)立即寫入磁盤,將機(jī)器故障時數(shù)據(jù)的丟失減少到最小,但是它仍然要經(jīng)過內(nèi)核緩沖區(qū)。

2.3 緩存同步

緩存同步 :為了保證磁盤系統(tǒng)與緩沖區(qū)中內(nèi)容一致,Linux 系統(tǒng)提供了 sync、fsync 和fdatasync 三個函數(shù)。

函數(shù)描述: 向打開的文件寫數(shù)據(jù); 成功返回寫入的字節(jié)數(shù),若出錯,返回-1。

頭文件:#include <unistd.h>

int fsync(int fd);int fdatasync(int fd);void sync(void);

說明:

  • sync - 將所有修改過的塊緩沖區(qū)排入寫隊(duì)列,然后就返回,它并不等待實(shí)際寫磁盤操作結(jié)束。
  • fsync - 將fd對應(yīng)文件的塊緩沖區(qū)立即寫入磁盤,并等待實(shí)際寫磁盤操作結(jié)束返回。
  • fdatasync - 類似fsync,但只影響文件的數(shù)據(jù)部分。而除數(shù)據(jù)外,fsync 還會同步更新文件屬性。

實(shí)際上的Linux文件IO流程圖如下:


參考資料:

  • C/C++從入門到精通-高級程序員之路【奇牛學(xué)院】
  • 總結(jié)

    以上是生活随笔為你收集整理的Linux文件IO深入剖析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。