讀書筆記 之五

2021-09-06 07:34:48 字數 3547 閱讀 1332

筆者的話:

接觸硬體較少, 很多術語都是字面翻譯, 讀者請見諒. 我盡量帶上英文原詞, 避免歧義.

2.2 磁碟驅動器元件

磁碟驅動器使用快速移動的臂來在大唱片一樣的覆蓋著小磁粒的碟片上讀寫資料的. 資料從磁碟片上通過r/w頭傳輸到計算機中. 多個碟片,讀寫頭和控制器被組合在一起, 通常這被稱為是硬碟驅動器(hard disk drive - hdd). 資料可以在磁碟上任意讀寫多次. 這個部分介紹磁碟不同元件的細節, 在磁碟上組織儲存資料的機制, 以及影響磁碟效能的因素.

磁碟驅動器的關鍵元件包括: 碟片, 紡錘體(轉軸), 讀寫頭, 促動器裝配, 和控制器.

典型的hdd由乙個或多個平的圓的叫做platter的盤組成的(見圖2-3). 資料用二進位制的方式記錄在這些碟片上. 一疊旋轉的碟片被密封在乙個盒子中, 叫做head disk assembly(hda). 一片platter(碟片)是一片剛硬的圓盤, 上下表面都覆蓋著磁材料. 資料通過分化盤表面的磁區域(area或domain)而編碼. 盤的兩面都是即可讀又可寫. 盤的數量和每張盤的容量決定了整個磁碟驅動器的容量.

spindle(轉軸)連線著所有的碟片, 見圖2-3, 並且連線到乙個馬達上轉軸的馬達以乙個固定的速度旋轉. 碟片旋轉的速度是每分鐘幾千轉(rpm). 磁碟驅動器軸的轉速有7200rpm, 1,000rpm, 或者15,000rpm. 當前的儲存系統使用的磁碟的碟片直徑為3.5英吋(90公釐). 當碟片轉速為15,000rpm是, 其外邊緣的移動速度是音速的四分之一. 碟片的速度隨著技術在不斷增長, 儘管可供提高的空間已經不多了.

2.2.3 read/write head

讀/寫頭(見圖2-4)能從碟片上讀取資料. 每張碟片上都有兩個讀寫頭, 上下面各乙個. 在寫入資料的時候, 讀寫頭會修改碟片表面的磁極性. 讀資料的時候, 頭會檢測到碟片表面的磁極性, 從而讀取資料. 在讀和寫的時候r/w頭會感應磁極, 卻不會觸碰盤的表面. 當轉軸旋轉的時候, 碟片與讀寫頭之間有顯微鏡才能看見的小縫隙, 被稱為頭的飛行高度(head flying height). 這小縫隙在轉軸停止旋轉的時候會被移掉, 讀寫頭會在碟片靠近轉軸部分的乙個特殊區域上停下來. 這塊特殊區域叫做停靠區(landing zone). 停靠區被潤滑劑覆蓋, 用於減少盤和讀寫頭之間的摩擦. 磁碟的邏輯會確保讀寫頭停下來靠近碟片之前一定會落在停靠區. 如果磁碟驅動器出了問題, 讀寫頭意外地碰到了停靠區之外的碟片部分, 那麼撞頭(head crash)就發生了. 在撞頭時, 碟片上覆蓋的磁物質就會被蹭掉, 可能會對讀寫頭的傷害. 撞頭通常會導致資料丟失.

讀寫頭是載入在actuator arm assembly(驅動臂裝配)上的, 該驅動臂裝備會把讀寫頭定位到盤面上需要讀寫資料的地方. 所有碟片的讀寫頭都附著在乙個驅動臂裝備上, 並同時地在碟片上移動. 注意沒個碟片有兩個讀寫頭, 每面乙個, 見圖2-4.

2.2.5 controller

---------------------

控制器是乙個印好的電路板, 載入在磁碟驅動器的底部. 它由乙個小處理器, 記憶體, 電路和韌體組成. 韌體控制給轉軸馬達的電源和馬達的速度. 另外它還通過控制驅動臂和切換不同的讀寫頭來控制讀寫操作, 並對資料訪問提供優化.

2.2.6 physical disk structure

---------------------

磁碟上的資料是記錄在磁軌上的, 磁軌就是碟片上圍繞轉軸的同心圓, 見圖2-5. 磁軌有被編號, 從碟片的外邊緣開始依次為0, 1, 2... 碟片上沒英呎的磁軌數決定著碟片上的磁軌排列的有多緊密.

