1. 程式人生 > >作業系統核心原理-6.外存管理(上)磁碟基礎

作業系統核心原理-6.外存管理(上)磁碟基礎

  計算機是處理資料的機器,而資料就需要有地方存放。在計算機中,可供資料存放的地方並不太多,除了記憶體之外,最主要的儲存資料的媒介就是磁碟。對於大多數計算機領域的人來說,磁碟通常被看做是一種外部裝置。可是,對於現代作業系統來說,磁碟是不可或缺的。雖然早期的作業系統可以基於磁帶,但由於作業系統複雜性和效能的不斷提升,用磁帶作為作業系統的載體已經不合時宜,取而代之的是磁碟。由於作業系統需要存放在磁碟上,且作業系統內的檔案系統也是基於磁碟,所以,從某種程度來說,磁碟是作業系統不可分割的一部分,理解磁碟將對理解作業系統的原理具有重要的意義。

一、磁碟的結構

1.1 什麼是磁碟?

  通俗地講,磁碟就是以形狀像盤子一樣的磁性儲存介質

  (1)特性是持久,正常情況下資料存放在上面不會消失;

  (2)顯著特徵是磁性圓形,因此被稱為磁碟;

  (3)價格低廉,因此可以大量使用;

1.2 磁碟的結構

  一塊磁碟實際上並不是只有一塊碟片,而是由多塊碟片組成,每塊碟片的正反兩面皆可以存放資料。下圖給出的是一個將磁碟外殼切開一塊所看到的結構圖:

  (1)每個盤面上都有一個讀寫磁頭,而所有讀寫磁頭都連在一根共享的磁臂上。

  (2)當磁臂運動時,所有的磁頭均作相同的運動,碟片則以常速不停地旋轉。

PS:碟片的旋轉速度通常為每分鐘3500~10000轉,即大約每6ms~17ms旋轉一圈。目前3500轉的磁碟已經看不到,對於筆記本來說,最低的都是5400轉了,一般都是7200轉,10000轉+已經是機械磁碟的極限。 

1.3 盤面的結構

  為了方便儲存資料,人們將每塊盤面又分為磁軌扇面,如下圖所示:

  (1)磁軌是一個個的同心環;

  (2)每個磁軌又被分為若干個扇面(也稱為扇區),資料是以扇面進行儲存的,扇面也是磁碟I/O的最小單位;

  (3)扇面的內容通常分為3個部分:標題、資料部分和ECC糾錯資訊,如下表所示:

二、磁碟驅動器的訪問速度

  磁碟在讀寫資料時的訪問速度稱為磁碟的動態屬性,這是衡量一個磁碟效能的重要資料。資料訪問時間或速度的計算並不簡單,而這種計算不僅依賴於磁碟的旋轉速度,還依賴於在訪問開始時讀寫磁頭所處的位置。資料訪問時間也有幾種衡量辦法:

2.1 尋道時間

  尋道時間(Seek Time)是指將讀寫磁頭移動到所要求的磁軌位置所需要的平均時間。尋道時間通常在8ms~20ms以內,在近年來變化不大。

2.2 磁軌到磁軌的訪問時間

  磁軌到磁軌的訪問時間(Track-to-Track Time)衡量的是磁頭從一個磁軌移動到一個相鄰磁軌所需要的時間。這個時間通常在2ms~3ms以內,它也被稱為柱面切換時間或磁軌切換時間。

2.3 旋轉延遲時間

  旋轉延遲時間指的是磁頭到達所要求的磁軌位置後,等待所要求的扇面旋轉到磁頭下方的平均時間。當前磁碟驅動器的旋轉速度所處的範圍為每分鐘3500~10000轉,因此旋轉延遲的範圍在3ms~8.57ms內。

→ 平均訪問時間 = 尋道時間 + 旋轉延遲時間

三、磁碟排程演算法

3.0 磁碟讀寫時間的影響因素

  (1)尋道時間

  (2)旋轉延遲時間

  (3)資料傳輸時間

  在以上3者中,前兩者為機械運動,資料傳輸主要為電子運動,機械運動的速度遠低於電子運動的速度。在兩個機械運動中,尋道時間又相對較長,因此,尋道時間居於支配地位。所以,為了提高磁碟的讀寫效率,需要降低磁碟的尋道時間,實現的手段則是磁碟排程。下面我們陸續來了解一下主要的磁碟排程演算法。

