1. 程式人生 > >作業系統之I/O裝置

作業系統之I/O裝置

I/O系統

 

裝置管理

 


1. I/O系統的基本功能及模型


1)主要功能:


隱藏物理裝置細節,方便使用者
使用者使用抽象的I/O命令即可
實現裝置無關性,方便使用者
使用者可用抽象的邏輯裝置名來使用裝置,同時也提高了OS的可移植性和易適應性。
提高處理機和裝置的並行性,提高利用率:緩衝區管理
對I/O裝置進行控制:控制方式、裝置分配、裝置處理
確保對裝置正確共享:虛擬裝置及裝置獨立性等
錯誤處理


2)I/O/系統的層次結構和模型


層次結構:系統中的裝置管理模組分為若干個層次
層間操作:下層為上層提供服務,完成輸入輸出功能中的某些子功能,並遮蔽功能實現的細節。
①使用者層軟體
實現與使用者互動的介面,使用者可直接呼叫在使用者層提供的、與I/O操作有關的庫函式,對裝置進行操作。
②裝置獨立軟體
用於實現使用者程式與裝置驅動器的統一介面、裝置命名、裝置的保護以及裝置的分配與釋放等,同時為裝置管理和資料傳送提供必要的儲存空間。
③裝置驅動程式
與硬體直接相關,用於具體實現系統對裝置發出的操作指令,驅動I/O裝置工作的驅動程式。
④中斷處理程式
用於儲存被中斷程序的CPU環境,轉入相應的中斷處理程式進行處理,處理完後再恢復被中斷程序的現場後,返回到被中斷程序。

 

 

I/O系統介面


在I/O系統與高層介面中,根據裝置型別的不同,又進一步分為若干個介面。主要包括:
塊裝置介面
流裝置介面
網路通訊介面
塊裝置
資料的存取和傳輸都是以資料塊為單位的裝置。基本特徵是傳輸速率較高、可定址。磁碟裝置的I/O常採用DMA方式。
特點
隱藏了磁碟的二維結構:塊裝置介面隱藏了磁碟地址是二維結構的情況:每個扇區的地址需要用磁軌號和扇區號來表示。
將抽象命令對映為低層操作:塊裝置介面將上層發來的抽象命令,對映為裝置能識別的較低層具體操作。


字元裝置:
資料的存取和傳輸是以字元為單位的裝置。如鍵盤、印表機等。基本特徵是傳輸速率較低、不可定址,常採用中斷驅動方式。
get和put操作:
由於字元裝置是不可定址的,因而對它只能採取順序存取方式。(使用者程式)獲取或輸出字元的方法是採用get和put操作。
in-control指令:
因字元裝置的型別非常多,且差異甚大,系統以統一的方式提供了一種通用的in-control指令來處理它們(包含了許多引數,每個引數表示一個與具體裝置相關的特定功能)。

網路通訊介面

通過某種方式,把計算機連線到網路上。
作業系統必須提供相應的網路軟體和網路通訊介面,使得計算機能通過網路與網路上的其它計算機進行通訊,或上網瀏覽。

 

I/O系統的組成


1)I/O裝置的型別


I/O裝置的型別繁多,從OS的觀點,按其重要的效能指標進行分類如下:
按傳輸速率分類:
低速、中速、高速(鍵盤、印表機、磁碟)
使用:儲存裝置、輸入輸出裝置
按資訊交換的單位分類:
塊裝置:有結構、速率高、可定址、DMA方式控制
字元裝置:無結構、速率低、不可定址、中斷方式控制
按裝置的共享屬性分類:
獨佔:印表機
共享:一個時刻上仍然是隻被一個程序佔用。可定址、可隨機訪問的色後備。磁碟。
虛擬:使一臺獨佔裝置變換為若干臺邏輯裝置,供給若干使用者“同時使用”。
I/O裝置中的介面
與控制器的介面有三種類型的訊號
資料訊號線(進出資料轉換、緩衝後傳送)
控制訊號線(讀\寫\移動磁頭等控制)
狀態訊號線


2)裝置控制器


裝置並不直接與CPU通訊
計算機中的一個實體——“裝置控制器”負責控制一個或多個I/O裝置,以實現I/O裝置和計算機之間的資料交換。
控制器是CPU與I/O裝置之間的介面,作為中間人接收從CPU發來的命令,並去控制I/O裝置工作,以使處理機脫離繁雜的裝置控制事務。
①基本功能
接收和識別CPU命令(控制暫存器:存放命令和引數)
標識和報告裝置的狀態(狀態暫存器)
資料交換(資料暫存器)
地址識別(控制器識別裝置地址、暫存器地址。地址譯碼器)
資料緩衝(協調I/O與CPU的速度差距)
差錯控制
②組成
裝置控制器與處理機的介面
裝置控制器與裝置的介面
I/O邏輯

