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
|
75
區塊大小
事實上,區塊的大小通常是 5121,0242,048 4,096 個位元組。
如表 3-1 所示,效能要獲得最大的提升,只需要所操作的資料團塊是區塊大小的整數倍
或是區塊大小的因數。那是因為,區塊是核心和硬體的共同語言。所以,採用區塊大小
的值或是可以對齊區塊的值,保證能夠進行對齊區塊的 I/O 要求,以及避免核心在內部
進行非必要的工作。
想知道特定裝置的區塊大小,只需要使用
stat()
系統呼叫(第 8 章會討論到)或
stat
(1)
命令。然而,事實上,你通常不需要知道實際的區塊大小。
為你的 I/O 操作挑選區塊大小的主要目標在於不要選到奇怪的大小,例如 1,130Unix
從未使用過大小 1,130 位元組的區塊,為你的操作使用此類大小的區塊,會在首次送出
要求之後產生非對齊的 I/O。然而,選用區塊大小的整數倍或因數,就可以避免非對齊
的要求。只要你所選用的大小維持在與區塊對齊,效能就不會變差。較大的尺寸只會導
致系統呼叫變少的結果。
因此,進行 I/O 時最簡單的選擇,就是使用大尺寸的緩衝區,而且該尺寸是區塊大小的
倍數。例如 4,096 8,192 位元組就可以運作得很好。
所以使用大小 4 8KB 的團塊來進行所有的 I/O,一切都可以運作得很好?還沒有那麼
快。當然,問題在於程式很少會用到區塊。程式一般只處理到欄位(field)、 line
以及字符(character),而不會處理到區塊之類的抽象概念。「用戶緩衝式」 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