3.1 先來先服務演算法

  先來先服務是一種自然公平的排程策略,先來後到,誰也木有神馬特權!

  例如下圖中的一組磁碟請求,其中X表示需要讀寫的扇面,下面的數字為磁軌號(這裡不考慮旋轉延遲,資料所在的扇面號在此忽略)。假定磁頭的初始位置為10號位,而磁碟請求發生的順序為0、23、6、16、2、21、8、9、12。則在先來先服務排程下,總尋道的道數為:

  先來先服務追求自然公平,當然效率也十分低下,因此很少採納。

3.2 短任務優先演算法

  短任務優先就是誰的磁碟讀寫資料量最少,誰就優先。由於磁碟的訪問時間主要取決於尋道和旋轉延遲,因此讀寫的資料量對於整個磁碟讀寫時間的影響並不大,因此這種策略意義不大。

3.3 短尋道優先演算法

  短尋道優先則考慮當前磁頭離誰的資料最近,誰就優先。由於尋道在磁碟訪問時間中佔的比重最大,因此此種策略能夠縮短磁碟訪問時間。

  例如繼續使用上面FCFS的例子,使用短尋道優先演算法的訪問磁軌號順序為:9、8、6、2、0、12、16、21、23,總尋道數為1+1+2+4+2+12+4+5+2=33,可以看到比FCFS的109個少了好幾倍。

  但是,這種縮短並不是絕對的,如果當前的磁碟讀寫操作如下圖所示,則磁碟讀寫請求的執行呈現的就是一種左右擺動的模式,這種情況下總尋道數=1+3+7+15+31=57。

  從上圖也可以看出,尋道執行呈現出一種左右擺動的情況,如果左右擺動的幅度越來越大,系統花費在尋道上的時間將會迅速增加。而改進的辦法就是不要左右擺動,而令其單向運動,這就是下面將要提到的電梯排程策略。

3.4 電梯排程演算法

  電梯排程的核心思想是:先滿足一個方向的所有請求,再滿足所有反方向的請求,如此迴圈往復

  這裡再次使用FCFS的例子來看,使用電梯排程時,磁頭往每個方向運動時皆會掃描到頭,如下圖所示:

  這裡的總尋道數為:1+4+16+1+24+8=54,比短尋道優先節省了3個磁軌的尋道時間。

  但是,電梯排程策略執行時,如果一個方向已經沒有需求了,它還是會掃描到末端才會掉頭,無法提前排程,也就影響了效率。因此,實現提前排程的電梯排程就是下面要介紹的提前檢視電梯排程演算法。

3.5 提前檢視電梯排程演算法

  提前檢視電梯排程演算法的核心思想是:如果一個方向的請求全部滿足後,立即反轉執行,而無需掃描到底。每次往某個方向移動時必須確保該方向還有請求未滿足,否則就立刻調轉方向,這樣也就提高了效率。

  還是使用FCFS的例子來看,使用提前檢視電梯排程演算法的總尋道數為:1+4+16+23+8=52,比普通的電梯排程演算法節省了2個磁軌的尋道時間,如下圖所示:

  這種正反兩個方向的交替運動並不一定最優,另一種改進辦法則是單向電梯排程:即只向一個方向掃描。當該方向沒有剩餘請求時,則回到0道,再進行同樣的掃描。同樣,在FCFS的例子中,如果使用單向電梯排程策略,那麼執行結果會如下所示,其總尋道數為:1+4+16+8=29,比提前檢視電梯排程節省了23個磁軌的尋道時間。

四、關於固態盤

  前面的介紹我們可以知道:磁碟低下的瓶頸在於尋道和旋轉延遲,而尋道和旋轉操作之所以效率低下的原因又在於它們都是機械運動(磁臂的直線來回運動和磁碟的旋轉運動)。目前,磁臂移動速度和磁碟旋轉速度已達或接近極限,再行提高會導致定位精度的降低。因此,提高磁碟的執行效率只能將機械運動從磁碟的結構中去除。

  回想一下我們之前提到的記憶體,不就是沒有機械運動的儲存介質嘛?於是,使用與記憶體介質相同或相仿的儲存介質構建的磁碟就是所謂的固態盤(Solid State Disk,SSD)橫空出世了。

  固態的原始意義是半導體驅動器,但在今天的儲存工業界已經演化為表示沒有機械運動部件的驅動器由於沒有移動的部件,整個驅動器似乎是固定的,因而也就被稱為固態盤

  由於木有移動的機械部件,固態盤具有一些機械盤所不具備的優點:

  (1)可靠性高,沒有噪音(沒有風扇);

  (2)訪問速度快,接近記憶體的訪問速度;

  (3)熱耗低於機械盤,且更省電;

  (4)不需要旋轉,其啟動時間更短;

  但是,固態盤最大的問題是成本,其單位容量成本大約為機械盤的10~20倍,這對於大容量的固態盤來說,這個成本十分可觀。對於小容量的固態盤來說,我們已經能夠承受。