③處理機與裝置控制器間


實現CPU與裝置控制器之間的通訊。
共有三類訊號線:
資料線:資料線通常與兩類暫存器相連線,第一類是資料暫存器;第二類是控制/狀態暫存器。
地址線
控制線

3)I/O通道


①I/O通道裝置的引入
裝置控制器已大大減少CPU對I/O的干預
(如承擔了選擇裝置,資料轉換、緩衝等功能)
但當主機的外設很多時,CPU的負擔仍然很重。
在CPU和裝置控制器之間增設一個硬體機構:“通道”
設定通道後
CPU只需向通道傳送一條I/O指令即可不再幹預後續操作。
通道形成通道程式,執行I/O操作,完成後向CPU發中斷訊號。
主要目的:
建立更獨立的I/O操作,解放CPU。
資料傳送的獨立
I/0操作的組織、管理及結束處理也儘量獨立。
實際上I/O通道是一種特殊的處理機:
指令型別單一,只用於I/O操作;
通道沒有記憶體,它與CPU共享記憶體
②通道型別
根據其控制的外圍裝置的不同型別,資訊交換方式也可分為以下三種類型:
位元組多路通道
陣列選擇通道
陣列多路通道

中斷機構和中斷處理程式

中斷在作業系統中有特殊而重要的地位,沒有它就不可能實現多道程式。
中斷是I/O系統最低的一層,也是裝置管理的基礎。


1.中斷簡介


⑴中斷和陷入
中斷:CPU對I/O裝置發來的中斷訊號的一種響應,中斷是由外部裝置引起的,又稱外中斷。
陷入:由CPU內部事件所引起的中斷,通常把這類中斷稱為內中斷或陷入(trap)。
中斷和陷入的主要區別:是訊號的來源。
⑵中斷向量表
中斷向量表:為每種裝置配以相應的中斷處理程式,並把該程式的入口地址,放在中斷向量表的一個表項中,併為每一個裝置的中斷請求,規定一箇中斷號,它直接對應於中斷向量表的一個表項中。
⑶對多中斷源的處理方式
①遮蔽(禁止)中斷:
所有中斷都將按順序依次處理。
當處理機正在處理一箇中斷時,將遮蔽掉所有新到的中斷,讓它們等待,直到處理機已完成本次中斷的處理後,處理機再去檢查並處理。
優點是簡單,但不能用於對實時性要求較高的中斷請求。
②巢狀中斷:
中斷優先順序:系統根據不同中斷訊號源,對服務要求的緊急程度的不同,它們分別規定不同的優先順序。
當同時有多個不同優先順序的中斷請求時,CPU優先響應最高優先順序的中斷請求;
高優先順序的中斷請求,可以搶佔正在執行低優先順序中斷的處理機,該方式類似於基於優先順序的搶佔式程序排程。

 

2.中斷處理程式

 


主要工作
①進行程序上下文的切換
②對處理中斷訊號源進行測試
③讀取裝置狀態
④修改程序狀態
中斷處理流程
測定是否有未響應的中斷訊號
保護被中斷程序的CPU環境
轉入相應的裝置處理程式
中斷處理
恢復CPU的現場

 

 

 

裝置驅動程式


