日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

磁盘位置_CPT201-磁盘

發(fā)布時(shí)間:2025/4/5 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 磁盘位置_CPT201-磁盘 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載于:

簡單理解磁盤結(jié)構(gòu)_劉小緒同學(xué)的博客-CSDN博客?blog.csdn.net

數(shù)據(jù)庫系統(tǒng)總會(huì)涉及到輔助存儲(chǔ)(大多都是磁盤),因?yàn)樗鼈兡軌虼鎯?chǔ)大量需要長期保存的數(shù)據(jù),因此我們有必要先了解了解磁盤的相關(guān)知識(shí)。

根據(jù)機(jī)械原理,存儲(chǔ)器的容量越大其速度就越慢。但是速度越快的存儲(chǔ)器,其單位字節(jié)的價(jià)格就越貴。現(xiàn)代計(jì)算機(jī)系統(tǒng)可以包含幾個(gè)不同的可以存儲(chǔ)數(shù)據(jù)的部件,就形成了存儲(chǔ)器的層次結(jié)構(gòu),但是需要注意的是「虛擬內(nèi)存」是操作系統(tǒng)與操作系統(tǒng)運(yùn)用機(jī)器硬件的產(chǎn)物,它不是存儲(chǔ)器的層次之一。

磁盤結(jié)構(gòu)

傳統(tǒng)的硬盤盤結(jié)構(gòu)是像下面這個(gè)樣子的,它有一個(gè)或多個(gè)盤片,用于存儲(chǔ)數(shù)據(jù)。盤片多采用鋁合金材料;中間有一個(gè)主軸,所有的盤片都繞著這個(gè)主軸轉(zhuǎn)動(dòng)。一個(gè)組合臂上面有多個(gè)磁頭臂,每個(gè)磁頭臂上面都有一個(gè)磁頭,負(fù)責(zé)讀寫數(shù)據(jù)。

磁盤一般有一個(gè)或多個(gè)盤片。每個(gè)盤片可以有兩面,即第一個(gè)盤片的正面為0面,反面為 1 面;第二個(gè)盤片的正面為 2 面…依次類推。磁頭的編號(hào)也和盤面的編號(hào)是一樣的,因此有多少個(gè)盤面就有多少個(gè)磁頭。盤面正視圖如下圖,磁頭的傳動(dòng)臂只能在盤片的內(nèi)外磁道之間移動(dòng)。因此不管開機(jī)還是關(guān)機(jī),磁頭總是在盤片上面。關(guān)機(jī)時(shí),磁頭停在盤片上面,抖動(dòng)容易劃傷盤面造成數(shù)據(jù)損失,為了避免這樣的情況,所以磁頭都是停留在起停區(qū)的,起停區(qū)是沒有數(shù)據(jù)的。

每個(gè)盤片的盤面被劃分成多個(gè)狹窄的同心圓環(huán),數(shù)據(jù)就存儲(chǔ)在這樣的同心圓環(huán)上面,我們將這樣的圓環(huán)稱為磁道 (Track)。每個(gè)盤面可以劃分多個(gè)磁道,最外圈的磁道是0號(hào)磁道,向圓心增長依次為1磁道、2磁道…磁盤的數(shù)據(jù)存放就是從最外圈開始的。

根據(jù)硬盤的規(guī)格不同,磁道數(shù)可以從幾百到成千上萬不等。每個(gè)磁道可以存儲(chǔ)數(shù) Kb 的數(shù)據(jù),但是計(jì)算機(jī)不必要每次都讀寫這么多數(shù)據(jù)。因此,再把每個(gè)磁道劃分為若干個(gè)弧段,每個(gè)弧段就是一個(gè)扇區(qū) (Sector)。扇區(qū)是硬盤上存儲(chǔ)的物理單位,現(xiàn)在每個(gè)扇區(qū)可存儲(chǔ) 512 字節(jié)數(shù)據(jù)已經(jīng)成了業(yè)界的約定。也就是說,即使計(jì)算機(jī)只需要某一個(gè)字節(jié)的數(shù)據(jù),但是也得把這個(gè) 512 個(gè)字節(jié)的數(shù)據(jù)全部讀入內(nèi)存,再選擇所需要的那個(gè)字節(jié)。