參考資料

鄒恆明,《作業系統之哲學原理》,機械工業出版社

作者:周旭龍

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連結。

相關推薦

作業系統核心原理-6.外存管理磁碟基礎

  計算機是處理資料的機器,而資料就需要有地方存放。在計算機中,可供資料存放的地方並不太多,除了記憶體之外,最主要的儲存資料的媒介就是磁碟。對於大多數計算機領域的人來說,磁碟通常被看做是一種外部裝置。可是,對於現代作業系統來說,磁碟是不可或缺的。雖然早期的作業系統可以基於磁帶,但由於作業系統複雜性和效能的不斷

作業系統核心原理-6.外存管理檔案系統

一、為何需要檔案系統?   磁碟具有大容量、低成本以及持久化的特點,即使發生斷電,磁碟上的資料也不會丟失。但是,對於一般使用者而言,使用磁碟是非常苦難的,因為他們不知道如何驅動一個磁碟,以及計算資料在磁碟上的存放位置。從上一篇《磁碟基礎》可以知道,瞭解磁碟的各項技術細節將使使用者不堪重負。   作業系統是

作業系統核心原理-5.記憶體管理:基本記憶體管理

  作業系統的兩個角色分別是魔術師和管理者,在管理者這個角色中,除了CPU之外,記憶體是作業系統要管理的另外一個重要資源。記憶體管理需要達到兩個目標:一是地址保護,即一個程式不能訪問另一個程式的地址空間。二是地址獨立,即程式發出的地址應該與物理主存地址無關。這兩個目標就是衡量一個記憶體管理系統是否完善的標準,

作業系統核心原理-5.記憶體管理:段式記憶體管理

一、分頁系統的缺點   分頁系統存在的一個無法容忍,同時也是分頁系統無法解決的一個缺點就是:一個程序只能佔有一個虛擬地址空間。在此種限制下,一個程式的大小至多隻能和虛擬空間一樣大,其所有內容都必須從這個共同的虛擬空間內分配。 二、分段管理系統 2.1 何為分段管理   分段管理就是將一個程式按照邏輯單

作業系統核心原理-5.記憶體管理:分頁記憶體管理

  在上一篇介紹的幾種多道程式設計的記憶體管理模式中,以交換記憶體管理最為靈活和先進。但是這種策略也存在很多重大問題,而其中最重要的兩個問題就是空間浪費和程式大小受限。那麼有什麼辦法可以解決交換記憶體存在的這些問題呢?答案是分頁,它是我們解決交換缺陷的“不二法門”。 一、分頁記憶體管理 1.1 解決問題之

ORCAD16.6原理圖DRC檢查

Cadence Orcad DRC 檢查 在做原理圖的時候,差點犯了個致命問題,本該是同一網絡的net,結果兩邊的net名字不一致,幸好被老大發現了,要不然就報廢了。 於是乎就去折騰下 DRC 檢查的功能,以前也沒用過。 好了打開 DRC 檢查的菜單步驟: 1、打開 ORCAD 軟件,先選中整

深入理解作業系統原理之程序管理

一、概述 1、為什麼引入程序 程式併發執行時具有如下特徵: 間斷性 程式在併發執行時,由於它們共享資源或為完成同一項任務而相互合作,使在併發程式之間形成了相互制約的關係。相互制約將導致併發程式具有“執行-暫停-執行”這種間斷性活動規律。 失去封閉性

作業系統核心原理-7.裝置管理:I/O原理

一、I/O的基本知識 1.1 為何要有I/O   前面闡述了作業系統具有程序管理、記憶體管理、外存管理三大核心功能,但是計算機歸根是為人類服務的,這就要求計算機必須提供某種機制使得人們可以向計算機發出命令或操縱計算機。也就是說計算機與人之間必須存在某種溝通的機制,這種溝通的機制就是計算機的輸入輸出機制。輸

Linux入門進階第二天——軟件安裝管理

