❶ 簇是存儲文件的最小單位
簇是存儲文件的最小單位,一個文件有多少個簇取決於文件大小和簇的大小,比如:簇的大小為4K,文件大小為6K,那麼這個文件就佔用2個簇,一個簇只能存一個文件或是一個文件的部分,這也就是小文件越多,磁碟佔用空間越大的原因。
❷ 軟盤是什麼格式的
FAT12
////////////////////
FAT12文件系統簡介
本文主要介紹以3.5英寸的1.44M標准格式化的FAT12文件系統的軟盤為介紹對象。這里強調那麼多是因為:1.44M的軟盤格式化可以不是1.44M,可以大於也可以小於;格式化的文件系統也可以不是FAT12。
為什麼會出現正常的1.44M軟盤格式化後可大可小的情況呢?從軟盤及軟盤驅動器原理出發,軟盤的定址方式(可以認為是讀取數據的方式)是:CHS,C = Cylinder(柱面),H = Header(磁頭),S = Sector(扇區)。標准地格式化後,磁碟將被格式化為 每面80磁軌(80個同心圓,柱面),每個磁軌有18個扇區,每個扇區是 512位元組,那麼高密3.5英寸軟盤的容量為:2×80×18×512 = 1474560 Byte = 1440 KB = 1.44 MB。然而,軟盤可以不格式為80磁軌,每個磁軌也可以不是18扇區,這是題外話,如果您有興趣,可以用古老的HDCopy試試。
文件存儲到磁碟上時至少要佔用1個扇區,即使這個文件只有1個位元組,如果文件有513位元組,那就得佔用2個扇區,下一個文件就不能用這只使用了一個位元組的扇區。即軟盤以扇區為單位存儲文件。現在用下面的假設來說明本文的目的:
假設只有18個扇區的磁碟,以 0 - 17 編址,如果一個文件保存在 1 - 6扇區,另一文件保存在 7 - 16扇區,如果我們對第一個文件增加了內容,又需要一個扇區來保存它,但由於文件連續存儲, 7號扇區是第二個文件的,我們當然不能用它,只有最後留有一個扇區可用,我們會不會把第二個文件先挪到8-17扇區以騰出一個扇區來給第一個文件使用呢?當只有少數兩個文件的時候可以,但有很多文件的時候會變得麻煩起來。如果我們用一個表來表示有一個文件佔用了 1-6扇區 和 17扇區,那事情就簡單了——我們不必為文件不連續而煩惱。這個表就叫它:文件分配表(File Allocation Table)。那怎樣才能知道這個文件存儲的文件名和文件存放的起始扇區?再建一個表,用於存放文件名、起始扇區、文件創建時間、文件實際大小等等資料,這個表叫:文件目錄表(File Directory Table)。將這兩個表放在磁碟指定的位置,以便操作系統使用,磁碟的其它扇區全都用來存放文件的實際內容,這就構成了有文件系統的磁碟。
磁碟上,0面0磁軌第1扇區用於存放引導程序,如果這512位元組最後兩個位元組分別是0x55,0xAA(一個字是0xAA55),稱為可引導標志,BIOS會將這512位元組讀取出來執行,操作系統便是利用這里來實現引導的。標識軟盤是不是FAT12並不是沒有根據的,在這512位元組中,還有一個設備頭用於標識這個軟盤(設備),例子如下:
;===========================================================================
; 程序執行的第一條指令必須是跳轉(如果你想使用FAT12這類文件系統的磁碟)
; 必須佔用3位元組
;===========================================================================
jmp SHORT main ; 2 bits,跳轉到主程序執行
nop ; 1 bit
;===========================================================================
; FAT12 文件系統頭,從NYAOS 借過來的,可以參考相關的文檔以獲得更多細節
; 這個塊會讓 Winimage 認出編譯後的二進制文件為有效的引導文件
; 如果不使用這個塊,Winimage將不會將其作為引導程序處理
; 但我們可以藉助其它方法和工具處理,比如DEBUG
;===========================================================================
bsOEM db "ExOS0.02" ; OEM String,任意你喜歡的8位元組ASCII碼
bsSectSize dw 512 ; Bytes per sector
bsClustSize db 1 ; Sectors per cluster
bsRessect dw 1 ; # of reserved sectors
bsFatCnt db 2 ; # of fat copies
bsRootSize dw 224 ; size of root directory
bsTotalSect dw 2880 ; total # of sectors if < 32 meg
bsMedia db 0xF0 ; Media Descriptor
bsFatSize dw 9 ; Size of each FAT
bsTrackSect dw 18 ; Sectors per track
bsHeadCnt dw 2 ; number of read-write heads
bsHidenSect dd 0 ; number of hidden sectors
bsHugeSect dd 0 ; if bsTotalSect is 0 this value is
; the number of sectors
bsBootDrv db 0 ; holds drive that the bs came from
bsReserv db 0 ; not used for anything
bsBootSign db 29h ; boot signature 29h
bsVolID dd 0 ; Disk volume ID also used for temp
; sector # / # sectors to load
bsVoLabel db "NO NAME " ; Volume Label
bsFSType db "FAT12 " ; File System type <- FAT 12文件系統
;===========================================================================
; Main start here
;===========================================================================
main:
#至於如何引導計算機,可以參考我Blog里的more.asp?name=xemean&id=2
0面0道第2扇區到第10扇區的9個扇區是FAT表的存放位置,為了預防,0面0道的第11扇區到1面0道第1扇區的9個扇區是第2個FAT表的存放位置,這第2個FAT是備用的,當第一個FAT出了問題里,可以用第2個FAT。1面0道的第2扇區起到1面0道的第15扇區(共14個扇區)用於存放 FDT。FDT沒有備份,所以沒有第二個FDT。這里要注意的是,磁碟為了讀寫的速度,0面0道的18個扇區接下來的是 1面0道的扇區,而不是0面1道,因為0面0道跟1面0道同在一個柱面上(同心圓),只是用的磁頭不同。
FAT12 中,每個文件分配表項只佔12位(bit),即1.5位元組(byte),每個表項代表一個扇區,在這里,磁碟只有扇區的概念,磁碟里所有扇區都被類似於上一段提到的磁碟讀寫方式線性地編址(LBA),不再有CHS。這里還要提一提簇的概念:DOS會把2個扇區作為一簇,那麼文件就要以簇為單位讀寫。簇的大小通常根據磁碟的大小設定,以盡可能少浪費磁碟空間為本。
FAT12每個表項的值指出文件存放的下一個扇區號,同時也是表項入口。比如如果文件的存放的第一個扇區是002,那系統首先找FAT的002,在002處得到一個值003,表示文件下一個扇區是003號,再接著003表項找,得到006...,表項的值含義如下:
000 - 此簇未用;FF8 - FFF 該簇為文件的最後一簇;FF0 - FF7,此簇為壞,不可用;其它值表示文件下一簇的簇號。
下面的圖來說明FAT的基本原理:
表項編號 值(16位) 備注
000 | FF0 | <- 000 項 001項為表頭,1位元組 0xF0表示存儲介質
001 | FFF | <- 2、3位元組為 0xFFFF ,固定值,FAT標志
002 | 003 | <- 文件下一簇為003
003 | 005 | <- 下一簇:005
004 | FF7 | <- 壞簇,不可用
005 | 011 | <- 下一簇:011
........................................
011 | FF8 | <- 該文件結束
012 | 000 | <- 可用簇
.......................................
根據上表,我們可以知道,一個文件佔用了 002,003,005,011 這4個簇。
簇號 + 31 = 邏輯扇區號 //// 31 = 保留扇區數 + 隱藏扇區數 + FAT數×每個FAT所佔扇區數 + FDT所佔扇區數 - 2 = 1 + 0 + 2*18 + 14 -2
LBA = 邏輯扇區號 - 1
扇區 = (LBA MOD 每道扇區數) + 1
磁軌 = (LBA / 每道扇區數) / 磁頭數
磁頭 = (LBA / 每道扇區數) MOD 磁頭數
根據上面的公式,得到以下計算值:
002: S = ( 32 MOD 18 ) + 1 = 15
002: C = ( 32 / 18 ) / 2 = 0
002: H = ( 32 / 18 ) MOD 2 = 1
-----------------
011: S = ( ( 11+31-1) MOD 18) + 1 = 6
011: C = ( ( 11+31-1) / 18) / 2 = 1
011: H = ( ( 11+31-1) / 18) MOD 2 = 0
就此,我們已經可心根據簇號得到物理CHS了,那怎樣才能得到一個文件的關系首簇號呢?前面我們提到了FDT。下面說說FDT的結構:
每個FDT項佔32位元組,分配如下:
=======================
0 - 7 : 8位元組,文件名
8 - 10: 3位元組,文件擴展名
11 :1位元組,文件的屬性
12 - 15:4位元組,保留
16 - 21:6位元組,保留
22 - 23:2位元組,文件最後修改時間(時分秒,5:6:5)
24 - 25:2位元組,文件最後修改日期(年月日,7:4:5,年取0-119對應 1980 - 2099)
26 - 27:2位元組,文件首簇號,我們可以根據這個值在FAT中找到文件的存儲位置
28 - 31:4位元組,文件的長度,以位元組為單位
===========================
0 - 7 文件名含義:0 - 目錄項為空,可用;E5 - 此文件已經被刪除
7 - 10 :文件名和擴展名為8.3格式,如果不夠,必需用空格填充,即文件名如果只有6個位元組,那剩下的2個位元組必須以空格填充。文件名和擴展名都是大寫。
11屬性位元組含義:00 - 普通文件;01 - 只讀;02 - 隱藏;04 - 系統文件;10(1x) - 該文件是目錄。
❸ 硬碟中的一簇等於多少位元組
硬碟中的每個簇可以包括2、4、8、16、32或64個扇區。硬碟的存儲容量=磁頭數×磁軌(柱面)數×每道扇區數×每道扇區位元組數。所以硬碟中的一簇等於多少位元組與以上硬碟的參數有關。
文件系統是操作系統與驅動器之間的介面,當操作系統請求從硬碟里讀取一個文件時,會請求相應的文件系統(FAT 16/32/NTFS)打開文件。扇區是磁碟最小的物理存儲單元,但由於操作系統無法對數目眾多的扇區進行定址,所以操作系統就將相鄰的扇區組合在一起,形成一個簇,然後再對簇進行管理。每個簇可以包括2、4、8、16、32或64個扇區。顯然,簇是操作系統所使用的邏輯概念,而非磁碟的物理特性。
微軟操作系統(DOS、WINDOWS等)中磁碟文件存儲管理的最小單位叫做「簇」,一個文件通常存放在一個或多個簇里,但至少要單獨占據一個「簇」。 也就是說兩個文件不能存放在同一個簇中。簇(CLUST)的本意就是「一群」、「一組」,即一組扇區(一個磁軌可以分割成若干個大小相等的圓弧,叫扇區)的意思。因為扇區的單位太小,因此把它捆在一起,組成一個更大的單位更方便進行靈活管理。簇的大小通常是可以變化的,是由操作系統在所謂「(高級)格式化」時規定的,因此管理也更加靈活。
通俗地講文件就好比是一個家庭,數據就是人,即家庭成員;所謂簇就是一些單元套房;扇區是組成這些單元套房的一個個大小相等的房間。
一個家庭可能住在一套或多套單元房子里,但一套房子不能同時住進兩個家庭的成員。
❹ ntfs文件系統中多個 datarun的起始邏輯簇號是如何計算的
文件佔用磁碟空間時,基本單位不是位元組而是簇。簇的大小與磁碟的規格有關,一般情況下,軟盤每簇是1個扇區,硬碟每簇的扇區數與硬碟的總容量大小有關,可能是4、8、16、32、64……。
通常在Windows平台下使用的3種文件系統是FAT(文件分區表),FAT32(32位文件分區表)和NTFS(NT文件系統)。在FAT文件系統下,每一個磁碟被分成固定大小的簇。簇最少為512個位元組,其大小可以成倍增長,最大為32K。每個簇都是由唯一的索引號——一個16位二進制數來標識。因為16位二進制數最大為65536,所以FAT分區所擁有的簇的數量不可能超過65536個。簇的數量和大小的限制,就是FAT分區為什麼不能超過2GB的原因。
FAT中的入口連接著組成一個文件的各個簇,文件的目錄入口包含其第一個簇的索引號,而該簇在FAT中的入口又包含著下一個簇的索引號,依此類推。一個文件的最後一簇對應的FAT入口則包含著一個特殊的文件終止符,未使用的簇和損壞的簇也會用特殊代碼標識出來。FAT32文件的原理幾乎與此相同,但它的簇更小,而且由於FAT32入口是32位,所以其容量理論上可以超過40億個位元組。
NTFS是一個相當高級的文件系統。它的主文件表(MFT)是一個非常完整的資料庫,它負責對磁碟上的每個文件進行索引。每個MFT的入口通常為1K大小,其中記錄了大量的文件信息。NTFS可以在文件的MFT入口中存儲非常小的文件的全部內容;對於大一些的文件,這些入口會標識出包含文件數據的簇。
硬碟最基本的組成部分是由堅硬金屬材料製成的塗以磁性介質的碟片,不同容量硬碟的碟片數不等。每個碟片有兩面,都可記錄信息。碟片被分成許多扇形的區域,每個區域叫一個扇區,每個扇區可存儲128×2的N次方(N=0.1.2.3)位元組信息。在DOS中每扇區是128×2的2次方=512位元組,碟片表面上以碟片中心為圓心,不同半徑的同心圓稱為磁軌。硬碟中,不同碟片相同半徑的磁軌所組成的圓柱稱為柱面。磁軌與柱面都是表示不同半徑的圓,在許多場合,磁軌和柱面可以互換使用,我們知道,每個磁碟有兩個面,每個面都有一個磁頭,習慣用磁頭號來區分。扇區,磁軌(或柱面)和磁頭數構成了硬碟結構的基本參數,幫這些參數可以得到硬碟的容量,基計算公式為:
存儲容量=磁頭數×磁軌(柱面)數×每道扇區數×每扇區位元組數。
要點:
(1)硬碟有數個碟片,每碟片兩個面,每個面一個磁頭。
(2)碟片被劃分為多個扇形區域即扇區。
(3)同一碟片不同半徑的同心圓為磁軌。
(4)不同碟片相同半徑構成的圓柱面即柱面。
(5)公式: 存儲容量=磁頭數×磁軌(柱面)數×每道扇區數×每扇區位元組數。
(6)信息記錄可表示為:××磁軌(柱面),××磁頭,××扇區。
❺ 文件簇是什麼
文件簇其實確切點說應該叫扇區簇 。
都知道一般一個扇區是512位元組,文件系統會把連續回的N(具體幾個就答要看文件系統的參數設定,一般為4K即8個扇區)個扇區視為一個簇,這樣做是為了優化磁碟訪問效率。
一個文件則由文件分配表中標識的N(視文件大小而定)個扇區簇組成,各個扇區簇之間可以為不連續的(這也就是為什麼要有磁碟整理軟體了)。
其實就是一個鏈表結構,如:
文件分配表->首簇->下一個簇->下一個簇->最後一個簇。