Linux筆記---文件系統硬件部分

1. 文件系統

文件系統是操作系統用于明確存儲設備(常見的是磁盤,也有基于NAND Flash的固態硬盤)或分區上的文件的方法和數據結構,即在存儲設備上組織文件的方法。

1.1 基本組成

  • 索引節點(inode):用來記錄文件的元信息,比如inode編號、文件大小、訪問權限、創建時間、修改時間、數據在磁盤的位置等等。索引節點是文件的唯一標識,它們之間一一對應,也同樣都會被存儲在硬盤中,所以索引節點同樣占用磁盤空間。

  • 目錄項(dentry):用來記錄文件的名字、索引節點指針以及與其他目錄項的層級關聯關系。多個目錄項關聯起來,就會形成目錄結構,但它與索引節點不同的是,目錄項是由內核維護的一個數據結構,不存放于磁盤,而是緩存在內存。

  • 數據塊(data block):是文件系統讀寫的最小單位,用于存儲文件的數據。不同的文件系統數據塊大小可能不同,例如Linux中的邏輯塊大小通常為4KB。

1.2 主要功能

  • 管理和調度文件的存儲空間:負責為文件分配和回收磁盤空間,提高磁盤空間的利用率。

  • 提供文件的邏輯結構、物理結構和存儲方法:定義了文件在磁盤上的存儲方式和組織形式,如鏈式存儲、索引存儲等。

  • 實現文件從標識到實際地址的映射:通過索引節點和目錄項等數據結構,將用戶使用的文件名轉換為磁盤上的實際存儲地址。

  • 實現文件的控制操作和存取操作:提供對文件的創建、刪除、讀取、寫入等操作的支持。

  • 實現文件信息的共享并提供可靠的文件保密和保護措施:支持多個用戶或進程對文件的共享訪問,并通過訪問權限等機制保護文件的安全性和保密性。

  • 提供文件的安全措施:如文件的加密、備份與恢復等功能,保障文件數據的完整性和可用性。

?這一節,我們主要認識文件系統的硬件部分,即磁盤(或硬盤)。

2. 磁盤

2.1 磁盤的分類

  • 機械硬盤(HDD):機械硬盤是傳統的磁盤存儲設備,由盤片、磁頭、電機、控制電路等部件組成。數據存儲在盤片的磁性涂層上,磁頭通過在盤片表面移動來讀寫數據。機械硬盤的優點是容量大、價格相對較低,適合對讀寫速度要求不高的大容量存儲場景。

  • 固態硬盤(SSD):固態硬盤采用閃存芯片作為存儲介質,通過電子信號來存儲和讀取數據,不需要機械部件。固態硬盤的優點是讀寫速度快、抗震性強、功耗低、噪音小,適合對讀寫速度要求較高的場景,如系統盤、游戲盤等。

?2.2 機械硬盤的存儲結構

磁盤的數據就存儲在圓型的磁片上,磁頭可以在搖頭臂的驅動下,隨著盤片的高速旋轉,訪問到盤片表面的任意位置。

盤片的表面被分為多個存儲單元,這些單元被成為扇區。

?扇區:是磁盤存儲數據的基本單位,每個扇區可存儲512字節。

這意味著,每次對磁盤的數據進行讀寫都必須將一個扇區的512個字節一起加載到內存中。

通常來說,一塊磁盤上有多組盤片與磁頭(一個盤片對應兩個面、兩個磁頭)。這些盤片繞著主軸進行同步的高速旋轉,磁頭在同一個機械臂桿的驅動下進行同步運動。

也就是說這些磁頭在豎直方向上連成一條線,指向各自盤面的對應扇區。隨著盤片的高速旋轉,與磁道一同形成了一個柱面,如圖所示。

磁盤容量 = 磁頭數 × 磁道(柱面)數 × 每道扇區數 × 每扇區字節數(512)。

2.3 CHS地址定位

操作系統要訪問一個文件,就需要知道該文件在哪一個扇區(或哪幾個)。

那么,如何定位一個扇區呢?

  1. 定位扇區所在柱面(Cylinder)。
  2. 選擇有效磁頭(Header)。
  3. 定位扇區(Sector)。

?三個參數 "Cylinder-Header-Sector" 共同構成了 "CHS地址"。

操作系統只要知道所需訪問文件對應的 CHS地址 ,即可通過驅動程序完成訪問。

CHS模式支持的硬盤容量有限,因為系統用8bit來存儲磁頭地址,用10bit來存儲柱面地址,用6bit來存儲扇區地址,而一個扇區共有512Byte,這樣使用CHS尋址一塊硬盤最大容量為256 * 1024 * 63 * 512B = 8064 MB(1MB = 1048576B)(若按1MB=1000000B來算就是8.4GB)。

2.4 LBA地址定位

