久综合色-久综合网-玖草影视-玖草资源在线-亚洲黄色片子-亚洲黄色片在线观看

Hello! 歡迎來到小浪云!


【Linux】基礎IO_文件系統


磁盤是一種存儲數據的設備,早期計算機主要使用軟磁盤(軟盤),而如今主要使用硬磁盤(硬盤)。當前市場上的硬盤主要分為機械硬盤和固態硬盤,兩者各有優缺點。

機械硬盤:容量大、價格低廉、但讀取速度較慢、體積較大(許多公司仍在使用,因為成本較低)。固態硬盤:讀取速度快、體積小、但價格較高,且存儲空間有限(當前大多數計算機使用固態硬盤)。

【Linux】基礎IO_文件系統

這里我們主要講解的是機械硬盤,顧名思義,機械硬盤是計算機上唯一的一個機械設備。

基本結構

機械硬盤的基本結構主要包含以下部分:

盤片:一片兩面,每一面都可以存儲數據,有一摞盤片。 磁頭:盤片每一面各有一個磁頭,負責盤面數據的讀取。 傳動軸:用來控制磁頭的進退。 主軸:控制盤片的穩定旋轉。

【Linux】基礎IO_文件系統

存儲結構

機械硬盤的物理存儲結構主要分為磁道、扇區和柱面。(部分內容來源于:硬盤結構(機械硬盤和固態硬盤)詳解)

【Linux】基礎IO_文件系統

磁道:每個盤片在邏輯上有許多不同半徑的同心圓,最外面的同心圓稱為0磁道。我們將每個同心圓稱為磁道(注意,磁道只是邏輯結構,盤面上并沒有實際的同心圓)。 扇區:在磁盤上,每個同心圓是磁道,從圓心向外呈放射狀產生分割線(扇骨),將每個磁道等分為若干弧段,每個弧段就是一個扇區。每個扇區的大小固定,為512Byte。扇區也是磁盤的最小存儲單位。 柱面:不同盤片中的相同磁道形成的一個圓柱。

數據的寫入與讀取

磁盤的存儲介質為磁性材料,計算機內的數據由大量的0和1組成,磁頭將這些電信號轉化為磁信號。機械硬盤通過磁頭對南北極的更改來實現數據的讀取與寫入。當通過CHS定位到具體扇區時:

向磁盤中寫入數據:N -> S (0->1) 刪除數據:S -> N (1->0) 數據的寫入/刪除與讀取的本質是更改基本元素的南北極,讀取南北極。

邏輯抽象

如上所說,如果操作系統(OS)能知道任意的CHS地址,就能訪問任意一個扇區,但OS內部并不是直接使用CHS定位法。

這是因為OS是一個用于管理軟硬件資源的軟件,而CHS定位法是磁盤作為硬件使用的方法。由于硬件可能會隨著時代的發展而不斷改變,如果此時OS采用CHS,那么OS也需要隨著硬件的更新而更新。耦合度太高,成本太大。因此,為了實現與硬件的解耦,OS采用一種新的定位方法——LBA邏輯塊地址。

如下圖所示:將磁道從最外層鋪開,就像扯膠帶一樣拉開,就會得到一串連續的線性空間,我們把它想象成一個大數組,如下圖所示:

【Linux】基礎IO_文件系統

此時計算機的常規訪問方式,就變成了某一個數據塊的起始地址+偏移量。這樣也就完成了CHS到LBA的轉換。因此,OS對于磁盤的管理,實際上就轉化為了對這個大數組的管理。

當然,OS進行IO的基本單位是可以調整的,一般都是4KB,即一個數據塊的大小,這也是為什么磁盤會被稱為塊設備的原因之一。這樣也是為了提高IO效率,根據內存對齊原則。

文件系統分治管理

【Linux】基礎IO_文件系統

Windows下的分盤:

【Linux】基礎IO_文件系統

這種管理策略,有點類似于我們國內為了管理好整個國家,設置了各個省,而為了管理好一個省,又設置了各個市。只不過計算機的這種管理方式要更加簡單些,因為管理的策略都一樣,不像國內各個省市的管理要考慮當地具體情況。

塊組內的信息

如上所說,OS只需要管理好一個塊組,就能管理好所有的塊組,進而管理好一個分區,再進而管理好整個文件系統。那么,一個塊組內,都包含些什么呢?如下所示:

【Linux】基礎IO_文件系統

