linux 塊I/O層 自學報告

來源:互聯網
上載者:User

塊裝置的特點在於可以被隨機訪問,即在訪問裝置時隨意地從一個位置跳轉到另一個位置。

塊裝置中最小的可定址單元是扇區(sector),扇區的大小是裝置的物理屬性。扇區對於核心的重要性在於所有裝置的I/O操作都必須基於扇區來進行。軟體的最小邏輯可定址單元---塊,(比扇區高一層的抽象)。塊是檔案系統的一種抽象---只能基於塊來訪問檔案系統。塊不能比扇區還小,只能數倍於扇區大小。

每個緩衝區與一個塊對應,它相當於是磁碟塊在記憶體中的表示。用buffer_head結構體表示,被稱為緩衝區頭。它的目的在於描述磁碟塊和實體記憶體緩衝區(在特定頁面上的位元組序列)之間的映射關係,只是扮演一個描述符的角色,說明從緩衝區到塊的映射關係。

核心中塊操作的基本容器由bio結構體表示,該結構體代表了正在現場的(活動的)以片段鏈表形似組織的塊I/O操作,一個片段是一個小塊連續的記憶體緩衝區。向量I/O就是所謂的聚散I/O.bio結構體代表的是I/O操作,它可以包括記憶體的一個或多個頁,而buffer_head代表的是一個緩衝區,它描述的僅僅是磁碟的一個塊,關聯的是單獨頁中的單獨磁碟塊。bio很容易處理高端記憶體,它處理的是物理頁而不是直接指標;也便於執行飛散-集中(向量化)塊I/O操作,操作中的資料可取自多個物理頁面。

塊I/O請求儲存在請求隊列中,該隊列由request_queue結構表示,只要它不為空白,隊列對應的塊裝置驅動程式就會從隊列頭擷取請求,然後將其送入對應的塊裝置。隊列中的每一項都是一個單獨的請求(用request結構體表示)。一個請求可能要操作多個連續的磁碟塊,所以每個請求可以有多個bio結構體組成。

在核心中負責提交I/O請求的子系統被稱為I/O發送器。虛擬塊裝置給多個磁碟請求,以便降低磁碟定址地址,確保磁碟效能的最佳化。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.