磁盤I/O子系統

一、數據寫入磁盤流程

當執行向磁盤寫入數據操作的時候,會發生如下的一系列基本操作。假設文件數據存在于磁盤扇區上,并且已經被讀入到頁緩存中。

  1. 進程使用write()系統調用寫入文件。
  2. 內核更新映射到文件的page cache。
  3. 內核線程pdflush負責把頁緩存刷入到磁盤中。
  4. 文件系統層把各個塊緩存放入一個bio結構,并且提交一個寫入到塊設備層的請求。
  5. 塊設備層從上層獲得請求,執行I/O elevator操作,把請求放入到I/O請求隊列中。
  6. 磁盤驅動,例如SCSI或其它特定驅動將會負責寫操作。
  7. 磁盤驅動固件執行硬件操作,例如尋址、旋轉、數據傳送到磁盤的扇區

二、物理磁盤結構

磁盤是計算機主要的存儲設備,也是計算機的主要構成硬件,磁盤主要由盤片、磁頭、磁道、扇區、柱面這幾部分組成。

  • 盤片 : 磁盤由多個盤片組成,數據存儲在這些盤片上,通過盤片的轉動來讓磁頭讀取數據的。
  • 磁頭: 在需要讀取數據的時候,磁頭就會移到這個盤片上面讀取數據,磁頭和盤片之間的距離非常小,但不會接觸到盤片。如果出現斷電的情況,那么磁頭就會從盤片上移開移回到原來的位置。
  • 磁道: 每個盤片就像一個“目標靶盤”,從中心向外分布著一圈圈的圓環,這些圓環被稱為磁道。磁道是數據存儲的基本單位,每個磁道上可以存儲大量的數據。
  • 扇區: 磁道是由一個一個的小圓環組成,每一個圓圈又進行了一個更小的劃分,被稱為扇區,如下面所示,一個磁道由八個扇區組成,每個扇區存儲512個字節數據。
  • 柱面: 柱面是多個盤片的磁道在相同位置的集合,如下面的黃色部分,四個盤面都有這個黃色的磁道,這樣黃色部分的四個磁道就形成了一個圓柱體狀的柱面。

三、緩存與臟數據

現代處理器的訪問速度已經遠遠超過了主存儲器的訪問速度,為了解決這個問題,在CPU和內存之間添加一個高速內存, 這個高速內存容量小,只用來存儲CPU執行時常用的指令。既保證了硬件成本,又提高了CPU的訪問速度。

高緩存命中率是提升性能的關鍵。 為了獲得高緩存命中率, 使用”局部性引用“的技術。 這個技術基于如下的原則:
最近使用過的數據即將被使用的可能性很高(時間局部性, temporal locality)。
使用過數據的附近數據被使用的可能性很高(空間局部性, spatial locality)
Linux在很多組件中用到了這個原則,例如頁緩存、文件對象緩存(i-node緩存、目錄條 目緩存等等)、預讀緩沖區等。如下圖所示:

在進程從磁盤中讀數據時,數據被復制到內存中。該進程和其它進程都可以在內存緩存中讀 取同樣的數據副本。當進程嘗試改變數據,進程首先修改內存中的數據,這時候,磁盤和內 存中的數據就不一致了,內存中的數據就叫做臟緩沖(dirty buffer)。臟緩沖應該盡快同步到 磁盤上,否則,如果突然崩潰,內存中的數據會丟失。

同步臟緩沖的進程叫做flush,在Linux內核2.6中,pdflush內核線程負責把數據寫入到磁盤 上。數據會定時刷新(kupdate),或者當內存中的臟緩沖到了閥值的比例的時候 (bdflush)。這個閥值在/proc/sys/vm/dirty_background_ratio文件中。

參考:

I/O子系統與磁盤調度詳解-CSDN博客

https://juejin.cn/post/6844903747189997581

https://zhuanlan.zhihu.com/p/25779982455

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/80260.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/80260.shtml
英文地址,請注明出處:http://en.pswp.cn/web/80260.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

