到底啥是簇呢 ?今天就徹底掃除疑惑

2021-10-03 21:04:31 字數 1383 閱讀 3660

不知道有沒有許多同志和我一樣,用stm32微控制器玩flash上檔案系統的時候,發現當中有個簇的概念,比如說你用fatfs自帶的查詢剩餘記憶體空間的時候得到的就是空閒的簇數量。

那麼問題來了,到底啥是簇呢   今天就徹底掃除疑惑。

一、扇區基本介紹

1、扇區(磁碟上劃分的區域)

磁碟上的每個磁軌被等分為若干個弧段,這些弧段便是磁碟的扇區。硬碟的讀寫以扇區為基本單位。

磁碟的每一面被分為很多條磁軌,即表面上的一些同心圓,越接近中心,圓就越小。而每乙個磁軌又按512個位元組為單位劃分為等分,叫做扇區,在一些硬碟的引數列表上你可以看到描述每個磁軌的扇區數的引數,它通常用乙個範圍標識,例如373~746,這表示,最外圈的磁軌有746個扇區,而最裡面的磁軌有373個扇區,因此可以算出來,磁軌的容量分別是從186.5kb到373kb(190976b--381952b)

磁碟驅動器在向磁碟讀取和寫入資料時,要以扇區為單位。在磁碟上,dos作業系統是以「簇」為單位為檔案分配磁碟空間的。硬碟的簇通常為多個扇區,與磁碟的種類、dos 版本及硬碟分割槽的大小有關。每個簇只能由乙個檔案占用,即使這個檔案中有幾個位元組,決不允許兩個以上的檔案共用乙個簇,否則會造成資料的混亂。這種以簇為最小分配單位的機制,使硬碟對資料的管理變得相對容易,但也造成了磁碟空間的浪費,尤其是小檔案數目較多的情況下,乙個上千兆的大硬碟,其浪費的磁碟空間可達上百兆位元組。

為了對扇區進行查詢和管理,需要對扇區進行編號,扇區的編號從0磁軌開始,起始扇區為1扇區,其後為2扇區、3扇區……,0磁軌的扇區編號結束後,1磁軌的起始扇區累計編號,直到最後乙個磁軌的最後乙個扇區(n扇區)。例如,某個硬碟有1024個磁軌,每個磁軌劃分為63個扇區,則0磁軌的扇區號為1~63,1磁軌的起始扇區號為64最後乙個磁軌的最後乙個扇區號為64512。硬碟在進行扇區編號時與軟盤有一些區別,在軟盤的乙個磁軌中,扇區號一次編排,即1、2、3……n扇區。由於硬碟的轉速較高,磁頭在完成某個扇區資料的讀寫後,必須將資料傳輸到微機,這需要乙個時間,但是這時硬碟在繼續高速旋轉,當資料傳輸完成後,磁頭讀寫第二個扇區時,磁碟已經旋轉到了另外乙個扇區。因此在早期硬碟中,扇區號是按照某個間隔係數跳躍編排的。

2、壞扇區

在硬碟中無法被正常訪問或不能被正確讀寫的扇區都稱為badsector。乙個扇區能儲存512bytes的資料,如果在某個扇區中有任何乙個位元組不能被正確讀寫,則這個扇區為badsector。除了儲存512bytes外,每個扇區還有數十個bytes資訊,包括標識(id)、校驗值和其它資訊。這些資訊任何乙個位元組出錯都會導致該扇區變「bad」。例如,在低階格式化的過程中每個扇區都分配有乙個編號,寫在id中。如果id部分出錯就會導致這個扇區無法被訪問到,則這個扇區屬於badsector。有一些badsector能夠通過低階格式化重寫這些資訊來糾正。

Webhook到底是個啥?

伺服器 jenkins servergit serverngrokgithub webhook 在配置jenkins實現前端自動化構建的過程中,對於自動化的過程理解很模糊,只是知道jenkins伺服器,git倉庫和後端應用伺服器這三個概念。答案就是 git webhook機制發出請求,告知jenki...

elemtype到底是個啥?

以前對這個東西的一知半解,今天有時間,查了多方面的資料,總結下 elemtype簡單來說就是 用來更好的替代,他也可以叫做別的名字,比如說 define elemtype int 寫程式,就可以用elemtype來進行替代int,若以後想要改elemtype所定義的資料型別為char,直接 defi...

generator yield到底是個啥

先來乙個函式 function show let gen show gen.next 12 gen.next 5 通過函式我們可以看到,定義a接收了yield傳進來的引數,現在請大家和我玩個遊戲,猜猜看a是幾 好了,不賣關子了,咱們執一下看看 那麼現在反過來就有乙個問題了,可能有些人會說,等會,我有...