裝置驅動程式是I/O系統的高層與裝置控制器之間的通訊程式,其主要任務:
接收上層軟體發來的抽象I/O要求,如read、write等命令;
再把它轉化為具體要求,傳送給裝置控制器,啟動裝置去執行。
反方向,它也將由裝置控制器發來的訊號,傳送給上層軟體。
1.驅動程式的功能
1)接收由與裝置無關的軟體發來的命令和引數,並將命令中的抽象要求,轉換為與裝置相關的低層操作序列;
(2)檢查使用者I/O請求的合法性,瞭解I/O裝置的工作狀態,傳遞與I/O裝置操作有關的引數,設定裝置的工作方式;
(3)發出I/O命令,如果裝置空閒,便立即啟動I/O裝置,完成指定的I/O操作;如果裝置忙碌,則將請求者掛在裝置佇列上等待;
(4)及時響應由裝置控制器發來的中斷請求,並根據其中斷型別,呼叫相應的中斷處理程式進行處理。
2.裝置驅動程式的特點
(1)驅動程式是與裝置無關的軟體和裝置控制器之間通訊和轉換的程式。
(2)驅動程式,與裝置控制器和I/O裝置的硬體特性,緊密相關。
(3)驅動程式與I/O裝置所採用的I/O控制方式緊密相關。
(4)由於驅動程式與硬體緊密相關,因而其中的一部分必須用匯編語言編寫。
(5)驅動程式應允許可重入,一個正在執行的驅動程式常會在一次呼叫完成前被再次呼叫。
3.裝置處理方式
具體分類
(1)為每一類裝置設定一個程序,專門用於執行這類裝置的I/O操作。這種方式比較適合於較大的系統;
(2)在整個系統中設定一個I/O程序,專門用於執行系統中所有各類裝置的I/O操作。也可以設定一個輸入程序和一個輸出程序,分別處理系統中的輸入或輸出操作;
(3)不設定專門的裝置處理程序,而只為各類裝置設定相應的裝置驅動程式,供使用者或系統程序呼叫。這種方式目前用得較多。
4. 驅動程式處理過程
I/O裝置與控制器間的通訊轉換程式
瞭解抽象命令,瞭解控制器內部的暫存器結構
與硬體密切相關,每類裝置配備一種驅動程式
功能:接受解釋指令(有通道的系統,自動通道程式)、相關判斷、傳送裝置命令、響應中斷
特點,控制方式不同程式不同,部分固化進硬體,程式碼可重入。

 

I/O控制方式


程式I/O方式
中斷驅動I/O方式
直接儲存器訪問DMA(位元組—塊)
I/O通道控制方式(組織傳送的獨立)
宗旨:減少主機對I/O控制的干預,將CPU從繁雜的I/O控制事物中解脫出來。

 

1)程式I/O方式


cpu對I/O裝置的控制採取程式I/O方式,或稱忙—等待方式
向控制器傳送一條I/O指令;啟動輸入裝置輸入資料;把狀態暫存器busy=1。
然後不斷測試標誌。為1:表示輸入機尚未輸完一個字,CPU繼續對該標誌測試;直到為0:資料已輸入控制器資料暫存器中。
CPU取控制器中的資料送入記憶體單元,完成一個字的I/O 。
高速CPU空閒等待低速I/O裝置,致使CPU極大浪費。
2)中斷驅動I/O方式
CPU向相應的裝置控制器發出一條I/O命令
然後立即返回繼續執行任務。
裝置控制器按照命令的要求去控制指定I/O裝置。
這時CPU與I/O裝置並行操作。
I/O裝置輸入資料中,無需CPU干預,因而可使CPU與I/O裝置並行工作。從而提高了整個系統的資源利用率及吞吐量。
中斷方式比程式I/O方式更有效
但仍以字(節)為單位進行I/O,每當完成一個字(節),控制器便要請求一次中斷。
CPU雖然可與I/O並行,但效率不高,存在頻繁的中斷干擾。
改進:
CPU下指令通知控制器完成一塊資料的I/O,控制器完成後才發中斷,而不是每個位元組都要向CPU發中斷;
多位元組傳輸入記憶體過程不需要CPU搬運,由控制器控制完成(所以稱直接儲存器訪問)——DMA(Direct Memory Access)控制方式引入

 

3)直接儲存器訪問DMA 方式


①該方式的特點是:
資料傳輸的基本單位是資料塊;
所傳送的資料是從裝置直接送入記憶體的,或者直接從記憶體進裝置;不需要CPU操作。
CPU干預進一步減少:僅在傳送一個或多個數據塊的開始和結束時,才需CPU干預,整塊資料的傳送是在控制器的控制下完成的。
可見DMA方式又是成百倍的減少了CPU對I/O的干預,進一步提高了CPU與I/O裝置的並行操作程度。


4)I/O通道控制方式
通道是一種通過執行通道程式管理I/O操作的控制器,它使主機(CPU和記憶體)與I/O操作之間達到更高的並行程度。由於它的任務是管理實現輸入/輸出操作,提供一種傳送通道,所以將這種部件稱作“通道”。
通道 通過執行通道程式,與裝置控制器共同實現對I/O裝置的控制。
通道程式由一系列通道指令構成。
CPU指令裝置驅動程式解讀通道程式通道
通道指令一般包含下列資訊:
操作碼。規定指令所執行的操作。
記憶體地址。
計數。表示本指令所要操作的位元組數。
通道程式結束位。用以表示程式是否結束。
記錄結束標誌。表示該指令是否與下條指令有關。

 