柱面是我們抽象出來的一個(gè)邏輯概念,簡單來說就是處于同一個(gè)垂直區(qū)域的磁道稱為柱面 ,即各盤面上面相同位置磁道的集合。需要注意的是,磁盤讀寫數(shù)據(jù)是按柱面進(jìn)行的,磁頭讀寫數(shù)據(jù)時(shí)首先在同一柱面內(nèi)從 0 磁頭開始進(jìn)行操作,依次向下在同一柱面的不同盤面(即磁頭上)進(jìn)行操作,只有在同一柱面所有的磁頭全部讀寫完畢后磁頭才轉(zhuǎn)移到下一柱面。因?yàn)檫x取磁頭只需通過電子切換即可,而選取柱面則必須通過機(jī)械切換。數(shù)據(jù)的讀寫是按柱面進(jìn)行的,而不是按盤面進(jìn)行,所以把數(shù)據(jù)存到同一個(gè)柱面是很有價(jià)值的。

磁盤被磁盤控制器所控制(可控制一個(gè)或多個(gè)),它是一個(gè)小處理器,可以完成一些特定的工作。比如將磁頭定位到一個(gè)特定的半徑位置;從磁頭所在的柱面選擇一個(gè)扇區(qū);讀取數(shù)據(jù)等。

現(xiàn)代硬盤尋道都是采用CHS(Cylinder Head Sector)的方式,硬盤讀取數(shù)據(jù)時(shí),讀寫磁頭沿徑向移動(dòng),移到要讀取的扇區(qū)所在磁道的上方,這段時(shí)間稱為尋道時(shí)間(seek time)。因讀寫磁頭的起始位置與目標(biāo)位置之間的距離不同,尋道時(shí)間也不同。磁頭到達(dá)指定磁道后,然后通過盤片的旋轉(zhuǎn),使得要讀取的扇區(qū)轉(zhuǎn)到讀寫磁頭的下方,這段時(shí)間稱為旋轉(zhuǎn)延遲時(shí)間(rotational latencytime)。然后再讀寫數(shù)據(jù),讀寫數(shù)據(jù)也需要時(shí)間,這段時(shí)間稱為傳輸時(shí)間(transfer time)。

根據(jù)上文的信息,我們可以得出磁盤容量的計(jì)算公式為:

硬盤容量 = 盤面數(shù) × 柱面數(shù) × 扇區(qū)數(shù) × 512字節(jié)

筆試題實(shí)戰(zhàn)

下面的題目是騰訊某一年校招筆試中的一個(gè)題目,題干信息描述為:數(shù)據(jù)存儲(chǔ)在磁盤上的排列方式會(huì)影響I/O服務(wù)的性能,一個(gè)圓環(huán)磁道上有10個(gè)物理塊,10個(gè)數(shù)據(jù)記錄R1~R10存放在這個(gè)磁道上,記錄的安排順序如下表所示。

物理塊12345678910

假設(shè)磁盤的旋轉(zhuǎn)速度為20ms,磁盤當(dāng)前處在R1的開頭處,若系統(tǒng)順序掃描后將數(shù)據(jù)放入單緩沖區(qū)內(nèi),處理數(shù)據(jù)的時(shí)間為4ms(然后再讀取下個(gè)記錄),則處理這10個(gè)記錄的最長時(shí)間是多少?