我們可以將一個磁道看作一個一維數組,將一個柱面看作二維數組(在同一柱面上的每一個磁道作為二維數組的一行),那么磁盤就可以看作一個三維數組。

我們知道,無論是二維數組還是三維數組,從存儲空間上來看都是一維數組首尾相接的結果。

我們按照這樣的思路就可以將磁盤的存儲空間映射為一維數組。

將這個磁盤抽象成的數組的下標作為扇區的地址,我們就得到了 "LBA地址"(Logical Block Address) ,即線性地址。

同樣的,使用 LBA地址,操作系統就能很好的定位到扇區。只要在硬件層面上實現 "LBA地址 到 CHS地址" 的轉換。?

2.5 CHS 與 LBA地址的相互轉換

CHS 轉換為 LBA
LBA = 柱面號C * (磁頭數 * 每磁道扇區數) + 磁頭號H * 每磁道扇區數 + 扇區號S - 1
  • 扇區通常是從1開始編號的,而柱面和磁道都是從0開始編號的。
  • 在LBA中,地址是從0開始的。
  • 總柱面,磁道個數,扇區總數等信息,在磁盤內部會自動維護,上層開機的時候,會獲取到這些參數。
LBA 轉換為 CHS
柱?號C = LBA / (單個柱?的扇區總數 = 磁頭數 * 每磁道扇區數)
磁頭號H = (LBA % 單個柱?的扇區總數) / 每磁道扇區數 
扇區號S = (LBA % 每磁道扇區數) + 1 

從現在開始,我們主要關注LBA 地址,將磁盤看作一個一維數組,而不再關心其底層細節了(交由硬件自動處理)。

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

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

相關文章

12.31[net]review

復用(Multiplexing)的概念 定義:在傳輸層,復用是指多個應用進程可以使用同一個傳輸層協議(如 TCP 或 UDP)來發送數據。從應用層的角度看,不同的應用進程(如網頁瀏覽器、郵件客戶端等…

網絡安全防護架構有哪些 網絡安全防護措施包括

網絡安全預防措施 網安措施 計算機網絡安全措施主要包括保護網絡安全、保護應用服務安全和保護系統安全三個方面,各個方面都要結合考慮安全防護的物理安全、防火墻、信息安全、Web安全、媒體安全等等。 (一)保護網絡安全。 網絡安全是為保護商務各方網絡端系統之…

物理筆記 | 拓撲相變的物理圖像

1. 一般相變 對于一般的相變是朗道理論預言的由對稱性自發破缺導致的。 比如在一維橫場Ising模型中的量子相變 H ? J ∑ j σ j z σ j 1 z ? h ∑ j σ j x H -J \sum_{j} \sigma_j^z \sigma_{j1}^z - h \sum_{j} \sigma_j^x H?Jj∑?σjz?σj1z??hj∑?σjx? 其相…

紅黑樹介紹

1 問題引入 為什么有AVL樹,還要引入紅黑樹? 在進行多次的插入和刪除時: 1)AVL樹會存在大量的旋轉操作,追求的是嚴格平衡; 2)紅黑樹通過為節點增加顏色來換取增刪節點時旋轉次數…

Java基礎:枚舉類enum入門案例