單調棧和單調隊列

一、單調棧 1、使用場景 解決元素左 / 右側第一個比他大 / 小的數字。 2、原理解釋 用棧解決,目標是棧頂存儲答案。 以元素左側第一個比他小為例: (1)遍歷順序一定是從左向右。 (2)由于棧頂一定是答…

查看電腦信息的方法-CPU核心數量、線程數量等

1、查看CPU基本信息 step 1: windows下 “winr” 進入CMD step 2: 查看核心數:wmic cpu get NumberofCores 查看線程數:wmic cpu get NumberOfLogicalProcessors 查看CPU名稱:wmic cpu get Name 查看CPU時鐘頻率:wmic cpu get Ma…

令牌桶和漏桶算法使用場景解析

文章目錄 什么時候用令牌桶,什么時候用漏桶算法??先放結論 兩個算法一眼看懂什么時候選令牌桶?什么時候選漏桶?組合用法(90% 的真實系統都會這么干)小結記憶 對令牌桶和漏桶組合用法再次詳細敘述…

uniapp|實現獲取手機攝像頭權限,調用相機拍照實現人臉識別相似度對比,拍照保存至相冊,多端兼容(APP/微信小程序)

基于uniapp以及微信小程序實現移動端人臉識別相似度對比,實現攝像頭、相冊權限獲取、相機模塊交互、第三方識別集成等功能,附完整代碼。 目錄 核心功能實現流程攝像頭與相冊權限申請權限拒絕后的引導策略攝像頭調用拍照事件處理人臉識別集成圖片預處理(Base64編碼/壓縮)調用…