答案:磁盤會(huì)一直朝某個(gè)方向旋轉(zhuǎn),不會(huì)因?yàn)樘幚頂?shù)據(jù)而停止。本題要求順序處理 R1 到 R10,起始位置在 R1,一周是 20ms,共 10 個(gè)記錄,所以每個(gè)記錄的讀取時(shí)間為 2ms。首先讀 R1 并處理 R1,讀 R1 花 2ms,讀好后磁盤處于 R1 的末尾或 R2 的開頭,此時(shí)處理 R1,需要 4ms,因?yàn)榇疟P一直旋轉(zhuǎn),所以 R1 處理好了后磁盤已經(jīng)轉(zhuǎn)到 R4 的開始了,這時(shí)花的時(shí)間為 2+4=6ms。這時(shí)候要處理 R2,需要等待磁盤從 R5 一直轉(zhuǎn)到 R2 的開始才行,磁盤轉(zhuǎn)動(dòng)不可反向,所以要經(jīng)過 8*2ms 才能轉(zhuǎn)到 R1 的末尾,讀取 R2 需要 2ms,再處理 R2 需要 4ms,處理結(jié)束后磁盤已經(jīng)轉(zhuǎn)到 R5 的開頭了,這時(shí)花的時(shí)間為 2*8+2+4=22ms。等待磁盤再轉(zhuǎn)到 R3 又要 8*2ms,加上 R3 自身 2ms 的讀取時(shí)間和 4ms 的處理時(shí)間,花的時(shí)間也為 22ms,此時(shí)磁盤已經(jīng)轉(zhuǎn)到 R6 的開頭了,寫到這里,就可以看到規(guī)律了,讀取并處理后序記錄都為 22ms,所以總時(shí)間為 6+22*9=204ms。

如何加速對(duì)磁盤的訪問

對(duì)于理解數(shù)據(jù)庫系統(tǒng)系統(tǒng)特別重要的是磁盤被劃分為磁盤塊(或像操作系統(tǒng)一樣稱之為頁),每個(gè)塊的大小是 4~64KB。磁盤訪問一個(gè)磁盤塊平均要用 10ms,但是這并不表示某一應(yīng)用程序?qū)?shù)據(jù)請(qǐng)求發(fā)送到磁盤控制器后,需要等 10ms 才能得到數(shù)據(jù)。如果只有一個(gè)磁盤,在最壞的情況下,磁盤訪問請(qǐng)求的到達(dá)個(gè)數(shù)超過 10ms 一次,那么這些請(qǐng)求就會(huì)被無限的阻塞,調(diào)度延遲將會(huì)變的非常大。因此,我們有必要做一些事情來減少磁盤的平均訪問時(shí)間。

按柱面組織數(shù)據(jù):前這一點(diǎn)在前文已經(jīng)提到過了。因?yàn)閷さ罆r(shí)間占平均塊訪問時(shí)間的一半,如果我們選擇在一個(gè)柱面上連續(xù)的讀取所有塊,那么我們只需要考慮一次尋道時(shí)間,而忽略其它時(shí)間。這樣,從磁盤上讀寫數(shù)據(jù)的速度就接近于理論上的傳輸速率。

使用多個(gè)磁盤:如果我們使用多個(gè)磁盤來替代一個(gè)磁盤,只要磁盤控制器、總線和內(nèi)存能以 n 倍速率處理數(shù)據(jù)傳輸,則使用 n 個(gè)磁盤的效果近似于 1 個(gè)磁盤執(zhí)行了 n 次操作。因此使用多個(gè)磁盤可以提高系統(tǒng)的性能。

磁盤調(diào)度:提高磁盤系統(tǒng)吞吐率的另一個(gè)有效方法是讓磁盤控制器在若干個(gè)請(qǐng)求中選擇一個(gè)來首先執(zhí)行,調(diào)度大量塊請(qǐng)求的一個(gè)簡單而有效的方法就是電梯算法?;貞浺幌码娞莸倪\(yùn)行方式,它并不是嚴(yán)格按先來后到的順序?yàn)槌丝头?wù),而是從建筑物的底層到頂層,然后再返回來。同樣,我們把磁盤看作是在做橫跨磁盤的掃描,從柱面最內(nèi)圈到最外圈,然后再返回來,正如電梯做垂直運(yùn)動(dòng)一樣。