與裝置無關的I/O軟體


裝置獨立性的基本含義:
指應用程式中所使用的裝置,不侷限於使用某個具體的物理裝置,也稱為裝置無關性。
為了實現裝置獨立性,在裝置驅動程式之上設定一層軟體,稱為與裝置無關的I/O軟體,或裝置獨立性軟體。
裝置無關的軟體是I/O系統最高層軟體,但它和其下的裝置驅動程式之間的界限,將隨作業系統和裝置的不同而有所差異。
使用者程式設計時所用的裝置名(邏輯上的)與實際物理裝置無關;
好處:
裝置分配時的靈活性
3個物理裝置(如印表機),程式中申請一臺印表機,執行時不拘泥必須是某臺(如第2個)印表機
易於實現I/O重定向
指用於I/O操作的裝置可以更換(重定向),而不必改變應用程式。 程式除錯、執行中的“列印”,可通過修改邏輯裝置表的顯示終端,實現不同時候的不同的裝置使用。

 

多道環境下,系統中裝置是所有程序共享的。要防止無序競爭,提高外設資源的利用率。需由OS進行統一、合理的裝置分配。
1)資料結構
2)裝置分配需考慮的因素
3)裝置的分配過程


1)裝置分配中的資料結構


記錄相應裝置或控制器的狀態,及對裝置或控制器進行控制所需的資訊。所需資料結構:
裝置控制表
控制器控制表
通道控制表
系統裝置(總)表


2)裝置分配需考慮的因素


裝置固有屬性:獨佔、共享、獨佔但可虛擬。根據屬性採取互斥、次序排程、虛擬等不同分配策略。
裝置分配演算法(對不同程序的裝置請求序列,如何進行選擇),常採用兩種:
FCFS
優先順序高者優先
裝置分配的安全性:程序開始I/O後就阻塞直到I/O完成。不“請求和保持”(安全的);允許連續I/O請求,是不安全的,此類分配方式需進行安全性檢查。
裝置獨立性
使用者IO請求中使用邏輯名申請某類裝置,實際物理名稱是系統根據裝置型別分析分配後才確定的。


3)獨佔裝置的分配過程


基本分配步驟(一個有通道的例子):
分配裝置:
根據請求裝置名,查詢SDT,找到DCT;
狀態、安全性等因素都可能導致本申請程序阻塞,掛入DCT等待佇列中。
分配控制器
通過1步分配裝置後,從DCT找到COCT;
檢查COCT狀態字,若忙碌,程序PCB掛到其等待佇列
分配通道
COCT找到CHCT
判斷狀態,…
當上述三步都通過後,才可啟動裝置進行資料傳輸
裝置分配程式的改進細節
增加裝置的獨立性
程序使用邏輯裝置名提出I/O請求。
系統從SDT中依次找下去,直到找到一個該類裝置中空閒可用的進行分配。
考慮多通路情況
控制器、通道也是反覆查詢,直到找到一條通路。

 

 

使用者層的I/O軟體


小部分I/O系統軟體放在了使用者應用層上。
庫函式(與應用程式連結)
假離線技術(虛擬裝置)


1)系統呼叫與庫函式
不允許執行在使用者態的應用程序,去直接呼叫執行在核心態(系統態)的OS過程。
應用程序在執行時,又必須取得OS所提供的服務。
於是:
OS在使用者層中引入了系統呼叫,應用程式可以通過它,間接呼叫OS中的I/O過程,對I/O裝置進行操作。


2)裝置分配中的虛擬技術   —— SPOOLing技術