每個磁軌都被分為更小的叫做sector(扇區)的單元. 扇區是儲存單元中可以定址的最小單位了. 磁軌和扇區的結構通過製造商格式化的操作來完成. 每個磁軌上扇區的數目依據不同磁碟又不同. 第一台個人電腦的磁碟每圈有17個扇區. 現在的磁碟每圈上可以有大得多的數目的扇區了. 每張盤上有上千條磁軌, 取決於物理維度上的磁碟密度的不同.

典型地, 乙個扇區儲存512位元組的使用者資料, 儘管有些磁碟可以被格式化為更大的扇區尺寸. 除使用者資料外, 扇區還儲存著其他的資訊, 比如說扇區編號, 頭編號, 盤編號, 磁軌編號等. 這些資訊幫助控制器在磁碟中定位資料, 但是這些資訊對磁碟空間來說也是種消耗. 其結果, 就是格式化後的磁碟比未格式化的磁碟的可用容量要小. 驅動器製造商一般會宣傳未format時的容量, 比如說, 廣告500g的硬碟, 只能裝465.7g的使用者資料, 剩下的34.3g就用來裝元資料了.

cylinder(圓筒)是每個驅動器碟片兩面完全一樣的磁軌的集合. 驅動器頭的位置值得就是圓筒的號碼, 而不是磁軌的號碼.

2.2.7 zoned bit recording

由於碟片是有同圓心的磁軌組成的, 外圈的磁軌可以比內圈的磁軌儲存更多的資訊, 有餘外圈磁軌物理上比內圈更長, 見圖2-6(a). 在老一點的磁碟驅動器上, 外圈的磁軌跟內圈的磁軌有同樣的號碼, 所以資料密度在外圈是很低的. 這對可用空間的利用是低效率的. zone bit recording可以高效一點的使用磁碟. 見圖2-6(b), 這種機制把磁軌基於距離磁碟中心的距離分組為zone. 這些zone被編號, 最外面的zone是zone 0. 每圈內恰當數目的扇區被分配給每個zone, 所以距離圓心近的zone有較少數目的sector, 外圈的就會較多. 然而, 某個zone內的磁軌擁有的扇區的數量是相同的.

較早的驅動器使用由cylinder,head, 和sector(chs)組成的實體地址定址磁碟上的某處, 見圖2-7(a), 寄宿的作業系統不得不了解每個磁碟的幾何性質. 邏輯塊定址(lba)(如圖2-7-b) 通過使用線性位址來訪問物理資料塊從而簡化了對資料的訪問. 磁碟控制器會把lba翻譯成chs位址, 宿主僅需要知道磁碟驅動器的塊數的多少, 從而得知其尺寸. 邏輯塊與物理扇區是按照1:1的比率對應的.

圖2-7 b中, 磁碟每圈展現了8個扇區, 8個頭,  4個筒. 這意味著8x8x4=256個塊, 所以塊號的範圍是從0到255. 每一塊都有自己的位址. 假設扇區保有512個位元組, 那麼500g格式化後容量為465.7g的磁碟會有超過976,000,000 個block的.

摘譯自<>

讀書筆記五

盡量少做轉型動作 避免返回handles指向物件內部成分 避免返回handles 包括reference,指標,迭代器 指向物件內部。可以增加封裝性,幫助const成員函式的行為像個const,並發生虛掉號碼牌的可能性降至最低。為異常安全努力是值得的 一般而言,只能夠做到第一條和第二條。乙個好的操作...

數學之美讀書筆記(五)

chapter.21拼音輸入法的數學原理 雙拼失敗的原因 1.增加編碼的歧義性,使得候選項變多 2.比全拼的思考速度慢 3.容錯性差,難以區分捲舌音和鼻音 五筆的沒落 1.需要背字根,上手時間較多 2.脫稿打字時,思維速度慢 拼音的優勢 1.不用學,誰都會 2.輸入自然,思維連貫 3.編碼有冗餘,容...

fluent Python 讀書筆記(五)

今天寫對於 這本書第三章的回顧 1.可雜湊的資料型別 原子不可變資料型別 數值,str 都是可雜湊的 元組只有它所有元素是可雜湊的它才是雜湊的 什麼叫可雜湊的資料型別?1.要能實現hash方法,且每次hash出來的值是一樣的 2.要能實現eq方法,a b為true 時雜湊值也想等 2.建立字典有很多...