軟件包 軟件安裝 alt dpkg 代碼包 mage 進階 部分 images 一、大綱介紹    二、簡介   軟件包分類:   源碼包:        二進制包:(源碼包編譯後的包,將不能再看到源代碼)   MySQL PhP等開發環境的搭

Linux 磁盤管理

Linux 磁盤管理(上)磁盤的命名規則是每一塊以abcdefg...以此類推,分區號1,2,3... 1、添加幾塊磁盤 2、查看一下添加成功了沒? 3、開始分區:用fdisk命令工具搞定 4、詳細步驟... 5、好了分完了,查看一下分成功了沒有? 附):也可以刪除分區 6、擴展分區Linux 磁盤管理(上)

【一步一步學習spring】spring bean管理

proto id屬性 table handle isp 基礎上 turn 聲明 設置方法 1. spring 工廠類 我們前邊的demo中用到的spring 工廠類是ClassPathXmlApplicationContext,從上圖可以看到他還有一個兄弟類FileSys

十二、Linux虛擬機器管理

本節重點介紹虛擬機器的安裝步驟及配置方法,我們預設你的物理機支援虛擬化,直接進入下面的安裝步驟: - 圖形化介面安裝方法 下面步驟列出虛擬機器安裝過程中比較重要的幾個步驟 [[email protected] ~ ] # virt-manager

Chapter 6 連結串列:如何實現LRU快取淘汰演算法?

快取淘汰策略:   一、什麼是連結串列? 1.和陣列一樣,連結串列也是一種線性表。 2.從記憶體結構來看,連結串列的記憶體結構是不連續的記憶體空間,是將一組零散的記憶體塊串聯起來,從而進行資料儲存的資料結構。 3.連結串列中的每一個記憶體塊被稱為節點Node。節點除了儲存資料外,還需記錄鏈

Chapter 6 鏈表:如何實現LRU緩存淘汰算法?

查詢 申請 簡單 刪除數據 地址 nod 常用 next 相同 緩存淘汰策略: 一、什麽是鏈表? 1.和數組一樣,鏈表也是一種線性表。 2.從內存結構來看,鏈表的內存結構是不連續的內存空間,是將一組零散的內存塊串聯起來,從而進行數據存儲的數據結構。 3.鏈表中的每一個內

Activiti 6.x【6】StartEvent

StartEvent元件 StartEvent總述 StartEvent分為五種,第一種為普通StartEvent,第二種為帶定時器的SatrtEvent,第三種為接收訊息的StartEvent,第四種為帶錯誤資訊的StartEvent這種

8.spring:事務管理:Spring的資料庫程式設計、程式設計式事務管理

Spring的資料庫程式設計  Spring框架提供了JDBC模板模式------>JdbcTemplate 簡化了開發,在開發中並不經常是使用 實際開發更多使用的是Hibernate和MyBatis 1).Spring JDBCp配置 如果使用Spring JDBC操作資料庫,要有

作業系統之程序—臨界區管理

1.臨界區管理  臨界區:併發程序中與共享變數有關的程式段  臨界資源:共享變數代表的資源 2.臨界區解決互斥問題 如果能保證程序在臨界區執行時,不讓另一個程序進入臨界區,即各程序對共享變數的訪問是互斥的,就不會造成與時間有關的錯誤 3.臨界區的排程原則 一次至

文字版本第三代研發管理之1-情景化知識管理

      上個世紀80年代,“知識管理”這個術語正式地編入了詞典中。知識將取代土地、勞動、資本與機器裝置,成為最重要的生產因素;30年過去了,針對科研創新管理的知識管理,實際運作中還存在非常多的問題,知識缺少積累,知識難以重用,同樣問題在不同專案中重複出現,如何才能有效化

Android 仿今日頭條頻道管理GridView之間Item的移動和拖拽

前言 經常逛今日頭條、發現它的頻道管理功能做的特別贊,互動體驗非常好、如圖: 它是2個gridview組成、2個gridview之間的Item是可以相互更換的、而且我的頻道的Item是可以拖拽進行排序。仔細觀察、今日頭條有些細節做的的非常好,當一個gridview1的item移

《逆向工程核心原理》學習總結

介紹 PE檔案是windows作業系統的可執行檔案格式(包括.exe、.scr、.dll、.sys、.obj等檔案),PE檔案指32位的可執行檔案,也稱為PE32。64位可執行檔案稱為PE+或PE32+,是PE32檔案的一種擴充套件形式。 基本結構 P