虛擬性是OS的四大特徵之一。
多道程式技術將一臺物理CPU虛擬為多臺邏輯CPU,實現多個使用者共享一臺主機;
假離線技術
多道程式技術,專門利用程式模擬離線I/O的外圍機,完成裝置I/O操作。
稱這種聯機情況下實現的同時外圍操作為SPOOLing 技術(Simultaneaus Periphernal Operating On—Line,或稱為假離線操作)
一般程序對獨佔裝置的需求被假離線模擬到磁碟上。所以實現裝置虛擬,多道是前提,還需高速、大容量、可隨機存取的外存支援。
SPOOLing系統的組成
主要有三大部分(如下圖)
輸入井和輸出井:磁碟上開闢兩大儲存空間。輸入井模擬離線輸入的磁碟裝置,輸出井模擬離線輸出時的磁碟。
輸入緩衝區和輸出緩衝區:為緩解速度矛盾,記憶體中開闢兩大緩衝空間,輸入緩衝區暫存輸入裝置送來的資料,再送給輸入井;輸出緩衝區暫存輸出井送來的資料,再送輸出裝置。
輸入程序和輸出程序。
用一程序模擬離線輸入時外圍裝置控制器的功能,把低速輸入裝置上的資料傳送到高速磁碟上;
用另一程序模擬離線輸出時外圍裝置控制器的功能,把資料從磁碟上傳送到低速輸出裝置上。

 

緩衝區管理


I/O控制方式減少CPU對I/O的干預提高利用率;
緩衝則通過緩和CPU和I/O裝置速度不匹配矛盾,增加CPU和I/O裝置的並行性,提高利用率。
現代OS中,幾乎所有的I/O裝置與處理機交換資料時,都用了緩衝區。
引入緩衝區的主要原因:
緩和CPU與I/O裝置間速度不匹配的矛盾。
緩衝區資料成批傳入記憶體,也可進一步減少對CPU的中斷頻率
最終目的:提高CPU和I/O裝置的並行性。
使用緩衝區的方式:
1)單緩衝、多緩衝
2)迴圈緩衝
3)緩衝池(Buffer Pool)

 

1)單緩衝與多緩衝


單緩衝(Single Buffer)
每當使用者程序發出一I/O請求時,
OS在主存中為之分配一個緩衝區。
CPU和外設輪流使用,一方處理完後等待對方處理。
單位:字元裝置輸入時,緩衝區用於暫存使用者輸入/輸出的一行資料;塊裝置輸入則是成塊資料。
雙緩衝(Double Buffer)
進一步加快輸入和輸出速度,提高裝置利用率制,也稱緩衝對換(Buffer Swapping)
輸入:資料送入第一緩衝區,裝滿後轉向第二緩衝區。
讀出:OS從第一緩衝區中移出資料,送入使用者程序,再由CPU對資料進行計算。
兩個緩衝區,CPU和外設不再針對一塊交替
可能實現連續處理無需等待對方。前提是CPU和外設對一塊資料的處理速度相近。而如下圖情況CPU仍需等待慢速裝置。

2)迴圈緩衝(circular buffer)

 

①迴圈緩衝的組成
多個緩衝區。大小相同,三種類型:
預備裝輸入資料的空緩衝區R
裝滿資料的緩衝區G
計算程序正在使用的現行工作緩衝區C
多個指標。
指示正在使用的緩衝區C的指標Current
指示計算程序下一個可取的緩衝區G的指標Nextg
指示輸入程序下次可放的緩衝區R的指標Nexti
②迴圈緩衝區的使用
計算程序(CPU)和輸入程序(I/O操作)可利用兩個過程來使用迴圈緩衝區。
主要就是利用指標,操作上述不同型別緩衝區
Getbuf過程:使用緩衝區時,可呼叫該過程
計算程序取:current=Nextg,G—>C,nextg下移一個。
輸入程序放:current=nexti,R—>C,nexti下移一個
Releasebuf過程:
計算程序:C->R
輸入程序:C->G
③程序同步
兩個程序的控制:輸入程序和計算程序並行執行,如何控制相應的兩個指標不斷順時針方向移動,這樣就可能出現兩種情況:
Nexti趕上Nextg。意味著輸入速度大於計算速度,緩衝區滿,只能阻塞輸入程序等計算程序取,此情況稱為系統受計算限制。
Nextg趕上Nexti。意味著輸入速度低於計算速度,緩衝區空,只能阻塞計算程序等輸入程序放,此情況稱為系統受I/O限制。

 

3)緩衝池(Buffer Pool)


①緩衝池的組成
對於既可輸入又可輸出的公用緩衝池,至少應含有下列三種類型的緩衝區:
空緩衝區;
裝滿輸入資料的緩衝區;
裝滿輸出資料的緩衝區;
為方便管理,將上述型別相同的緩衝區連成佇列
空緩衝區佇列(所有程序都可用)
輸入佇列(n個程序有各自的佇列)
輸出佇列(n個程序有各自的佇列)
*(佇列長度不固定,根據程序實際情況靈活變動,需要多少用多少)
②緩衝區的工作方式
四種工作方式:
收容輸入:Getbuf(emq),hin;輸入資料填入一空緩衝區;Putbuf(inq,hin)
提取輸入: Getbuf(inq),sin;從輸入緩衝佇列中取出一資料區的內容;Putbuf(emq,sin)
收容輸出: Getbuf(emq),hout;輸出資料填入一空緩衝區;Putbuf(outq,hout)
提取輸出: Getbuf(outq),sout;從輸出緩衝佇列中取一資料區的內容;Putbuf(emq,sout)

 