預(yù)取數(shù)據(jù):在一些應(yīng)用中,我們是可以預(yù)測(cè)從磁盤請(qǐng)求塊的順序的。因此我們就可以在需要這些塊之前就將它們裝入主存。這樣做的好處是我們能較好的調(diào)度磁盤,比如采用前文的電梯算法來減少訪問塊所需要的平均時(shí)間。

磁盤故障

如果事情都像我們一開始設(shè)計(jì)的那樣進(jìn)行,那世界肯定會(huì)變得特別無聊。磁盤偶爾也會(huì)耍耍小脾氣,甚至是罷工不干了。比如在讀寫某個(gè)扇區(qū)一次嘗試沒有成功,但是反復(fù)嘗試后有成功讀寫了,我們稱之為間歇性故障。

一種更為嚴(yán)重的故障形式是,一個(gè)或多個(gè)二進(jìn)制位永久的損壞了,所以不管我們嘗試多少次都不可能成功,這種故障稱之為介質(zhì)損壞。

另一種相關(guān)的錯(cuò)誤類型稱之為寫故障,當(dāng)我們企圖寫一個(gè)扇區(qū)時(shí),既不能正確的寫,也不能檢索先前寫入的扇區(qū),發(fā)生這種情況的一種可能原因就是在寫過程中斷電了。

當(dāng)然肯定最嚴(yán)重的就是磁盤崩潰,這種故障中,整個(gè)磁盤都變?yōu)橛谰貌豢勺x,這是多么可怕的事情。

既然會(huì)出現(xiàn)上面所述的各種大小故障,那么我們就必須要采取各種措施去應(yīng)對(duì)大大小小的變故,保證系統(tǒng)能正常運(yùn)行。

規(guī)避故障

我們嘗試讀一個(gè)磁盤塊,但是該磁盤塊的正確內(nèi)容沒有被傳送到磁盤控制器中,就是一個(gè)間歇性故障發(fā)生了。那么問題是控制器如何能判斷傳入的內(nèi)容是否正確呢?答案就是使用校驗(yàn)和,即在每個(gè)扇區(qū)使用若干個(gè)附加位。在讀出時(shí)如果我們發(fā)現(xiàn)校驗(yàn)和對(duì)數(shù)據(jù)位不合適,那么我們就知道有錯(cuò)誤;如果校驗(yàn)和正確,磁盤讀取仍然有很小的可能是不正確的,但是我們可以通過增加趣多校驗(yàn)位來降低讀取不正確發(fā)生的概率。

此處我們使用奇偶校驗(yàn)來舉例,通過設(shè)置一個(gè)校驗(yàn)位使得二進(jìn)制集合中 1 的個(gè)數(shù)總是偶數(shù)。比如某個(gè)扇區(qū)的二進(jìn)制位序列是 01101000,那么就有奇數(shù)個(gè) 1,所以奇偶位是 1,這個(gè)序列加上它后面的奇偶位,就有 011010001;而如果所給的序列是 11101110,那么奇偶位就是 0。所以每一個(gè)加上了奇偶位構(gòu)成的 9 位序列都有偶數(shù)奇偶性。

盡管校驗(yàn)和幾乎能正確檢測(cè)出介質(zhì)故障或讀寫故障的存在,但是它卻不能幫助我們糾正錯(cuò)誤。為了處理這個(gè)問題,我們可以在一個(gè)或多個(gè)磁盤中執(zhí)行一個(gè)被稱為穩(wěn)定存儲(chǔ)的策略。通常的思想是,扇區(qū)時(shí)成對(duì)的,每一對(duì)代表一個(gè)扇區(qū)內(nèi)容 X。我們把代表 X 的扇區(qū)對(duì)分別稱為左拷貝 XL和右拷貝XR。這樣實(shí)際上就是每個(gè)扇區(qū)的內(nèi)容都存儲(chǔ)了兩份,操作XL失敗,那么去操作XR就可以了,更何況我們還在每個(gè)扇區(qū)中有校驗(yàn)和,把錯(cuò)誤的概率就大大降低了。

