Skip to Content
LINUX系統程式設計 第二版
book

LINUX系統程式設計 第二版

by Robert Love
December 2013
Intermediate to advanced
496 pages
8h 57m
Chinese
GoTop Information, Inc.
Content preview from LINUX系統程式設計 第二版
進階檔案 I/O
|
133
一般情況下,Unix 之寫入操作是同步進行但非同步化的;而讀取操作則是同步進行且同
步化的。
4
對寫入操作而言,這些特點的每個組合是可能的,如表 4-1 所示。
4-1 寫入操作同步狀態
同步化 非同步化
同步 寫入操作會等到資料出清至磁碟才返回。如
果檔案開啟期間有指定
O_SYNC
,便會表現此
行為。
寫入操作會等到資料被存入核心緩衝區才返
回。這是平常的行為模式。
非同步 寫入操作會在寫入要求被排入佇列後返回。
等到該寫入操作執行時,資料保證會被寫入
磁碟。
寫入操作會在寫入要求被排入佇列後返回。
等到該寫入操作實際執行時,資料保證至少
會被存入核心緩衝區。
讀取操作始終是同步化的,因為讀取舊資料是毫無意義的。然而,如表 4-2 所示,此類
操作可以是同步的或非同步的。
4-2 讀取操作同步狀態
同步化
同步 讀取操作會在最新的資料被存入所提供的緩衝區返回(這是平常的行為模式)。
非同步 讀取操作會在讀取要求被排入佇列後返回,但是當讀取操作實際執行時,會傳回最新的資料。
2 章中,我們有討論過如何對寫入操作進行同步化(經由
O_SYNC
旗標),以及如何確
保所有的 I/O 在特定的時間點上已經同步化(經由
fsync()
與相關的函式)。現在,讓我
們來看看如何才能進行非同步的讀取與寫入操作。
非同步 I/O
進行非同步 I/O 需要核心在非常低的層次有所支援。幸好 Linux 有實作 POSIX 1003.1-
2003 所定義的
aio
介面。
aio
程式庫提供了一系列函式,以便提交非同步
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

優雅的SciPy|Python科學研究的美學

優雅的SciPy|Python科學研究的美學

Juan Nunez-Iglesias, Stéfan van der Walt, Harriet Dashnow
C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普

Publisher Resources

ISBN: 9789862769812