磁碟儲存器的效能和排程


1)磁碟效能簡述


首先與格式有關
資料的組織和格式
碟片、面、磁軌、扇區
為方便處理,每條磁軌儲存容量相同,每個磁軌上的每個扇區相當於一個盤塊。磁碟”格式化”的過程就是按規定的格式規劃盤塊。
與速度有關
磁碟型別
固定磁頭(每道一磁頭)
移動磁頭(每盤一磁頭)
訪問時間的計算
尋道時間(到磁軌)
旋轉延遲(到扇區)
傳輸時間
傳輸時間佔總時間的比例最小,磁碟讀寫速度的提高要選擇合適的排程演算法,減少前兩項用時,使所有作業的磁碟處理時間均衡。


磁碟排程方法


對所有請求訪問磁碟的程序進行合理排程,使對磁碟的平均訪問時間最小。
目標:使平均尋道時間最少。
演算法:
FCFS
最短尋道時間優先SSTF
掃描演算法SCAN(磁碟電梯排程演算法)
迴圈掃描演算法CSCAN
N-Step-SCAN演算法
FSCAN演算法

掃描演算法SCAN(磁碟電梯排程演算法)


SSTF會導致“飢餓”現象
總選擇最近的磁軌訪問,遠磁軌請求的程序會長時間得不到執行。
改進:
考慮距離的同時,更優先考慮方向
SCAN演算法
規定磁頭移動方向:自裡向外,再自外向裡移動。
後續的I/O磁軌請求,哪個在規定方向上距離最近,就先執行哪個。
如當前為100,後續要求55,86,95,180,165,105
先由內向外:選最近的105執行,再判斷剩餘的,選165,180。
再由外向內:95,86,55
迴圈掃描CSCAN
SCAN的錯過問題:
容易錯過與當前磁軌距離近,但方向不一致的磁軌。
修改:將SCAN規定的移動方向改為“單向移動”
由裡向外後,再由裡向外。
N-Step-SCAN
前述最近尋道演算法共同問題:
“磁臂粘著”——磁頭靜止在一個磁軌上,導致其它程序無法及時進行磁碟I/O。(因:高密度盤,程序的讀寫可能集中在某一磁軌)
如現有一系列請求:
3 3 5 2 3 3 3 2 3 3 2 3 3 4 4 5 2 3 3 3 4 4 2 3 3 3 2 2 2 3
不管哪種演算法,從3開始向下執行會是
3 3 3 3 3 3 3 3 3 3….2 2 2 2 2 2 … 4 4 ….

 

掃描演算法SCAN(磁碟電梯排程演算法)
SSTF會導致“飢餓”現象
總選擇最近的磁軌訪問,遠磁軌請求的程序會長時間得不到執行。
改進:
考慮距離的同時,更優先考慮方向
SCAN演算法
規定磁頭移動方向:自裡向外,再自外向裡移動。
後續的I/O磁軌請求,哪個在規定方向上距離最近,就先執行哪個。
如當前為100,後續要求55,86,95,180,165,105
先由內向外:選最近的105執行,再判斷剩餘的,選165,180。
再由外向內:95,86,55
迴圈掃描CSCAN
SCAN的錯過問題:
容易錯過與當前磁軌距離近,但方向不一致的磁軌。
修改:將SCAN規定的移動方向改為“單向移動”
由裡向外後,再由裡向外。
N-Step-SCAN
前述最近尋道演算法共同問題:
“磁臂粘著”——磁頭靜止在一個磁軌上,導致其它程序無法及時進行磁碟I/O。(因:高密度盤,程序的讀寫可能集中在某一磁軌)
如現有一系列請求:
3 3 5 2 3 3 3 2 3 3 2 3 3 4 4 5 2 3 3 3 4 4 2 3 3 3 2 2 2 3
不管哪種演算法,從3開始向下執行會是
3 3 3 3 3 3 3 3 3 3….2 2 2 2 2 2 … 4 4 ….