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
1 章所提到的
區塊
block
)是一個抽象概念,代表一個檔案系統的最小儲存單位。核
心內部,所有檔案系統的操作皆以區塊為單位。的確,區塊是 I/O(輸出入)的共同語
言。因此,I/O 操作所處理的資料量不得小於區塊的大小或是區塊大小的整數倍。如果
你只想要讀取一個位元組,那就太糟糕了:你將必須讀取一個整個區塊。若想要寫出大
4.5 個區塊的資料呢?你將需要寫出 5 個區塊,這意味著,在它的整個區塊中只有部
分的區塊會被讀取,而且即使只有一半的區塊遭到修改,仍必須寫回一整個區塊。
如你所見,這麼做所導致的問題是:對部分區塊進行操作很沒有效率。作業系統必須透
過讓一切操作發生在與區塊對齊的邊界上,以及上取整數(round up)到下一個最大區
塊來修正你的 I/O。不幸的是,用戶空間程式的撰寫方式通常不是這樣。多數應用程式
所操作的是較高階的抽象概念,例如欄位以及字串,其大小不斷變化而且不受區塊大小
的影響。最壞的情況下,用戶空間應用程式可能一次只讀寫一個位元組!這會造成很大
的浪費。儘管只有一個位元組要寫出,但是實際上所寫出的是一整個區塊。
讀取操作所需要進行的系統呼叫次數增加時,會導致效能變差;例如,是讀取一個位元
1024 次,而不是一次讀取 1024 個位元組。
用戶緩衝式輸出入
user-buffered I/O
是此類效能問題的解決方案,它讓應用程式得以按自己的意思讀寫資料,但是實際的
I/O 操作卻以檔案系統的區塊大小為單位。
用戶緩衝式 I/O
必須對正規檔案發出許多小型 ...
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