上面提到了一個inode節點,我們知道,Linux下一切皆文件,文件=內容+屬性,Linux是將文件的內容與屬性的數據分離開來,一個inode節點內,保存文件的各種屬性信息,比如:文件的讀寫權限、擁有者、文件大小、對應的inode編號等。而文件的內容數據,則保存在data blocks中對應的一個或多個數據塊中。

這里需要注意的是:

在文件的inode中,不包含文件名。 目錄也是文件,也有自己的inode編號,其中目錄的數據塊中存放的則是該目錄下的文件名與對應的inode編號的映射關系。兩者互為Key值。 inode編號只在該分組所在的分區內有效。通過inode編號,就可以先確定所在分區,再確定所在分組。 一個文件對應一個inode編號。 任何文件,都在處于一個目錄內。所以可以先通過inode table找到目錄的inode編號,找到inode編號,就找到了inode節點,節點內記載著各種屬性,進而找到Block Bitmap的使用情況,根據Block Bitmap再來確定目錄所使用的數據塊,目錄的數據塊內包含目錄下的文件名與文件的inode編號的映射關系,從而找到目錄下的某一個具體文件。我們通過指令ls -l -i來查看文件的inode編號。

【Linux】基礎IO_文件系統

磁盤文件的創建與刪除

文件創建

對于文件的創建,首先會找到一個空閑的inode節點,將文件屬性記錄在該節點內,同時將該inode節點對應的inode Bitmap的比特位由0置1。 尋找空閑的數據塊,用來存儲文件的相關內容,并將數據塊的相關信息填入inode節點中,同時將對應的Block Bitmap由0置1。 將該文件名添加到當前目錄文件的date block中,并將該文件名與對應的inode編號連接起來。

文件刪除

文件的刪除,其實只需要對位圖信息進行修改即可。 首先根據文件所在的目錄。目錄中的date Block記載著該目錄下的文件名與inode編號的映射關系,根據映射關系,找到該文件對應的inode。 根據inode,將對應的Block Bitmap由1置0(刪除內容)。 再根據inode,將對應的inode Bitmap由1置0。(刪除屬性)。

補充

補充一

我們知道,在文件的inode節點中,記載了數據塊的相關使用信息,可能是用一個數組來記載,但是此時可能會面臨一個問題,就是假如一個文件使用了15個數據塊,而一個數據塊的大小為4KB,也不是意味著該文件最多能放入15*4=60KB的內容?

答案是否定的,因為數據塊里面有的可能并不是放著文件的內容,而是存放著該文件使用的其它數據塊的索引。(有點類似套娃)。如下所示:

【Linux】基礎IO_文件系統

如上所示,一個數據塊內,可能存在多級的索引關系,從而實現對大量數據的存儲。

補充二

如上所說,文件的內容采用數據塊存儲,而一個數據塊的大小為4KB,那么就可能會出現文件系統中存在大量的,內容非常少導致實際使用的空間很小(可能才幾個字節,甚至更小),此時就會出現大量的空間浪費。

生活原本沉悶,但跑起來就會有風!?

相關閱讀

主站蜘蛛池模板: 亚洲一区二区三区免费观看 | 国产精品李雅在线观看 | 久久久综合结合狠狠狠97色 | 亚洲欧美成人综合 | 奇米网狠狠干 | 成人精品在线观看 | 久久99久久99精品免观看 | 亚洲欧美成人影院 | 在线播放一级片 | 看性过程三级视频在线观看 | 中文字幕日韩一区二区 | a免费网站 | 欧美性夜欢| 国产精品高清视亚洲精品 | 毛片在线播放网址 | 国产a精品三级 | 欧美国产大片 | 亚洲狠狠ady亚洲精品大秀 | 久色tv| 99久久国产综合精品国 | 亚洲成人精品 | 久久91亚洲精品中文字幕奶水 | 久久精品大片 | 91亚洲精品一区二区在线观看 | 国产美女一区精品福利视频 | 波多久久夜色精品国产 | 日韩久久久精品中文字幕 | 欧美视频一区二区在线观看 | 亚洲经典在线中文字幕 | 中文字幕亚洲一区 | 无遮挡一级毛片私人影院 | 亚洲精品国产精品精 | youjizz日韩 | 国产一区在线播放 | 在线观看免费为成年视频 | 欧美一级淫片免费播放口 | 久久日本精品一区二区免费 | 国产精品毛片在线大全 | 欧美xxxwww | 性生活视频网站 | 99久久亚洲综合精品网站 |