文件系統·linux

目錄

磁盤簡介

Ext文件系統

分區

分組

inode

再談inode

路徑解析

路徑緩存

再再看inode

掛載

小知識


磁盤簡介

磁盤:一個機械設備,用于儲存數據。? 未被打開的文件都是存在磁盤上的,被打開的加載到內存中。

扇區:是OS訪問磁盤的基本單位,普通為512字節。

磁頭:通過左右擺動定位磁道,然后定位扇區

柱面:同一半徑上下的磁道構成的柱面

邏輯上看,可以以磁道展開,當做一維數組,以柱面(整個磁盤的同一個垂直位置的磁道為一個柱面)展開,每個柱面都是個二維數組,整個磁盤(多個柱面)就是個三維數組,這樣,對于OS來說,只需要在一個三維數組中定位即可對磁盤上的數據進行操作。

所以,對扇區的定位要通過找柱面-》磁道-》扇區的過程,叫CHS地址。

Ext文件系統

塊:八個扇區組成一個塊,塊是文件存取的最小單位。

1.OS看待磁盤,認為磁盤是一個塊設備,每個塊都有下標

2.文件系統看待磁盤,認為磁盤是一個block array[N] 的塊設備。

分區

分區:以開始塊號和結束塊號劃分,不同分區其實就是不同的盤,所以一塊磁盤就可以通過分區形成C、D等盤。

分組

分組:每個分區被分為多個塊組。這里采用分治的思想,分而治之。

在一個塊組中

Data Blocks:保存文件的內容,以4KB為單位。大部分的磁盤分區空間,都由Data Blocks占據。(每個數據塊(4KB大小的塊),都有唯一的編號 )

Block Bitmap(塊位圖):用來記錄Data Blocks 中哪個數據塊被占用,哪個數據塊沒被占用。(每個比特位代表一個數據塊,比特位位置表示對應位置的數據塊,比特位內容表示是否被占用。 )

inode

1.在文件系統中,文件屬性由inode的結構體來描述,而結構體大小是固定的,一般為128字節或256字節。可知,任何文件的屬性的種類是相同的,屬性的內容不同。

?

2.為了標識每個文件的唯一性,每個inode中都有inode number(inode編號)。

?

3.inode結構體中有i_block的數組映射關系表來找到文件內容

所以,上面的塊組中的

inode Table:存放文件屬性,如文件大小、所有者、最近修改時間等(是當前塊組中所有inode屬性的集合)。

?

inode Bitmap:用來標識inode Table中的位置是否被占用。(比特位的位置,表示哪個對應的inode ,比特位的內容表示是否空閑)

GDT:用來描述整個塊組的不同分區的位置。

?

Super Block:管理所有的組,用來描述一個分區分組整體情況。

注:不一定所有的組中都有,但幾乎多個組會同時存在同樣的Super Block,因為這個部分非常重要,如果損壞會導致整個分區廢掉,所以會在多個組中都存在來備份。

以,新建一個分區時,Super Block和GDT一定有有效數據,要給寫入文件系統和分區分組相關的管理信息。

再談inode

1.inode用來標識文件的唯一性。

2.inode由全分區統一分配(塊號也是),不能跨分區,一個分區,就是一個文件系統,相互獨立,,每個組的大小固定,每個組有多少個block和inode都是固定的,在Super Block結構中。

?

3.inode中不存放文件名,為什么呢,因為文件名存放在目錄文件的Data Block中,目錄文件的Data Block中放的是該目錄下的文件的文件名和inode的映射關系。

?

4.所以,在指定目錄下,新建文件,需要就將文件名和inode的映射寫入到當前目錄的Data Block中,所以要有w權限,讀取一個文件的屬性,要有r權限,x權限,關系著我們能否打開該目錄,打開了才能去讀寫。

路徑解析

要打開一個文件,就要知道這個文件的inode,就要去這個文件的目錄文件Date Block中取,但目錄文件也是文件,想要打開也要向上找,直到找到根目錄,這就是路徑解析,總之訪問文件都需要其路徑。

路徑緩存

linux中,當用戶訪問指定路徑下文件(包括路徑上目錄、最終的文件),linux會在進行路徑解析過程中,在內核中形成目錄樹和路徑緩存,加快查找效率。

在內核中使用dentry結構體組織、緩存文件的inode等信息,每個文件都會有對應的dentry結構體,這樣訪問文件時,會先在dentry樹中查找,找到返回inode等數據,沒找到再去磁盤中搜索,然后緩存新路徑。

