這是我們作業系統真題:想要做這道題,我們是必須對磁碟的讀寫資料是如何工作的需要有個大致的瞭解,以下是自己又豐富了一下這方面的知識和大家分享:
1:.若檔案的每個邏輯記錄的長度為80個位元組,邏輯記錄的編號從0開始。磁碟的讀寫採用緩衝技術,緩衝池中共有3個緩衝區,每個緩衝區的長度和磁碟塊的長相同,都是800個位元組。假定磁碟僅有一面,每個磁軌可以存放4塊,塊號從0開始編號,磁軌從1開始編號,即0—3塊存放在1號磁軌,4—7塊存放在2號磁軌,……現在要讀的邏輯記錄的記錄編號為:25、130、340、303、180。用最短尋找時間優先演算法進行移臂調度,磁頭當前所處位置的磁軌號為7。當緩衝區都被用滿時,如果有新的內容要進入,則淘汰原先最早被佔用的那個緩衝區的內容,即讓新的內容衝掉那個緩衝區中的內容,請描述這3個緩衝區中內容的變換過程(即它們先後被哪些塊的內容所佔用)。
每個磁碟塊存10個邏輯記錄;
邏輯記錄的記錄編號為:25、130、340、303、180
邏輯記錄所在塊的編號為:2、13、34、30、18
磁碟塊所在磁軌的編號為:1、4、9、8、5
最短尋找時間優先演算法進行移臂調度,磁軌被訪問的次序為:8、9、5、4、1。
磁碟塊被訪問的次序為:30、34、18、13、2。
緩衝區中內容的變換如下:
區號 內容變化
1 空→磁碟塊30→磁碟塊13
2 空→磁碟塊34→磁碟塊2
3 空→磁碟塊18
相關知識
我們知道資訊儲存在硬碟裡,把它拆開也看不見裡面有任何東西,只有些碟片。假設,你用顯微鏡把碟片放大,會看見碟片表面凹凸不平,凸起的地方被磁化,凹的地方是沒有被磁化;凸起的地方代表數字1(磁化為1),凹的地方代表數字0。因此硬碟可以以二進位來儲存表示文字、圖片等資訊。
1、硬碟的組成
硬碟大家一定不會陌生,我們可以把它比喻成是我們電腦儲存資料和資訊的大倉庫。一般說來,無論哪種硬碟,都是由碟片、磁頭、碟片主軸、控制電機、磁頭控制器、資料轉換器、介面、緩衝等幾個部份組成。
平面圖:
立體圖
所有的碟片都固定在一個旋轉軸上,這個軸即碟片主軸。而所有碟片之間是絕對平行的,在每個碟片的儲存面上都有一個磁頭,磁頭與碟片之間的距離比頭髮 絲的直徑還小。所有的磁頭連在一個磁頭控制器上,由磁頭控制器負責各個磁頭的運動。磁頭可沿碟片的半徑方向動作,(實際是斜切向運動),每個磁頭同一時刻也必須是同軸的,即從正上方向下看,所有磁頭任何時候都是重疊的(不過目前已經有多磁頭獨立技術,可不受此限制)。而碟片以每分鐘數千轉到上萬轉的速度在高速旋轉,這樣磁頭就能對碟片上的指定位置進行資料的讀寫操作。
由於硬碟是高精密裝置,塵埃是其大敵,所以必須完全密封。
2、硬碟的工作原理
硬碟在邏輯上被劃分為磁軌、柱面以及扇區.
硬碟的每個碟片的每個面都有一個讀寫磁頭,磁碟盤面地區的劃分。
磁頭靠近主軸接觸的表面,即線速度最小的地方,是一個特殊的地區,它不存放任何資料,稱為啟停區或著陸區(LandingZone),啟停區外就是資料區。在最外圈,離主軸最遠的地方是“0”磁軌,硬碟資料的存放就是從最外圈開始的。那麼,磁頭是如何找到“0”磁軌的位置的 呢?在硬碟中還有一個叫“0”磁軌檢測器的構件,它是用來完成硬碟的初始定位。“0”磁軌是如此的重要,以致很多硬碟僅僅因為“0”磁軌損壞就報廢,這是
非常可惜的。
早期的硬碟在每次關機之前需要運行一個被稱為Parking的程式,其作用是讓磁頭回到啟停區。現代硬碟在設計上已摒棄了這個雖不複雜卻很讓人不愉快的小缺陷。硬碟不工作時,磁頭停留在啟停區,當需要從硬碟讀寫資料時,磁碟開始旋轉。旋轉速度達到額定的高速時,磁頭就會因碟片旋轉產生的氣流而抬起, 這時磁頭才向碟片存放資料的地區移動。
碟片旋轉產生的氣流相當強,足以使磁頭托起,並與盤面保持一個微小的距離。這個距離越小,磁頭讀寫資料的靈敏度就越高,當然對硬碟各組件的要求也越 高。早期設計的磁碟機使磁頭保持在盤面上方几微米處飛行。稍後一些設計使磁頭在盤面上的飛行高度降到約0.1μm~0.5μm,現在的水平已經達到 0.005μm~0.01μm,這隻是人類頭髮直徑的千分之一。
氣流既能使磁頭脫離開盤面,又能使它保持在離盤面足夠近的地方,非常緊密地跟隨著磁碟表面呈起伏運動,使磁頭飛行處於嚴格受控狀態。磁頭必須飛行在盤面上方,而不是接觸盤面,這種位置可避免擦傷磁性塗層,而更重要的是不讓磁性塗層損傷磁頭。
但是,磁頭也不能離盤面太遠,否則,就不能使盤面達到足夠強的磁化,難以讀出盤上的磁化翻轉(磁極轉換形式,是磁碟上實際記錄資料的方式)。
硬碟磁頭的飛行懸浮高度低、速度快,一旦有小的塵埃進入硬碟密封腔內,或者一旦磁頭與盤體發生碰撞,就可能造成資料丟失,形成壞塊,甚至造成 磁頭和盤體的損壞。所以,硬碟系統的密封一定要可靠,在非專業條件下絕對不能開啟硬碟密封腔,否則,灰塵進入後會加速硬碟的損壞。另外,硬碟磁頭的尋道伺服電機多採用音圈式旋轉或直線運動步進電機,在伺服跟蹤的調節下精確地跟蹤碟片的磁軌,所以,硬碟工作時不要有衝擊碰撞,搬動時要小心輕放。
這種硬碟就是採用溫徹斯特(Winchester)技術製造的硬碟,所以也被稱為溫盤,目前絕大多數硬碟都採用此技術。
3、盤面、磁軌、柱面和扇區
硬碟的讀寫是和扇區有著緊密關係的。在說扇區和讀寫原理之前先說一下和扇區相關的”盤面”、“磁軌”、和“柱面”。
1. 盤面
硬碟的碟片一般用鋁合金材料做基片,高速硬碟也可能用玻璃做基片。硬碟的每一個碟片都有兩個盤面(Side),即上、下盤面,一般每個盤面都會利用,都可以儲存資料,成為有效碟片,也有極個別的硬碟盤面數為單數。每一個這樣的有效盤面都有一個盤面號,按順序從上至下從“0”開始依次編號。在硬碟系統中,盤面號又叫磁頭號,因為每一個有效盤面都有一個對應的讀寫磁頭。硬碟的碟片組在2~14片不等,通常有2~3個碟片,故盤面號(磁頭號)為0~3或
0~5。
2. 磁軌
磁碟在格式化時被劃分成許多同心圓,這些同心圓軌跡叫做磁軌(Track)。磁軌從外向內從0開始順序編號。硬碟的每一個盤面有300~1 024個磁軌,新式大容量硬碟每面的磁軌數更多。資訊以脈衝串的形式記錄在這些軌跡中,這些同心圓不是連續記錄資料,而是被劃分成一段段的圓弧,這些圓弧的角速度一樣。由於徑向長度不一樣,所以,線速度也不一樣,外圈的線速度較內圈的線速度大,即同樣的轉速下,外圈在同樣時間段裡,划過的圓弧長度要比內圈
划過的圓弧長度大。每段圓弧叫做一個扇區,扇區從“1”開始編號,每個扇區中的資料作為一個單元同時讀出或寫入。一個標準的3.5寸硬碟盤面通常有幾百到幾千條磁軌。磁軌是“看”不見的,只是盤面上以特殊形式磁化了的一些磁化區,在磁碟格式化時就已規劃完畢。
3. 柱面
所有盤面上的同一磁軌構成一個圓柱,通常稱做柱面(Cylinder),每個圓柱上的磁頭由上而下從“0”開始編號。資料的讀/寫按柱面進行,即磁 頭讀/寫資料時首先在同一柱面內從“0”磁頭開始進行操作,依次向下在同一柱面的不同盤面即磁頭上進行操作,只在同一柱面所有的磁頭全部讀/寫完畢後磁頭 才轉移到下一柱面(同心圓的再往裡的柱面),因為選取磁頭只需通過電子切換即可,而選取柱面則必須通過機械切換。電子切換相當快,比在機械上磁頭向鄰近磁軌移動快得多,所以,資料的讀/寫按柱面進行,而不按盤面進行。也就是說,一個磁軌寫滿資料後,就在同一柱面的下一個盤面來寫,一個柱面寫滿後,才移到下一個扇區開始寫資料。讀資料也按照這種方式進行,這樣就提高了硬碟的讀/寫效率。
一塊硬碟的圓柱數(或每個盤面的磁軌數)既取決於每條磁軌的寬窄(同樣,也與磁頭的大小有關),也取決於定位機構所決定的磁軌間步距的大小。
4.扇區
作業系統以扇區(Sector)形式將資訊儲存在硬碟上,每個扇區包括512個位元組的資料和一些其他資訊。一個扇區有兩個主要部分:儲存資料地點的標識符和儲存資料的資料區段。
扇區的第一個主要部分是標識符。標識符,就是扇區頭標,包括組成扇區三維地址的三個數字:
盤面號:扇區所在的磁頭(或盤面)
柱面號:磁軌,確定磁頭的徑向方向。
扇區號:在磁軌上的位置。也叫塊號。確定了資料在碟片圓圈上的位置。
頭標中還包括一個欄位,其中有顯示扇區是否能可靠儲存資料,或者是否已發現某個故障因而不宜使用的標記。有些硬碟控制器在扇區頭標中還記錄有指示字,可在原扇區出錯時指引磁碟轉到替換扇區或磁軌。最後,扇區頭標以迴圈冗餘校正(CRC)值作為結束,以供控制器檢驗扇區頭標的讀出情況,確保準確無誤。
扇區的第二個主要部分是儲存資料的資料區段,可分為資料和保護資料的錯誤修正碼(ECC)。在初始準備期間,電腦用512個虛擬資訊位元組(實際資料的存放地)和與這些虛擬資訊位元組相應的ECC數字填入這個部分。
5. 訪盤請求完成過程 :
確定磁碟地址(柱面號,磁頭號,扇區號),記憶體位址(源/目):
當需要從磁碟讀取資料時,系統會將資料邏輯地址傳給磁碟,磁碟的控制電路按照定址邏輯將邏輯地址翻譯成物理地址,即確定要讀的資料在哪個磁軌,哪個扇區。
為了讀取這個扇區的資料,需要將磁頭放到這個扇區上方,為了實現這一點:
1)首先必須找到柱面,即磁頭需要移動對準相應磁軌,這個過程叫做尋道,所耗費時間叫做尋道時間,
2)然後目標扇區旋轉到磁頭下,即磁碟旋轉將目標扇區旋轉到磁頭下。這個過程耗費的時間叫做旋轉時間。
即一次訪盤請求(讀/寫)完成過程由三個動作組成:
1)尋道(時間):磁頭移動定位到指定磁軌
2)旋轉延遲(時間):等待指定扇區從磁頭下旋轉經過
3)資料轉送(時間):資料在磁碟與記憶體之間的實際傳輸
因此在磁碟上讀取扇區資料(一塊資料)所需時間:
Ti/o=tseek +tla + n *twm
其中:
tseek 為尋道時間
tla為旋轉時間
twm 為傳輸時間
4、磁碟的讀寫原理
系統將檔案儲存體到磁碟上時,按柱面、磁頭、扇區的方式進行,即最先是第1磁軌的第一磁頭下(也就是第1盤面的第一磁軌)的所有扇區,然後,是同一柱面的下一磁頭,……,一個柱面儲存滿後就推進到下一個柱面,直到把檔案內容全部寫入磁碟。
(檔案的記錄在同一盤組上存放是,應先集中放在一個柱面上,然後再順序存放在相鄰的柱面上,對應同一柱面,則應該按盤面的次序順序存放。)
(從上到下,然後從外到內。資料的讀/寫按柱面進行,而不按盤面進行,先)
系統也以相同的順序讀出資料。讀出資料時通過告訴磁碟控制卡要讀出扇區所在的柱面號、磁頭號和扇區號(物理地址的三個組成部分)進行。磁碟控制卡則 直接使磁頭組件步進到相應的柱面,選通相應的磁頭,等待要求的扇區移動到磁頭下。在扇區到來時,磁碟控制卡讀出每個扇區的頭標,把這些頭標中的地址資訊與期待檢出的磁頭和柱面號做比較(即尋道),然後,尋找要求的扇區號。待磁碟控制卡找到該扇區頭標時,根據其任務是寫扇區還是讀扇區,來決定是轉換寫電路,
還是讀出資料和尾部記錄。找到扇區後,磁碟控制卡必須在繼續尋找下一個扇區之前對該扇區的資訊進行後處理。如果是讀資料,控制器計算此資料的ECC碼,然 後,把ECC碼與已記錄的ECC碼相比較。如果是寫資料,控制器計算出此資料的ECC碼,與資料一起儲存。在控制器對此扇區中的資料進行必要處理期間,磁 盤繼續旋轉。
5、磁碟片段的產生
俗話說一圖勝千言,先用一張ACSII碼圖來解釋為什麼會產生磁碟片段。
上面的ASCII圖表示磁碟檔案系統,由於目前上面沒有任何資料檔案,所以我把他表示成0。
在圖的最上側和左側各有a-z 26個字母,這是用來定位每個資料位元組的具體位置,如第1行1列是aa,26行26列是zz。
我們建立一個新檔案,理所當然的,我們的檔案系統就產生了變化,現在是
:”內容表”(TOC)佔據了前四行,在TOC裡存貯著每件檔案在系統裡所在的位置。
在,TOC包括了一個名字叫hello.txt的檔案,其具體內容是”Hello, world”,在系統裡的位置是ae到le。
接下來再建立一個檔案
,我們建立的檔案bye.txt緊貼著第一個檔案hello.txt。
其實這是最理想的系統結構,如果你將你的檔案都按照所表示的那樣一個挨著一個,緊緊的貼放在一起的話,那麼讀取他們將會非常的容易和迅速,這是因為在硬碟裡動得最慢的(相對來說)就是傳動手臂,少位移一些,讀取檔案資料的時間就會快一些。
然而恰恰這就是問題的所在。現在我想在”Hello, World”後加上些驚嘆號來表達我強烈的感情,現在的問題是:在這樣的系統上,檔案所在的行就沒有地方讓我放這些驚嘆號了,因為bye.txt佔據了剩下的位置。
現在有倆個方法可以選擇,但是沒有一個是完美的
1.我們從原位置刪除檔案,重建立個檔案重新寫上”Hello, World!!”. –這就無意中延長了檔案系統的讀和寫的時間。
2.打碎檔案,就是在別的空的地方寫上驚嘆號,也就是”身首異處”–這個點子不錯,速度很快,而且方便,但是,這就同時意味著大大的減慢了讀取下一個新檔案的時間。
如果你對上面的文字沒概念,
這裡所說的方法二就像是我們的windows系統的儲存方式,每個檔案都是緊挨著的,但如果其中某個檔案要更改的話,那麼就意味著接下來的資料將會被放在磁碟其他的空餘的地方。
如果這個檔案被刪除了,那麼就會在系統中留下空格,久而久之,我們的檔案系統就會變得支離破碎,片段就是這麼產生的。
試著簡單點,講給聽的硬碟讀寫原理簡化版
硬碟的結構就不多說了,我們平常電腦的資料都是存在磁軌上的,大致上和光碟片差不多.讀取都是靠磁頭來進行.
我們都知道,我們的資料資料都是以資訊的方式儲存在盤面的扇區的磁軌上,硬碟讀取是由搖臂控制磁頭從盤面的外側向內側進行讀寫的.所以外側的資料讀取速度會比內側的資料快很多.
其實我們的檔案大多數的時候都是破碎的,在檔案沒有破碎的時候,搖臂只需要尋找1次磁軌並由磁頭進行讀取,只需要1次就可以成功讀取;但是如果檔案破碎成 11處,那麼搖臂要來回尋找11次磁軌磁頭進行11次讀取才能完整的讀取這個檔案,讀取時間相對沒有破碎的時候就變得冗長.
因此,磁碟片段往往也是拖慢系統的重要因素之一.
總結:原理懂了,做起來其實很簡單!