到現(xiàn)在為止,我們討論的都是簡單的故障,但是如果發(fā)生了磁盤崩潰,其中的數(shù)據(jù)被永久破壞。而且數(shù)據(jù)沒有備份到另一種介質(zhì)中,對(duì)于銀行金融系統(tǒng)這將是巨大的災(zāi)難,遇到這種情況我們應(yīng)該怎么辦呢?

數(shù)據(jù)恢復(fù)

應(yīng)對(duì)磁盤故障最簡單的方式就是鏡像磁盤,即我們常說的備份?;貞浺幌聦懏厴I(yè)論文時(shí)的做法,那時(shí)候大部分同學(xué)還不會(huì)用版本控制器,所以基本采用每天備份一次數(shù)據(jù),并且在文件名稱中標(biāo)注日期,以此來達(dá)到備份的效果。

第二種方式是使用奇偶?jí)K,比如一個(gè)系統(tǒng)中有 3 個(gè)磁盤,那么我們?cè)偌右粋€(gè)磁盤作為冗余盤。在冗余盤中,第 i 塊由所有數(shù)據(jù)盤的第 i 塊奇偶校驗(yàn)位組成。也就是說,所有第 I 塊的第 j 位,包括數(shù)據(jù)盤和冗余盤,在它們中間必須有偶數(shù)個(gè) 1,冗余盤的作用就是讓這個(gè)條件為真。

我們舉個(gè)簡單例子,假設(shè)快僅由一個(gè)字節(jié)組成,我們有三個(gè)數(shù)據(jù)盤和一個(gè)冗余盤,對(duì)應(yīng)的位序列如下。其中 盤4 為冗余盤,它的位序列是根據(jù)前面三個(gè)盤計(jì)算出來的。

盤 1:11110000 盤 2:10101010 盤 3:00111000 盤 4:01100010

假設(shè)現(xiàn)在某個(gè)盤崩潰了,那么我們就能根據(jù)上面的序列來恢復(fù)數(shù)據(jù),只需要讓每一列 1 的個(gè)數(shù)為偶數(shù)就可以了,但是這種冗余方式也存在很大的不足。

第一個(gè)缺陷是,如果是兩個(gè)盤同時(shí)崩潰了,那數(shù)據(jù)也恢復(fù)不出來了。第二個(gè)問題在于,雖然讀數(shù)據(jù)只需要一次 I/O 操作即可,但是寫數(shù)據(jù)時(shí)就不一樣了,因?yàn)樾枰鶕?jù)其他數(shù)據(jù)盤來計(jì)算冗余盤中的位序列,假設(shè)共有 n 個(gè)盤,其中一個(gè)為冗余盤,所以每次寫數(shù)據(jù)時(shí),都需要進(jìn)行 n+1 次 I/O 操作(讀不被寫入的 n-1 個(gè)盤,被重寫數(shù)據(jù)盤的一次寫,冗余盤的一次寫),而 I/O操作又是非常耗時(shí)的操作,所以這種方法會(huì)大大拖慢系統(tǒng)性能。

另一種方案是沒有明顯的冗余盤,而是把每個(gè)磁盤作為某些塊的冗余盤來處理。比如現(xiàn)在有 4 個(gè)盤,0 號(hào)磁盤將作為編號(hào)為 4、8、12 等柱面的冗余,而 1 號(hào)磁盤作為編號(hào)為 1、5、9 等塊的冗余…

一種更為先進(jìn)的方式使用海明碼來幫助從故障中恢復(fù)數(shù)據(jù),它在多個(gè)磁盤崩潰的情況下也能恢復(fù)出數(shù)據(jù),也是 RAID 的最高等級(jí),由于本人水平有限,用文字表達(dá)不清楚,就不作介紹了,嘿嘿。

總結(jié)

以上是生活随笔為你收集整理的磁盘位置_CPT201-磁盘的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。