文件系統 linux ─── 第19課

前面博客講解的是內存級文件管理,接下來介紹磁盤級文件管理

文件系統分為兩部分

  1. 內存級文件系統 : OS加載進程 ,進程打開文件, OS為文件創建struct file?和文件描述符表 ,將進程與打開的文件相連,?struct file 內還函數有指針表,?屏蔽了底層操作的差異,struct file中還有內核級文件緩沖區(提高效率)
  2. 磁盤級文件系統:?管理磁盤上的文件

磁盤結構

它通過磁性材料或閃存技術將數據持久化存儲,即使在斷電后數據也不會丟失

主要分為機械硬盤(HDD)和固態硬盤(SSD)

今天我們講解機械硬盤

機械硬盤(HDD,Hard Disk Drive)
  • 工作原理

    • 使用磁性材料涂覆的旋轉盤片存儲數據, 比如磁性南極代表1 ,磁性北極代表0(打比方)

    • 通過磁頭在盤片上移動來讀寫數據

定位扇區

CHS尋址模式

????????在硬盤的傳統尋址模式中,數據是通過柱面(Cylinder)、磁頭(Head)、扇區(Sector)的組合來尋址的,這種方式被稱為CHS尋址(Cylinder-Head-Sector)

????????扇區:?磁盤存儲數據的基本單位 ,512字節, 因此,磁盤是塊設備

????????柱?上的每個磁道,扇區個數是?樣的

注意: C H都是從0編碼 ,S從1編碼

真實過程??個細節:傳動臂上的磁頭是共進退的

LBA邏輯塊尋址模式

????????LBA(Logical Block Addressing)邏輯塊尋址模式。在 LBA 模式下,我們知道硬盤上的一個數據區域由它所在的磁頭、柱面(也就是磁道)和扇區所唯一確定。

????????在LBA地址中,地址不再表示實際硬盤的實際物理地址(柱面、磁頭和扇區)。LBA編址方式將 CHS這種三維尋址方式轉變為一維的線性尋址,它把硬盤所有的物理扇區的C/H/S編號通過一定的規則轉變為一線性的編號,系統效率得到大大提高,避免了煩瑣的磁頭/柱面/扇區的尋址方式。

????????在訪問硬盤時,由硬盤控制器再這種邏輯地址轉換為實際硬盤的物理地址。

????????OS只需要使?LBA就可以了!!LBA地址轉成CHS地址,CHS如何轉換成為LBA地址。誰做啊??磁盤?自己來做!固件(硬件電路,伺服系統)

LBA與C/H/S 之間的轉換:

LBA =柱面號C*單個柱面的扇區總數 +?磁頭號H*每個磁道扇區的數量+?扇區號S-1

? ? ? ?=柱面號*(磁頭數*每個磁道扇區數)+磁頭號H*每個磁道扇區的數量+?扇區號S-1
?

柱面號C = LBA//(磁頭數*每磁道扇區數)? ?就是單個柱面的扇區總數

磁頭號H =(LBA% (磁頭數* 每磁道扇區數)) //?每磁道扇區數

扇區號S =(LBA%?每磁道扇區數)+1

//?代表除法向下取整

????????所以:從此往后,在磁盤使用者看來,根本就不關心CHS地址,?是直接使?LBA地址磁盤內部自己轉換。所以: 從現在開始,磁盤就是?個? 元素為扇區? 的?維數組,數組的下標就是每?個扇區的LBA地址。OS使用磁盤,就可以??個數字訪問磁盤扇區了。

在磁盤如何管理文件

引入"塊"概念

????????其實硬盤是典型的“塊”設備,操作系統讀取硬盤數據的時候,其實是不會?個個扇區地讀取,這樣 效率太低,?是?次性連續讀取多個扇區,即?次性讀取?個”塊”(block)

?????????硬盤的每個分區是被劃分為?個個的”塊”。?個”塊”的??是由格式化的時候確定的,并且不可 以更改,最常?的是4KB,即連續?個扇區組成?個”塊””塊”是?件存取的最?單位。

注意:

  • 磁盤就是?個三維數組,我們把它看待成為?個"一維數組",數組下標就是LBA,每個元素都是扇區
  • 每個扇區都有LBA,那么8個扇區?個塊,每?個塊的地址我們也能算出來.
  • 知道LBA:塊號 = LBA / 8
  • 知道塊號:LAB=塊號*8+n? (n是塊內第幾個扇區 1<= n <=8)

引入"分區"概念

????????其實磁盤是可以被分成多個分區(partition)的,以Windows觀點來看,你可能會有?塊磁盤并且將 它分區成C,D,E盤。那個C,D,E就是分區。分區從實質上說就是對硬盤的?種格式化。但是Linux的設備 都是以文件形式存在,那是怎么分區的呢?