?

dentry樹會使用lru算法處理不常訪問的路徑,防止占內存過多

再再看inode

1.前12個下標直接映射,還有三個分別是一級、二級、三級的間接塊指針,一共在inode中只需要存15個指針來指向所有內容塊。

2.一級間接塊指針指向一個塊,這個塊中存的不是數據,而是塊號,用來映射多個儲存數據的塊,二級的間接塊指針指向一個存著多個一級間接塊的塊,三級同理,多級映射,就可以讓一個inode指向一個很大的文件。

3.一個inode指向的文件如果過大,可以跨組申請塊空間。(可能inode用完,block沒用完或者反過來,這時,雖然磁盤還有空間,但不能新建文件了)

掛載

指的是將文件系統附加到操作系統的目錄樹中的某個特定位置(稱為掛載點),從而使得該文件系統中的文件和目錄能夠被訪問和使用。

?

1.一個磁盤必須分區格式化才能使用,一個分區也不能直接使用,需要掛載到指定的目錄才可以使用。

?

2.df -h 查看掛載

?

3.所以,雖然每個分區inode編號可能重復,但可以根據訪問目標文件的“路徑前綴”來判斷是在哪一個分區。

小知識

1.操作系統通過外設內部的寄存器將數據寫給或讀出外設。

?

2.OS一次會讀取4KB,就會一次讀取32個文件的inode,可以減少IO次數,提高緩存效率。

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

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

相關文章

如何使用redis做限流(golang實現小樣)