1.基礎枚舉定義與使用: package com.zxy;public class Main {public static void main(String[] args) { // 獲取枚舉值cars car cars.BMW;switch (car){case BMW :System.out.println("BMW");break;case BENZ :System.out.println("BENZ&…

torch numpy sort排序出現索引順序不正常

問題 torch 調用numpy ,numpy 的sort排序值的順序沒發現問題,但是排序的索引argsort()是有明顯問題。 方案 多一次取索引 arr.argsort().argsort()參考: https://blog.csdn.net/qq_50571974/article/details/123173118

大模型架構記錄5-向量數據庫

一 倒排索引、KNN、PQ 1.1 基礎版本 query -> requery 對問題做處理,處理上下文 對query 做 refined query 1.2 向量數據庫 二 搜索邏輯 2.1 knn 2.2 近似KNN 先和N個空間的均值比較再和空間內部的所有點比較,計算最近值。 優化一: …

Python :數據模型

一. 什么是數據模型? Python數據模型是Python對象系統的抽象,通過一組特殊方法?(如__init__、__len__等)和協議?(如迭代協議、上下文管理協議),定義了對象如何與語言的內置功能(如…

考研數學非數競賽復習之Stolz定理求解數列極限

在非數類大學生數學競賽中,Stolz定理作為一種強大的工具,經常被用來解決和式數列極限的問題,也被譽為離散版的’洛必達’方法,它提供了一種簡潔而有效的方法,使得原本復雜繁瑣的極限計算過程變得直觀明了。本文&#x…

電商平臺數據高效集成:旺店通旗艦版到MySQL方案解析

旺店通旗艦版-商品信息查詢到MySQL的高效數據集成方案 在現代電商平臺中,數據的高效集成和處理是業務成功的關鍵。本文將分享一個實際案例,展示如何通過輕易云數據集成平臺,將旺店通旗艦奇門的數據無縫對接到MySQL數據庫,實現商品…

ACL初級總結

ACL–訪問控制列表 1.訪問控制 在路由器流量流入或者流出的接口上,匹配流量,然后執行相應動作 permit允許 deny拒絕 2.抓取感興趣流 3.ACL匹配規則 自上而下逐一匹配,若匹配到了則按照對應規則執行動作,而不再向下繼續匹配 思科:ACL列表末尾隱含一條拒絕所有的規則 華為:AC…

【微知】plantuml在泳道圖中如何將多個泳道框起來分組并且設置顏色?(box “瀏覽器“ #LightGreen endbox)

泳道分組并且著色 分組用 box和endbox ,顏色用#xxx,標注用"xxx" box "瀏覽器" #LightGreen participant "瀏覽器1" as Browser participant "瀏覽器2" as Browser2 endboxparticipant "服務端" as …

C語言:計算并輸出三個整數的最大值 并對三個數排序

這是《C語言程序設計》73頁的思考題。下面分享自己的思路和代碼 思路&#xff1a; 代碼&#xff1a; #include <stdio.h> int main() {int a,b,c,max,min,mid ; //設置大中小的數分別為max&#xff0c;mid&#xff0c;min&#xff0c;abc為輸入的三個數printf("ple…

【PyMySQL】Python操作MySQL

1、安裝pymysql pip install pymysql2、導包 import pymysql3、連接MySQL數據庫 db pymysql.connect(hostlocalhost # 本地localhost&#xff0c;或服務器IP地址,userroot # 用戶名,passwordpassword # 密碼,databasemysql) #數據庫名4、創建游標 cursor db.cursor()5、增…

藍橋備賽(18)- 紅黑樹和 set 與 map(上)

對于二叉搜索樹 &#xff0c; 平衡二叉樹 &#xff0c; 以及紅黑樹 &#xff0c; 目前只需要了解背后的原理 &#xff0c; 不做代碼實現的要求 &#xff0c; 重要的就是了解各種操作的時間復雜度即可 &#xff0c; 為set 與 map 做鋪墊 一、二叉搜索樹 1.1 基本概念 相較與于堆…

【Synchronized】不同的使用場景和案例

【Synchronized】不同的使用場景和案例 【一】鎖的作用范圍與鎖對象【1】實例方法&#xff08;對象鎖&#xff09;【2】靜態方法&#xff08;類鎖&#xff09;【3】代碼塊&#xff08;顯式指定鎖對象&#xff09;【4】類鎖&#xff08;通過Class對象顯式鎖定&#xff09; 【二】…

大模型在原發性急性閉角型青光眼預測及治療方案制定中的應用研究報告

目錄 一、引言 1.1 研究背景與意義 1.2 研究目的與方法 1.3 國內外研究現狀 二、原發性急性閉角型青光眼概述 2.1 疾病定義與分類 2.2 發病機制與危險因素 2.3 癥狀與診斷方法 三、大模型在原發性急性閉角型青光眼預測中的應用 3.1 大模型原理與優勢 3.2 術前風險預…

【藍橋杯—單片機】第十五屆省賽真題代碼題解析 | 思路整理

第十五屆省賽真題代碼題解析 前言賽題代碼思路筆記競賽板配置建立模板明確基本要求顯示功能部分頻率界面正常顯示高位熄滅 參數界面基礎寫法&#xff1a;兩個界面分開來寫優化寫法&#xff1a;兩個界面合一起寫 時間界面回顯界面校準校準過程校準錯誤顯示 DAC輸出部分按鍵功能部…

Vue3實戰學習(Vue3快速搭建后臺管理系統(網頁頭部、側邊導航欄、主體數據展示區的設計與實現)(超詳細))(9)

目錄 一、Vue3工程環境配置、項目基礎腳手架搭建、Vue3基礎語法、Vue3集成Element-Plus的詳細教程。(博客鏈接如下) 二、Vue3集成Element-Plus詳細教程。(博客鏈接如下) 三、Vue3集成Vue-Router詳細教程。(博客鏈接如下) 四、Vue3快速搭建后臺管理系統。(實戰學習) &#xff08…

halcon機器人視覺(四)calibrate_hand_eye_stationary_3d_sensor

目錄 一、準備數據和模型二、按照表面匹配的的結果進行手眼標定三、根據標定結果計算CalObjInCamPose一、準備數據和模型 1、讀3D模型:read_object_model_3d 2、創建表面匹配模板:create_surface_model 3、創建一個HALCON校準數據模型:create_calib_data read_object_mode…