OpenCV CUDA 模塊中用于在 GPU 上計算兩個數組對應元素差值的絕對值函數absdiff(

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 void cv::cuda::absdiff 是 OpenCV CUDA 模塊中的一個函數,用于在 GPU 上計算兩個數組對應元素差值的絕對值。 該函數會逐元素計算兩…

Rust 數據結構:HashMap

Rust 數據結構:HashMap Rust 數據結構:HashMap創建一個新的哈希映射HashMap::new()將元組變成哈希表 訪問哈希映射中的值哈希映射和所有權更新哈希映射重寫一個值僅當鍵不存在時才添加鍵和值基于舊值更新值 散列函數 Rust 數據結構:HashMap …

【從設置到上傳的全過程】本地多個hexo博客,怎么設置ssh才不會互相影響

偶然間,想多建一個博客,但電腦已經有一個博客了,怎么設置ssh才不會互相影響呢? 在 Windows 系統上設置多個 Hexo 博客的 SSH 配置,避免互相影響,通常戶就需要為每個博客配置不同的 SSH 密鑰,并…

【時時三省】(C語言基礎)字符數組應用舉例2

山不在高,有仙則名。水不在深,有龍則靈。 ----CSDN 時時三省 例題: 有3個字符串,要求找出其中“最大”者。 解題思路: 可以設一個二維的字符數組str,大小為320,即有3行20列(每一…

2025認證杯挑戰賽第二階段B題【 謠言在社交網絡上的傳播 】原創論文講解(含完整python代碼)

大家好呀,從發布賽題一直到現在,總算完成了認證杯數學中國數學建模網絡挑戰賽第二階段B題目謠言在社交網絡上的傳播完整的成品論文。 本論文可以保證原創,保證高質量。絕不是隨便引用一大堆模型和代碼復制粘貼進來完全沒有應用糊弄人的垃圾半…

Qt功能區:Ribbon使用

Ribbon使用 1. Ribbon功能區介紹1.1 樣式 2. 基本功能區設置2.1 安裝動態庫(推薦)2.2 在MainWindow中使用Ribbon2.3 在QWidget中使用SARibbonBar2.4 創建Category和Pannel2.5 ContextCategory 上下文標簽創建 2.6 ApplicationButton2.7 QuickAccessBar和…

Ubnutu ADB 無法識別設備的解決方法

1. 正確安裝adb 下載地址 2. 檢查 Linux 是否識別設備 lsusb通過上述指令,分別查詢插入、斷開設備的usb設備表,如下所示: # 插入設備 adbc:~$ lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 011:…

C# 實現雪花算法(Snowflake Algorithm)詳解與應用

在現代分布式系統中,生成全局唯一的標識符(ID)是一個非常重要的問題。隨著微服務架構和分布式系統的普及,傳統的單機數據庫生成 ID 的方式已無法滿足高并發和高可用的需求。為了解決這個問題,Twitter 提出了 雪花算法&…

STM32+ESP8266連接onenet新平臺

若該文為原創文章,轉載請注明原文出處。 阿里云物聯網平臺無法開通了,所以嘗試使用onenet平臺。 一、硬件 1、STM32F103C8T6最?系統板 2、ESP-01S 3、DHT11 二、軟件 1、KEIL5.29 2、Token生成工具 3、app inventor 三、原理 四、平臺搭建 1、注…

深入解析Spring Boot與Redis集成:高效緩存實踐

深入解析Spring Boot與Redis集成:高效緩存實踐 引言 在現代Web應用開發中,緩存技術是提升系統性能的重要手段之一。Redis作為一種高性能的鍵值存儲數據庫,廣泛應用于緩存、會話管理和消息隊列等場景。本文將詳細介紹如何在Spring Boot項目中…

Python自學筆記3 常見運算符

常用運算符 加減法 python的自動數據類型轉換 整形轉為浮點型 實數轉為復數 數字類型不能和浮點數類型相加減 乘除法 數據轉換基本同加減法, 但字符串可以和整數相加減,作用是字符串的自我復制 反斜杠 成員運算符 判斷一個元素是不是一個序列的成員…

[特殊字符]接口測試用例設計指南:全面覆蓋與精準驗證

一、接口測試的核心價值 接口作為系統間通信的橋梁,其穩定性和準確性直接影響業務功能。通過科學設計的測試用例,可以提前暴露接口潛在缺陷,降低上下游系統的耦合風險。本文將系統講解接口測試的用例設計策略,覆蓋查詢類接口與操…

[SpringBoot]Spring MVC(2.0)

緊接上文,這篇我們繼續講剩下的HTTp請求 傳遞JSON數據 簡單來說:JSON就是?種數據格式,有??的格式和語法,使??本表??個對象或數組的信息,因此JSON本質是字符串. 主要負責在不同的語?中數據傳遞和交換 JSON的語法 1. 數據在 鍵值對(Key/Value) …

錨點跳轉跟蹤#

一、html <div ref"computingref"><section id"section1"> </section><section id"section2"> </section><section id"section3"> </section> </div><div class"nav-list&q…

一文了解多模態大模型LLaVA與LLaMA的概念

目錄 一、引言 二、LLaVA與LLaMA的定義 2.1 LLaMA 2.2 LLaVA 2.3 LLaVA-NeXT 的技術突破 三、產生的背景 3.1 LLaMA的背景 3.2 LLaVA的背景 四、與其他競品的對比 4.1 LLaMA的競品 4.2 LLaVA的競品 五、應用場景 5.1 LLaMA的應用場景 5.2 LLaVA的應用場景 六…

【LLM】大模型算力基礎設施——核心硬件GPU/TPU,架構技術NVLink/RDMA,性能指標FP64/FLOPS(NVIDIA Tesla型號表)

【LLM】大模型算力基礎設施——核心硬件GPU/TPU&#xff0c;架構技術NVLink/RDMA&#xff0c;性能指標FP64/FLOPS&#xff08;NVIDIA Tesla型號表&#xff09; 文章目錄 1、核心硬件GPU/TPU&#xff0c;NVIDIA Tesla2、集群架構設計 NVLink / RDMA / Alluxio3、性能關鍵指標&am…