在實際開發中,限流(Rate Limiting)是一種保護服務、避免接口被惡意刷流的常見技術。常用的限流算法有令牌桶、漏桶、固定窗口、滑動窗口等。由于Redis具備高性能和原子性操作,常常被用來實現分布式限流。 下面給出使用Golang結合Redis實現簡單限流的幾種常見方式(以“固定…

手寫ES6 Promise() 相關函數

手寫 Promise() 相關函數: Promise()、then()、catch()、finally() // 定義三種狀態常量 const PENDING pending const FULFILLED fulfilled const REJECTED rejectedclass MyPromise {/*定義狀態和結果兩個私有屬性:1.使用 # 語法(ES2022 官方私有字…

Redis學習專題(五)緩存穿透、緩存擊穿、緩存雪崩

目錄 一、緩存穿透 緩存穿透的原因: 緩存穿透的現象: 緩存穿透的解決辦法: 二、緩存擊穿 緩存擊穿的原因: 緩存擊穿的現象: 緩存擊穿的解決辦法: 三、緩存雪崩 緩存雪崩的原因: 緩存雪崩的現象&…

【Hadoop】大數據技術之 MapReduce

目錄 一、MapReduce概述 1.1 MapReduce 定義 1.2 MapReduce優缺點 1.3 MapReduce 核心思想 1.4 MapReduce 進程 1.5 常用數據序列化類型 1.6 MapReduce 編程規范 二、WordCound 案例 2.1 環境準備 2.2 編寫程序 三、MapReduce 工作流程 一、MapReduce概述 1.1 MapRe…

國際前沿知識系列三:解決泛化能力不足問題

目錄 國際前沿知識系列三:解決泛化能力不足問題 一、子類建模法與分類建模法在腦區應變預測中的應用 (一)子類建模法 案例分析 (二)分類建模法 案例分析 二、基于遷移學習和數據融合的大腦應變預測模型改良 &a…

client.chat.completions.create方法參數詳解

response client.chat.completions.create(model"gpt-3.5-turbo", # 必需參數messages[], # 必需參數temperature1.0, # 可選參數max_tokensNone, # 可選參數top_p1.0, # 可選參數frequency_penalty0.0, # 可選參數presenc…

iOS 15.4.1 TrollStore(巨魔商店)安裝教程詳解:第二篇

?? iOS 15.4.1 TrollStore(巨魔商店)安裝教程詳解 ? 前言??? 如何安裝 TrollStore?第一步:打開 Safari 瀏覽器第二步:選擇對應系統版本安裝方式第三步:訪問地址,下載配置文件(plist)第四步:安裝配置文件第五步:“jailbreaks.app” 請求安裝 TrollHelper第六步…

SQL的RAND用法和指定生成隨機數的范圍

SQL中的RAND函數能夠滿足多種隨機數生成的需求。通過合理地使用種子、結合一些SQL語句,我們可以實現靈活的隨機數生成。在數據填充、數據處理、數據分析中經常需要用RAND生成的隨機數。 用法1 生成隨機浮點數,其返回值在0(包括0)…

AppAgentx 開源AI手機操控使用分享

項目地址: https://appagentx.github.io/?utm_sourceai-bot.cn GitHub倉庫: https://github.com/Westlake-AGI-Lab/AppAgentX/tree/main arXiv技術論文:https://arxiv.org/pdf/2503.02268 AppAgentx是什么: AppAgentX 是西湖大學推出的一種自我進化式 GUI 代理框架。它通過…

[原創]X86C++反匯編01.IDA和提取簽名

https://bpsend.net/thread-415-1-1.html 用VC6.0新建一個控制臺工程 編譯成 debug 和 Release 2個版本 應ida分別查看2種版本的程序 高版本ida 可能會直接定位到函數入口,正常情況下,我們需要先調試找到關鍵,找到關鍵以后點再通過調試設置api斷點,讀寫斷點等,找到程序的關鍵…

vs2022 Qt Visual Studio Tools插件設置

安裝之后,需要指定QT中msvc編譯器的位置,點擊下圖Location右邊的按鈕即可 選擇msvc2022_64\bin目錄下的 qmake.exe 另一個問題,雙擊UI文件不能打開設計界面 設置打開方式 選擇msvc2022_64\bin目錄下的designer.exe 確定即可 然后設置為默認值即可 確定…

C++代碼隨想錄刷題知識分享-----兩數之和(哈希表)三種算法逐個擊破

題目描述 給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那兩個整數,并返回它們的下標。 每個輸入只對應一個答案。同一個元素不能重復使用。你可以按任意順序返回答案。 示例 輸入: nums [2, 7, 11, 15], ta…

List介紹

什么是List 在集合框架中,List是一個接口,繼承自Collection Collection也是一個接口,該接口中規范了后序容器中常用的一些方法 Iterable也是一個接口,表示實現該接口的類是可以逐個元素進行遍歷的,具體如下&#xff1…

深入理解API:從概念到實戰

引言 在現代軟件開發中,API(Application Programming Interface)無處不在。無論是調用第三方服務、訪問操作系統功能,還是使用編程語言的標準庫,API 都扮演著關鍵角色。但對于許多初學者來說,API 仍然是一…

織夢dedecms登錄后臺出現Safe Alert Request Error step 2

今天一個客戶在安裝織夢dedecms時候,安裝完成后登錄后臺就出現“Safe Alert Request Error step 2”,常用dedecms的朋友都知道,這是織夢的安全機制,在程序覺得有sql注入等攻擊時候,會有這種提示。 1、起初我以為是文件…

BLIP3-o:理解和生成統一的多模態模型

文章目錄 研究背景BLIP3-o 框架3個關鍵問題BLIP3-o模型總結 paper link: https://arxiv.org/pdf/2505.09568from saleforce research 研究背景 隨著gpt4o圖像生成和編輯的應用火爆,如何構造能夠同時處理圖像理解和生成任務的統一多模態模型,成為研究的…

練習小項目7:天氣狀態切換器

🧠 項目目標: 點擊按鈕切換不同天氣狀態,背景或圖標隨之變化。 ? 功能描述: 顯示當前天氣(如:?? 晴天 / ?? 多云 / 🌧? 雨天) 點擊“切換天氣”按鈕,每點擊一次…

esp32 lvgl9.2版本,透明底色圖片的,透明部分被渲染成黑色,不隨背景顏色變化解決辦法

在lvgl圖片轉換工具時,指定轉換格式為ARGB8888 代指Alpha RGB RGB565(不支持 Alpha),透明像素會被解釋為黑色。改用 ARGB8888。 有問題的 轉換為ARGB8888后的

AI智能分析網關V4區域入侵檢測算法:全功能覆蓋,多場景守護安防安全

一、方案背景? 在當今社會,安全需求日益增長,傳統安防監控系統因效率低、精準度不足等問題,已無法滿足現代安全防范的要求。AI智能分析網關V4區域入侵檢測算法憑借其先進的人工智能技術,能夠實時、精準地識別區域內的異常入侵行…

Phantom 視頻生成的流程

Phantom 視頻生成的流程 flyfish Phantom 視頻生成的實踐 Phantom 視頻生成的流程 Phantom 視頻生成的命令 Wan2.1 圖生視頻 支持批量生成 Wan2.1 文生視頻 支持批量生成、參數化配置和多語言提示詞管理 Wan2.1 加速推理方法 Wan2.1 通過首尾幀生成視頻 AnyText2 在圖片里玩…