????????柱面是分區的最?單位,我們可以利?參考柱?號碼的?式來進?分區,其本質就是設置每個區的起 始柱?和結束柱?號碼。此時我們可以將硬盤上的柱?(分區)進?平鋪,將其想象成?個?的平面,如下圖所示:

????????柱面大小?致,扇區個位?致,那么其實只要知道每個分區的起始和結束柱?號,知道每 ?個柱面多少個扇區,那么該分區多?,其實和解釋LBA是多少也就清楚了.

也就是OS管理磁盤,通過分治思想,將磁盤進行分區處理,但分出的區大小還有幾百GB ,進一步對區分組?分成Block Group ,直接將每個組管理好即可.

  • 文件 =?內容+屬性?
  • 文件內容存儲在(Block Group)的 Data blocks中
  • 文件屬性也是數據 ,linux中?文件的屬性數據(比如文件的創建者、文件的創建日期、文件的大小等等)以數據結構(inode)的方式?存儲
  • 一個文件一個inode ,inode大小有128字節?或者256字節, inode又存在?inodetable中
  • ls -l -i? ? 可以打印出文件詳細信息? ?包括文件的inode值

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

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

相關文章

kali之netdiscover

kali之netdiscover Netdiscover 是 Kali Linux 中一款用于網絡發現和主機掃描的工具。它通過主動發送 ARP 請求來識別局域網中的活動主機&#xff0c;并顯示它們的 IP 地址、MAC 地址和網卡廠商信息。Netdiscover 特別適用于局域網內的主機發現和網絡映射。 1. Netdiscover 的…

【軟考-架構】5.2、傳輸介質-通信方式-IP地址-子網劃分

?資料&文章更新? GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目錄 傳輸介質網線光纖無線信道 通信方式和交換方式會考&#xff1a;交換方式 &#x1f4af;考試真題第一題第二題 IP地址表示子網劃分&#x1f4af;考試真題第一題第二題 傳輸…

G2o頂點與邊編程總結

G2o的頂點與邊屬于 HyperGraph 抽象類的繼承OptimizableGraph 的繼承。 BaseVertex<D,T> D是預測點的維度&#xff08;在流形空間的最小表示&#xff09;T是待估計vertex的數據類型&#xff0c;比如用四元數表達三維旋轉的話&#xff0c;T就是Quaternion 類型 // 頂點的…

【區塊鏈】以太坊

學習視頻源鏈接&#xff1a; https://www.bilibili.com/video/BV1Vt411X7JF/ 本文是根據肖老師的視頻進行的筆記記錄 bitcoin 1.0 區塊鏈 以太坊 2.0區塊鏈 以太坊 設置了 memory hard mining puzzle &#xff0c;這造成了asic resistance&#xff0c; 后續 proof of work &a…

凸優化算法學習筆記:決策單調性與 wqs二分

文章目錄 前言決策單調性單調矩陣&#xff0c;完全單調矩陣&#xff0c;蒙日陣決策單調性優化 d p dp dp線性 d p dp dp分治&#xff08;離線&#xff09;二分隊列&#xff08;在線&#xff09;SMAWK 區間 d p dp dp 練習題LOJ6039 w q s wqs wqs 二分&#xff08;蒙日陣最短…

Aop實現簡單基于日志記錄

目錄 一、基礎知識&#xff1a; 二、測試記錄接口的參數和結果 一、基礎知識&#xff1a; Before&#xff1a;用于執行目標方法之前的邏輯。After&#xff1a;用于執行目標方法之后的邏輯。AfterReturning&#xff1a;用于獲取目標方法返回值后的邏輯。AfterThrowing&#x…

【Nacos】服務發布之優雅預熱上線方案

目錄 一、背景二、注冊時機2.1、注冊機制2.2、分析源碼找到注冊時機 三、注冊前心跳健康檢測3.1、方案實施3.2、源碼分析3.3、優化代碼 四、流量權重配置五、總結5.1、整體完整流程&#xff1a;5.2、流程圖&#xff1a;5.1、優化方案完整代碼&#xff1a; 一、背景 有些面向廣…

接口自動化腳本優化的多個關鍵維度及具體方法總結

以下是優化接口自動化腳本的多個關鍵維度及具體方法&#xff0c;幫助提升測試效率、可維護性和可靠性&#xff1a; 1. 測試用例設計優化 維度優化方法參數化使用數據驅動&#xff08;如CSV、Excel、JSON&#xff09;&#xff0c;分離測試數據與邏輯&#xff0c;減少重復代碼。…

AI驅動的數字供應鏈安全情報預警服務:云脈XSBOM

先發制人&#xff0c;精準預警數字供應鏈中的安全風險 Pre-emptive Strategy, Accurate Warning of Security Risks in Digital Supply Chain 云脈XSBOM數字供應鏈安全情報預警依托懸鏡安全團隊強大的供應鏈管理監測能力和AI安全大數據云端分析能力&#xff0c;對全球數字供應…

8051匯編--條件轉移指令

在8051匯編語言中&#xff0c;控制轉移指令用于改變程序的執行順序&#xff0c;主要包括無條件轉移、條件轉移和調用/返回指令。以下是對這些指令的總結&#xff1a; 一、無條件轉移指令 LJMP&#xff08;Long Jump&#xff09; ? 功能&#xff1a;長轉移&#xff0c;可以跳…

Kubernetes學習筆記-移除Nacos遷移至K8s

項目服務的配置管理和服務注冊發現由原先的Nacos全面遷移到Kubernetes上。 一、移除Nacos 移除Nacos組件依賴。 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <…

算法系列之回溯算法求解數獨及所有可能解

有沒有對數獨感興趣的朋友呢&#xff1f;數獨作為一款經典的邏輯游戲&#xff0c;其目標是在一個9x9的方格中填入數字1至9&#xff0c;確保每一行、每一列以及每一個3x3的子網格中都包含這些數字且不重復。盡管數獨的規則看似簡單&#xff0c;但編寫一個能夠自動求解數獨的程序…

C++ primer plus 類和對象上

目錄 前言 一 接口的設計 二 方法的設計和使用 三 構造函數 四 析構函數 五 析構函數和構造函數小結 總結 前言 前面已經描述了很多有關于類和對象的知識了&#xff0c;所以我們直接開始上手操作 一 接口的設計 首先我們要知道什么是接口 接口是一個共享框架&…

css模擬雷達掃描動畫

<div class"radar-scan"><div class"radar-container" /></div> 樣式&#xff1a; .radar-scan {background-image: linear-gradient(0deg,transparent 24%,rgba(32, 255, 77, 0.15) 25%,rgba(32, 255, 77, 0.15) 26%,transparent 27%,…

AdaLoRA 參數 配置:CAUSAL_LM“ 表示因果語言模型任務

AdaLoRA 參數 配置:CAUSAL_LM" 表示因果語言模型任務 config = AdaLoraConfig( init_r=16, # 增加 LoRA 矩陣的初始秩 lora_alpha=32, target_modules=[“q_proj”, “v_proj”], lora_dropout=0.1, bias=“none”, task_type=“CAUSAL_LM” ) 整體功能概述 AdaLoraCon…

C# 集合

集合 概述集合接口和類型列表(ArrayList, List)隊列(Queue)棧(Statck)鏈表(LinkedList)有序表(SortedList)字典Lookup類其他字典類 HashSet(不重復項的無序列表)位數組BitArrayBitVector32 性能 概述 數組和Array類。數組的大小是固定的。如果元素個數是動態的&#xff0c;就應…

WebSocket與MQTT協議深度對比:選擇合適的通信協議

在現代互聯網應用中&#xff0c;實時通信變得愈發重要。隨著物聯網&#xff08;IoT&#xff09;和實時數據流的普及&#xff0c;選擇合適的通信協議顯得尤為關鍵。WebSocket和MQTT是當前最為流行的兩種協議&#xff0c;它們各自有不同的應用場景、優缺點以及性能特點。在這篇文…

ELK(Elasticsearch、Logstash、Kbana)安裝及Spring應用

Elasticsearch安裝及Spring應用 一、引言二、基本概念1.索引&#xff08;Index&#xff09;2.類型&#xff08;Type&#xff09;3.文檔&#xff08;Document&#xff09;4.分片&#xff08;Shard&#xff09;5.副本&#xff08;Replica&#xff09; 二、ELK搭建1.創建掛載的文件…

MacOS 15.3.1 安裝 GPG 提示Error: unknown or unsupported macOS version: :dunno

目錄 1. 問題鎖定 2. 更新 Homebrew 3. 切換到新的 Homebrew 源 4. 安裝 GPG 5. 檢查 macOS 版本兼容性 6. 使用 MacPorts 或其他包管理器 7. 創建密鑰&#xff08;生成 GPG 簽名&#xff09; 往期推薦 1. 問題鎖定 通常是因為你的 Homebrew 版本較舊&#xff0c;或者你…

C++:類和對象(從底層編譯開始)詳解[前篇]

目錄 一.inline內聯的詳細介紹 &#xff08;1&#xff09;為什么在調用內聯函數時不需要建立棧幀&#xff1a; &#xff08;2&#xff09;為什么inline聲明和定義分離到兩個文件會產生鏈接錯誤&#xff0c;鏈接是什么&#xff0c;為什么沒有函數地址&#xff1a; 二.類&…