图71 单一汇流排架构装置管理.ppt

上传人:sccc 文档编号:5440612 上传时间:2023-07-07 格式:PPT 页数:81 大小:399.01KB
返回 下载 相关 举报
图71 单一汇流排架构装置管理.ppt_第1页
第1页 / 共81页
图71 单一汇流排架构装置管理.ppt_第2页
第2页 / 共81页
图71 单一汇流排架构装置管理.ppt_第3页
第3页 / 共81页
图71 单一汇流排架构装置管理.ppt_第4页
第4页 / 共81页
图71 单一汇流排架构装置管理.ppt_第5页
第5页 / 共81页
点击查看更多>>
资源描述

《图71 单一汇流排架构装置管理.ppt》由会员分享,可在线阅读,更多相关《图71 单一汇流排架构装置管理.ppt(81页珍藏版)》请在三一办公上搜索。

1、著作權所有 旗標出版股份有限公司,1,第7章 裝置管理,著作權所有 旗標出版股份有限公司,2,本章提要,I/O硬體 I/O軟體常見儲存裝置管理範例 網路裝置 實作歷險記-Linux滑鼠驅動程式實作,著作權所有 旗標出版股份有限公司,3,裝置管理概論,對作業系統的設計者而言,不同設備的管理是作業系統最頭大的工作之一 各種裝置的特性差異非常的大 一台電腦可能連接多種不同的裝置,必須要能同時處理不同行程的I/O需求,以盡量提高裝置的使用效率 對電腦的使用者與程式設計師而言:裝置管理方面最重要的貢獻是提供高階的邏輯操作界面,使得使用者與設計師不需要去自行瞭解每種裝置的特性與管理細節,著作權所有 旗標出

2、版股份有限公司,4,電腦週邊裝置的分類方法,依裝置的功能來分:儲存裝置I/O裝置依裝置的資訊儲存方式來分:字元裝置:例如鍵盤、印表機、通訊埠、滑鼠等區塊裝置:例如磁碟、磁帶等依裝置的共用性來分:獨佔裝置:例如印表機 共用裝置:例如磁碟 虛擬裝置:透過某些技術處理,將獨佔裝置轉變成看似共用的裝置,以便同時供多個行程存取其他分類方式:例如依照資料傳輸速率分為高速裝置與低速裝置,或是根據通訊對象分為人-機通訊裝置與機器-機器通訊裝置,著作權所有 旗標出版股份有限公司,5,7-1 I/O硬體,匯流排裝置控制器,著作權所有 旗標出版股份有限公司,6,匯流排,匯流排:電腦系統用來連接各種裝置的通訊管道最簡

3、單的電腦就是只用一條匯流排來連接所有裝置 協定:規範在特定時間裡,哪個裝置擁有進行通訊的權利匯流排控制器:負責仲裁下個時脈週期該由哪個裝置使用,著作權所有 旗標出版股份有限公司,7,圖7-1 單一匯流排架構,CPU,記憶體,圖形顯示控制器,磁碟控制器,鍵盤控制器,螢幕,磁碟,鍵盤,匯流排,著作權所有 旗標出版股份有限公司,8,新一代的匯流排架構PCI express,目前個人電腦內部最大的速度瓶頸是在傳輸頻寬上:PCI介面與所有的週邊資料傳輸,只能通過一條主要幹道來共同分享133MB/s的頻寬專為連接圖形顯示卡所設計的AGP匯流排,也逐漸不足PCI Express架構:使用交換式點對點傳輸技術

4、,每組PCI Express都有自己的獨立通道,以避免資料傳輸互相干擾的問題。單一通道的傳輸速度為250MB/s,稱為PCI Express x1,並規劃有x1、x2、x4、x8、x16、x32.等不同規格相對於PCI Express,目前已經在使用的另一種高速匯流排架構是PCI-X,著作權所有 旗標出版股份有限公司,9,為什麼電腦中要包含多個匯流排?,平行性:可以同時進行多項資料傳輸活動但事實上並沒有這麼容易效能:為了因應不同傳輸特性所設計的不同匯流排PCI匯流排:在目前典型的個人電腦架構中,用來連接週邊裝置的標準匯流排AGP匯流排:專為連接顯示卡與CPU所設計前端匯流排:用來最佳化CPU與

5、記憶體間的傳輸擴充匯流排:用來聯絡鍵盤、並列埠/序列埠等較慢速裝置,著作權所有 旗標出版股份有限公司,10,圖7-2 個人電腦常見的匯流排架構,CPU,記憶體,圖形顯示控制器,IDE磁碟控制器,螢幕,磁碟,鍵盤,PCI匯流排,AGP匯流排,系統晶片,記憶體匯流排,磁碟,磁碟,磁碟,網路控制器,網路,擴充匯流排介面,擴充匯流排,序列埠控制器,Com1,並列埠控制器,印表機,前端匯流排,著作權所有 旗標出版股份有限公司,11,裝置控制器,裝置控制器:接收CPU傳送的高階存取命令,並處理實際的存取動作每種裝置都有其專屬的I/O控制器,而一個控制器通常可以控制多個相同的裝置通常包含數個資料與位址的暫存

6、器CPU與控制器的溝通:對這些暫存器進行讀寫常用的暫存器存取方法:連接埠I/O記憶體映射I/O有些系統會同時使用這兩種方法,著作權所有 旗標出版股份有限公司,12,實作討論PC的I/O埠位址,個人電腦常用的一些I/O埠位址:,著作權所有 旗標出版股份有限公司,13,I/O控制器中的暫存器種類,狀態暫存器:用來表示裝置目前的狀態,例如命令是否已經執行完畢控制暫存器:控制裝置的運作模式,例如要以全雙工/半雙工運作,或是設定資料傳輸速率等資料輸入暫存器:用來存放要讀入系統的資料資料輸出暫存器:用來存放要輸出到裝置的資料,著作權所有 旗標出版股份有限公司,14,I/O與CPU間的溝通方式,忙碌等待讓C

7、PU在送出一個資料字組的I/O命令之後就持續檢查控制器上的狀態暫存器,直到I/O完成 中斷I/O控制器在完成一個資料字組的I/O運算之後,會從特定的中斷線路中送出中斷信號CPU偵測到中斷信號時,會先執行中斷處理常式必須賦予中斷不同的優先順序DMA:直接記憶體存取 系統會將包含傳輸來源位址、目的位址、與資料量的DMA指令交給DMA控制器,然後繼續進行其他的工作DMA控制器會在完成整批資料的傳輸之後,再送出中斷給CPU,著作權所有 旗標出版股份有限公司,15,圖7-3 資料輸入的3種技術,送出讀取命令,讀取I/O的狀態,檢查狀態,從I/O控制器讀取字組,將字組寫入記憶體,完成所有資料傳送?,讀取錯

8、誤,就緒,未就緒,是,否,下個指令,(a)忙碌等待,送出讀取命令,CPU去做其他事情,讀取I/O的狀態,檢查狀態,從I/O控制器讀取字組,將字組寫入記憶體,完成所有資料傳送?,讀取錯誤,就緒,是,否,下個指令,(b)中斷,I/O控制器送出中斷,送出讀取命令給DMA,CPU去做其他事情,讀取DMA的狀態,下個指令,(c)DMA,DMA控制器送出中斷,著作權所有 旗標出版股份有限公司,16,實作討論PC上的中斷,IRQ是Interrupt Request(中斷請求)的縮寫;對應到裝置控制器傳送信號給CPU時所使用的中斷線編號 IRQ衝突發生在兩種不同的週邊裝置選擇同一條 IRQ 線路的時候微軟在1

9、995 年開始在Windows作業系統中支援隨插即用(PnP)的功能,能夠讓周邊裝置自動找到尚未被使用的IRQ,以協助解決 IRQ 衝突的問題,著作權所有 旗標出版股份有限公司,17,圖7-4 IRQ範例畫面,著作權所有 旗標出版股份有限公司,18,ISA匯流排預設的IRQ值,IRQ 0到7中,編號越小者,代表其優先權越高,但IRQ8到15的優先權則相當於是IRQ 2,著作權所有 旗標出版股份有限公司,19,7-2 I/O軟體,I/O軟體的目標:裝置獨立性:除了直接與裝置溝通的最底層軟體之外,其他部份的軟體設計都與硬體特性無關 統一命名原則:對不同的裝置使用統一的邏輯命名原則,讓高階的應用程式

10、在使用不同裝置的時候,不需要使用不同的命名規則。Ex:在Unix下,將軟碟掛載在/usr/ast/backup,然後使用正常的檔案拷貝命令:cp file.txt/usr/ast/backup最好還能使用相同的一組基本原式來存取所有的裝置,著作權所有 旗標出版股份有限公司,20,實作討論Unix作業系統的I/O函式,Unix提供行程兩種進行輸入/輸出的方法:標準I/O程式庫:一組高階界面,例如printf()與scanf()I/O系統呼叫:直接與作業系統核心相連的較低階函式在某些情況下,應用程式仍需要針對特定硬體執行某些運算。因此,Unix還提供了ioctl系統呼叫 例如,下列命令可以將fd所

11、指向之終端機的視窗大小設為tty_winsize的值:ioctl(fd,TIOCSWINSZ,(char*),著作權所有 旗標出版股份有限公司,21,I/O系統呼叫中最常用到的幾個函式,open:以指定的模式來開啟檔案(或是裝置、網路界面)int open(char*pathname,int oflag,int mode);creat:以指定的模式來建立新的檔案 int creat(char*pathname,int mode);close:關閉指定的檔案int close(int filedes);read:將指定長度(以位元組為單位)的資料讀入指定的位置int read(int filed

12、es,char*buff,unsigned int nbytes);write:依照指定的長度,將指定位置的資料從檔案描述子寫出int write(int filedes,char*buff,unsigned int nbytes);,著作權所有 旗標出版股份有限公司,22,I/O軟體結構,為了達到裝置獨立的目標,大多數的I/O管理軟體會再細分為幾個層級常見的分法是由低而高細分為:中斷處理常式裝置驅動程式系統軟體使用者層級的應用軟體,著作權所有 旗標出版股份有限公司,23,圖7-5 I/O軟體的層級,硬體,中斷處理常式,使用者層級I/O軟體,核心 I/O子系統,裝置驅動程式,I/O 請求,傳回

13、 I/O 結果,著作權所有 旗標出版股份有限公司,24,中斷處理常式,中斷的處理必須完全由作業系統負責,因為:中斷會打斷使用者行程的正常執行中斷的發生並不在使用者行程的預期之中中斷的處理流程:作業系統會先將目前正在執行的指令完成,然後確認中斷是否發生如果確實有發生中斷,作業系統會將目前行程執行的相關資訊儲存在系統堆疊中,然後跳到中斷處理常式在中斷常式結束之後,作業系統會取出堆疊中的資訊,從被中斷的地方開始繼續執行原本的行程,著作權所有 旗標出版股份有限公司,25,圖7-6 I/O中斷的處理流程,裝置控制器或DMA控制器送出中斷,CPU完成目前的指令,CPU確認中斷,將行程控制資訊存入堆疊,執行

14、中斷處理常式,取出行程控制資訊,繼續執行原本行程,著作權所有 旗標出版股份有限公司,26,中斷處理常式設計的考量,一方面希望盡快完成這次硬體中斷的處理,以便讓CPU能夠盡快處理其他的任務 例如處理在這段時間中發生的其他中斷 另一方面,I/O的中斷又可能會需要處理大量的資料 可能的做法:將中斷處理的工作分成兩個階段,先在第一階段以高優先序做完必要的緊急處理,再將後續的處理工作放入較低優先序的中斷處理佇列,就不會耽誤到其他高優先序中斷的處理時機,著作權所有 旗標出版股份有限公司,27,實作討論Windows的中斷處理,裝置發生中斷時,Windows 2000/XP核心會在中斷向量表中搜尋對應的中斷

15、處理常式(ISR),並且將控制權轉交給該常式ISR具有高優先的中斷請求等級:所做的工作越簡短越好主要任務是去取得裝置的狀態,將負責後續處理的低請求等級任務(稱為延遲程序呼叫,DPC)放入佇列,並且清除裝置的中斷信號,然後結束 當輪到DPC執行時DPC會完成整個中斷的處理,並且視情況需要,啟動下一個在該裝置佇列中等待的I/O請求 好處在於優先順序介於ISR與DPC請求等級之間的中斷,就可以在DPC執行之前發生,著作權所有 旗標出版股份有限公司,28,實作討論Linux的中斷處理,Linux作業系統也是將中斷處理分為兩個階段硬體中斷處理常式:執行與硬體的溝通,通常是用來處理有時間急迫性的問題軟體中

16、斷:負責真正的資料處理Linux 2.4版開始提供了tasklet:在硬體中斷處理中會產生一個tasklet,然後在軟體中斷啟動時執行在多處理器系統中,許多處理器可能會同時叫用相同的中斷處理常式,由於每個中斷會產生自己的tasklet,就可以避免單一軟體處理常式在執行過程中發生重新進入(reentrant)的問題。,著作權所有 旗標出版股份有限公司,29,裝置驅動程式,目的:將裝置間的差異封裝起來,對外提供一組標準的溝通界面,而內部則是根據不同裝置的特性量身訂做可以簡化作業系統設計者的工作,不需要去瞭解各種裝置的控制細節可以讓硬體廠商更容易推出新的裝置只要提供新的驅動程式就可以使用不同作業系統

17、的裝置驅動程式介面各有不同,所以一個裝置需要多種版本的驅動程式 作業系統多半會為同一類裝置提供一個通用的裝置驅動程式如果要充分發揮特定裝置本身的效能,最好是選擇廠商所開發的驅動程式,著作權所有 旗標出版股份有限公司,30,裝置驅動程式的組成,初始化程式:在驅動程式載入時,進行驅動程式的初始化工作,建立對應的系統物件,供作業系統識別與呼叫驅動程式之用裝置操作程式:裝置一般運作所需的相關功能,例如開啟、關閉、讀取、寫入、控制等運算。中斷處理程式:處理裝置中斷的程式,通常包含比較立即的處理常式,與優先權較低的處理程式,例如Windows的ISR與DPC。離開程式:將裝置關閉並釋放系統資源。,著作權所

18、有 旗標出版股份有限公司,31,核心I/O子系統,核心I/O子系統的典型工作:提供應用程式統一的介面 排程 裝置的保護 緩衝 快取 錯誤處理,著作權所有 旗標出版股份有限公司,32,提供應用程式統一的介面,I/O軟體的重要目標 例如在Unix系統中,裝置名稱的表示方式與檔名相同(如/dev/tty01),而其對應的控制資訊中則包含了主要號碼與次要號碼主要號碼:代表裝置所連結的驅動程式例如主要號碼為1的/dev/null就是由驅動程式1負責管理 次要號碼:用來辨識屬於同一類型的裝置 有些驅動程式可以同時管理多個裝置,就必須利用次要號碼來加以辨識,著作權所有 旗標出版股份有限公司,33,排程,確保

19、行程間的公平性:至少不要發生飢餓現象設法對裝置做最有效的運用 例如適當的安排磁碟I/O的請求,以降低磁碟的搜尋時間 根據任務的特性,賦予I/O請求不同的優先順序 例如虛擬記憶體的分頁I/O請求,就應該比一般應用程式的I/O請求優先,著作權所有 旗標出版股份有限公司,34,裝置的保護,不讓沒有權限的使用者存取裝置例如在Unix作業系統中,就是使用跟檔案權限控管相同的方式,針對裝置檔案設定讀-寫-執行(rwx)的權限 避免使用者執行錯誤的I/O運算 例如對只能進行輸入的裝置(例如鍵盤)進行輸出運算 在Unix中,可以將/dev/kb(鍵盤)設為r-x。當使用者嘗試開啟裝置檔案時,作業系統會去比對使

20、用者所要求的運算與裝置的存取權限是否符合,並且在沒有這個權限(例如寫入權限)時,拒絕使用者的要求 注意獨佔裝置有互斥的要求在行程嘗試開啟獨佔裝置的時候,去檢查是否能接受該請求。當裝置已經被其他行程使用的時候,就必須拒絕這個請求,或是利用週邊並行之類的處理機制來解決,著作權所有 旗標出版股份有限公司,35,週邊並行技術,用緩衝區暫時存放週邊裝置的資料,以便讓不能同時共享的裝置,提高其並行處理的能力最典型範例:印表機雖然同時可能有多個使用者需要列印,但我們並不希望它將所有的文件混在一起印出來目前的做法是將所有列印運算都先以暫存檔的形式儲存在週邊並行專用的佇列中,當印表機完成一份資料的列印之後,週邊

21、並行系統會再從佇列中取出一個新的列印工作,傳送給印表機對於磁帶與印表機等無法應付同時來自多個行程之I/O請求的裝置非常有用。,著作權所有 旗標出版股份有限公司,36,緩衝,能夠避免置換問題當使用者行程想要從某個裝置讀入資料區塊時,通常會進入懸置狀態,等待完成之後再被喚醒。此時如果直接將讀入的資料放入行程的資料結構中,在資料輸入的過程中,行程必須保留在主記憶體中會干擾到作業系統的置換運算 資料輸入的緩衝:將資料先讀到系統預留的緩衝區中,等輪到該行程執行的時候,再透過記憶體搬移的功能,將資料複製到行程的記憶體位址資料輸出的緩衝:先將資料複製到系統的緩衝區中,然後再進行實際的資料傳輸工作 可以用來改

22、善行程執行效率 預先讀取:系統在將資料搬移給行程之後,馬上啟動下一個區塊的輸入運算,以減少行程等待下一個區塊的時間雙重緩衝:為每個I/O操作指定兩個系統緩衝區。當系統正在讀取或輸出一個緩衝區的資料時,使用者行程可以進行另一個緩衝區的資料搬移動作,著作權所有 旗標出版股份有限公司,37,圖7-7 輸入的緩衝範例,作業系統,周邊裝置,使用者行程,a.無緩衝區,b.單一緩衝,c.雙重緩衝,資料進入,資料進入,資料進入,資料搬移,資料搬移,著作權所有 旗標出版股份有限公司,38,快取,用較快速的儲存裝置,來存放較慢速裝置中的資料,以便節省資料存取的時間 Ex.記憶體就扮演磁碟的快取角色 當快取都已經填

23、滿,但又有新的資料區塊要儲存時,就必須取代掉一個原有的區塊同樣可以使用頁面替換演算法來解決 當磁碟放在快取中的資料發生修改時:直接寫回:在快取發生修改之後,立刻就寫回磁碟,並且在完成寫入之後,行程才會從寫入運算中返回可降低兩者不一致的機會 延遲寫回:在資料寫入快取後就讓行程繼續,然後等適當的時機,再由系統將資料寫回磁碟可降低對效能的衝擊 這是沒有經過關機就直接切斷電源,有時候會造成某些檔案毀損的原因之一,著作權所有 旗標出版股份有限公司,39,緩衝 vs.快取,緩衝與快取是兩個不同的功能,但是因為有時候可以用同一機制達成這兩個功能,所以很容易造成混淆 例如當作業系統劃出一塊區域做為磁碟資料的緩

24、衝區時,它們同樣也可以當作快取,用來保存一些常用或共用的檔案 當作業系統收到I/O請求時,它會先檢查這部份的資料是否已經在記憶體中,著作權所有 旗標出版股份有限公司,40,錯誤處理,一般而言,大多數的I/O錯誤都與裝置有關,因此,也只有驅動程式知道該如何處理作業系統只能解決一些暫時性的錯誤,例如因為網路不穩定造成暫時性地傳輸失敗如果是作業系統無法解決的問題,它會將錯誤回報給行程,再由行程顯示適當的訊息給使用者,著作權所有 旗標出版股份有限公司,41,圖7-8 Windows檔案總管的錯誤訊息範例,著作權所有 旗標出版股份有限公司,42,使用者層級I/O軟體,應用程式會使用到一些屬於使用者層級的

25、函式庫 例如C語言中的printf()這些輸入/輸出函式的工作,主要是把I/O相關的參數放到適合的位置,由其他的I/O軟體來完成真正的工作例如printf()會根據指定的格式與變數,組成一個ASCII的字串,然後交給write()這個系統呼叫來輸出,著作權所有 旗標出版股份有限公司,43,I/O請求的處理流程,行程透過I/O函式送出I/O請求。核心I/O子系統檢查參數的正確性。如果是輸入運算的話,系統會檢查在緩衝區中是否已經有資料了。如果還沒有資料,就送出請求給裝置驅動程式。裝置驅動程式會送出命令給裝置控制器。控制器會監督裝置,等到I/O完成就產生中斷。作業系統呼叫中斷處理常式,中斷常式儲存必

26、要資訊(如狀態與資料)之後,會送出信號給裝置驅動程式。裝置驅動程式將I/O結果回傳給I/O子系統。核心會將資料拷貝到行程的位址空間,並且將行程從等待佇列移到就緒佇列。,著作權所有 旗標出版股份有限公司,44,圖7-9 I/O請求的處理流程,送出I/O請求,是否已有所需資料,送出請求給裝置驅動程式行程視需要進入懸置狀態,傳送適當的命令給控制器,監控裝置,I/O完成,產生中斷,擷取狀態與資料送出信號給驅動程式,傳回I/O狀態資訊,傳送資料或錯誤訊息給行程,I/O完成,裝置控制器,中斷處理器,裝置驅動程式,核心I/O子系統,使用者行程,核心I/O子系統,系統呼叫,否,是,自系統呼叫返回,中斷,著作權

27、所有 旗標出版股份有限公司,45,常見儲存裝置管理範例 磁碟,決定硬碟存取效能的因素:搜尋時間:將讀寫頭移到指定磁軌準備讀取所需的時間旋轉延遲:等待磁軌上特定資料旋轉至讀寫頭下方所需的時間,其平均值為磁碟旋轉一圈時間的1/2傳輸時間:資料由磁碟實際傳送到記憶體的時間跟磁碟轉速、單一磁軌可存放資料量、和存取的資料量有關假設磁碟的轉速是R(rpm,每分鐘旋轉的圈數),每一磁軌上包含N個位元組,且所需的資料量為B個位元組,則傳輸時間會等於:(B/N)*(60/R),著作權所有 旗標出版股份有限公司,46,磁碟存取時間的討論,已知某磁碟的平均搜尋時間為10ms,旋轉速度是每分鐘10,000轉,每個磁區

28、有512位元組,每個磁軌有320個磁區範例一:假設所需傳送的檔案共有40個磁區,並且位於磁碟上的連續位置,則預估讀出檔案所需的時間為:搜尋時間+存取時間+傳輸時間=10ms+0.5*60/10000s+(40/320)*(60/10000)s 13.75 ms範例二:假設所需檔案的大小只有1個磁區,則預估讀出檔案所需的時間為:10ms+0.5*60/10000s+(1/320)*(60/10000)s 13.01 ms範例三:假設所需的檔案共有40個磁區,但每個磁區都是位於不連續的磁軌上,則預估讀出檔案所需的時間為:(10ms+0.5*60/10000s+(1/320)*(60/10000)s

29、)*40 520.75 ms由上可知,在傳輸資料的時候,除非資料量真的相當龐大,否則影響讀取時間最重要的因素,是搜尋時間與延遲時間,而不是所需存取的資料量,著作權所有 旗標出版股份有限公司,47,課堂練習,已知某磁碟的平均搜尋時間為8ms,每轉一圈的時間為6ms,每個磁區有512位元組,每個磁軌有320個磁區假設所需傳送的檔案共有80個磁區,請分別估計這80個磁區是位於連續位置或不同磁軌時,讀出檔案所需的時間。,著作權所有 旗標出版股份有限公司,48,練習解答,連續8+0.5*6+(80/320)*6=12.5 ms不連續(8+0.5*6+(1/320)*6)*80=881.5 ms,著作權所

30、有 旗標出版股份有限公司,49,磁碟的排程,當系統同時收到多個I/O請求的時候,如何進行適當的排程,以減少讀寫頭的移動距離,對I/O的效能會產生很大的影響 磁碟的排程演算法:FIFO:依序將磁碟I/O請求佇列中的請求取出優先權式:重點不是要讓磁碟的使用最佳化,而是要符合作業系統的其他目標 SSTF:以磁頭目前的位置為基礎,選取目標位於距離最近之磁柱的I/O請求SCAN:讓讀寫頭在磁碟最內側與最外側磁柱間來回移動,並且在移動的過程中依序執行對所經磁軌的I/O請求 C-SCAN:SCAN的改良;在讀寫頭抵達一側之後,就立刻把它拉回另一側,重新進行存取LOOK:完成目前掃描方向最遠的I/O請求之後就

31、回頭 C-LOOK:LOOK版本的C-SCAN,著作權所有 旗標出版股份有限公司,50,磁碟排程演算法範例,假設目前讀寫頭的位置為88,且目前佇列中各請求所需的磁柱編號為:12、58、96、74、66、120FIFO磁頭移動的順序:881258967466120磁頭的總位移:|88-12|+|12-58|+|58-96|+|96-74|+|74-66|+|66-120|=244SSTF磁頭移動的順序:88 9674665812120磁頭的總位移:|88-96|+|96-74|+|74-66|+|66-58|+|58-12|+|12-120|=200雖然表現要比FIFO好得多,但未必能達到最佳的

32、位移量(本例為140),著作權所有 旗標出版股份有限公司,51,磁碟排程演算法範例(2),SCAN 磁頭移動的順序(假設磁頭正好是從88往0移動):8874665812096120 磁頭的總位移:88+120=208C-SCAN磁頭移動的順序(假設最外側的磁軌是255):8874665812025512096 磁頭的總位移:88+255+|96-255|=502,著作權所有 旗標出版股份有限公司,52,磁碟排程演算法範例(3),LOOK磁頭移動的順序(假設磁頭正好是從88往0移動):887466581296120 磁頭的總位移:|88-12|+|12-120|=184C-LOOK磁頭移動的順序

33、(假設最外側的磁軌是255):887466581212096 磁頭的總位移:|88-12|+|12-120|+|120-96|=208適用情況:SCAN系列演算法適用於存取請求平均分佈於磁碟各部位的情況LOOK系列的演算法適用於要求存取的位置比較集中在磁碟中間部位的情況,著作權所有 旗標出版股份有限公司,53,課堂練習,假設磁碟驅動器具有 4000 個磁住,編號從 0 到 3999,現今磁頭正在服務磁柱 25 的要求,而前一次的要求是磁柱 105。如果佇列中未服務的要求以 FIFO 的次序排列如下:10、1500、950、175由目前的讀寫頭位置開始,對於下列的每一種磁碟排程演算法,它的磁碟臂

34、的移動方式與總移動距離(以磁柱數為單位)是多少?SSTFSCANC-SCANLOOKC-LOOK,著作權所有 旗標出版股份有限公司,54,練習解答,SSTF:150525 10 175 950 1500SCAN:152525 10 0 175 950 1500C-SCAN:784825 10 0 3999 1500 950 175 LOOK:150525 10 175 950 1500C-LOOK:283025 10 1500 950 175,著作權所有 旗標出版股份有限公司,55,RAID,將數個磁碟串接在一起,將並行處理的觀念應用在I/O上,以改善儲存裝置的效能與可靠度 資料切條:對虛擬磁

35、碟資料加以切割,平均分配給多個實體磁碟儲存切割出來的邏輯單位就稱為資料條 雖然RAID利用資料切條的技術,大幅提高I/O平行處理的能力,但是這並不是說,包含4個磁碟的RAID,就可以達到4倍的I/O速度受到磁碟與記憶體間傳輸路徑的頻寬限制 受到I/O請求的資料分布影響,著作權所有 旗標出版股份有限公司,56,RAID架構,RAID 0:邏輯區塊沒有重複,無復原能力,適合資料重要性較低,但需要高I/O效能的應用RAID 1:邏輯區塊鏡像,磁碟故障時可迅速切換並繼續運作,適合非常重要的檔案RAID 2:位元資料條的平行存取,使用漢明碼檢查,目前未使用RAID 3:位元資料條的平行存取,使用同位碼檢

36、查,適合大量資料傳輸需求的應用同位位元的計算:假設RAID中包含5個磁碟,D0到D3存放資料,D4存放同位位元,則第i個同位位元的計算方式為:D4(i)=D0(i)D1(i)D2(i)D3(i),:表互斥運算如果磁碟D3發生故障,則可以求出D3的內容為:D3(i)=D0(i)D1(i)D2(i)D4(i),著作權所有 旗標出版股份有限公司,57,RAID架構(2),RAID 4:邏輯區塊的獨立存取,使用同位碼檢查,目前未使用同位磁碟可能成為瓶頸新的同位位元的計算:假設D4是用來存放同位位元的磁碟,且磁碟D1運算前後的位元值為D1與D1 D4(i)=D1(i)D1(i)D4(i)RAID 5:邏

37、輯區塊的獨立存取,使用同位碼檢查,適合I/O請求量大的系統,著作權所有 旗標出版股份有限公司,58,圖7-10 RAID架構-1,(a)RAID 0,(b)RAID 1,(c)RAID 2,漢明碼0,漢明碼1,漢明碼2,位元3,位元0,位元1,位元2,著作權所有 旗標出版股份有限公司,59,同位16-19,資料條16,資料條17,資料條18,資料條19,資料條12,同位12-15,資料條13,資料條14,資料條15,圖7-11 RAID架構-2,(a)RAID 3,(b)RAID 4,(c)RAID 5,同位位元,位元3,位元0,位元1,位元2,資料條8,資料條4,資料條0,資料條9,資料條5

38、,資料條1,同位8-11,資料條6,資料條2,資料條10,同位4-7,資料條3,資料條11,資料條7,同位0-3,著作權所有 旗標出版股份有限公司,60,課堂練習,假設在RAID 3中,有四顆資料磁碟D0、D1、D2、D3,及一顆同位磁碟D4。假設今天D2毀損,欲復原D2的內容已知磁碟D0、D1、D3、D4的第一個位元值分別為0、1、1、0請問D2的第一個位元值為多少?,著作權所有 旗標出版股份有限公司,61,練習解答,0110=0,著作權所有 旗標出版股份有限公司,62,7-4 進階主題-網路協定的概念簡介,要讓網路上的兩台機器彼此交換資料,需要處理的事情非常繁複 為了便於設計資料通訊所需的

39、網路軟體,最好的方式就是將這些工作分成不同的層級,由每一層專心地解決自己負責的問題 國際標準組織於1974年定義的OSI模型,就是為了規範每一層軟體的工作 通訊協定就是用來定義每一層的任務與溝通形式,著作權所有 旗標出版股份有限公司,63,圖7-12 OSI參考模型,應用層,表現層,會談層,傳輸層,網路層,資料鏈結層,實體層,應用層,表現層,會談層,傳輸層,網路層,資料鏈結層,實體層,實體通訊,虛擬通訊,著作權所有 旗標出版股份有限公司,64,TCP/IP協定組,目前使用最多的協定組 每1層又包含了功能不同的多個協定傳輸層有TCP、UDP網路層有IP、ICMP 這些協定的實作就稱為通訊協定堆疊

40、,著作權所有 旗標出版股份有限公司,65,圖7-13 TCP/IP的階層結構,應用層(Telnet,FTP,DNS,SMTP,SNMP等),傳輸層(TCP,UDP),網路層(IP,ICMP,ARP等),實體層(裝置驅動程式和硬體,如乙太網路、FDDI等),著作權所有 旗標出版股份有限公司,66,網路裝置的軟體架構,與一般的裝置I/O類似,但除了中斷處理常式與裝置驅動程式外,還會加上針對網路運算所需的通訊協定驅動程式 雖然應用程式同樣是利用檔案描述子來存取網路裝置,但是網路裝置的運算有一組特定的應用程式開發介面,稱為socket介面,著作權所有 旗標出版股份有限公司,67,圖7-14 網路裝置的

41、軟體架構,裝置驅動程式,網路應用程式,Socket介面程式庫,通訊協定驅動程式,網路裝置,網路,著作權所有 旗標出版股份有限公司,68,通訊協定驅動程式,通訊協定驅動程式是屬於作業系統核心的網路子系統接受API或其他上層的協定驅動程式的網路傳輸請求,將資料轉換為符合該協定的格式,然後送給裝置驅動程式或其他下層的協定驅動程式例如透過socket送出的一個TCP會談資料,就會先送給TCP協定驅動程式進行必要的處理之後,再轉送給IP協定驅動程式處理,最後由IP協定驅動程式送給網路裝置驅動程式輸出 中斷處理常式接到中斷並處理完資料的接收之後,會依序往上送給IP協定驅動程式與TCP協定驅動程式,再透過s

42、ocket介面傳給對方的應用程式 每一層協定有其獨特的任務,必須依賴不同的控制資訊,所以需要進行資料轉換例如IP的資料遶送,著作權所有 旗標出版股份有限公司,69,圖7-15 網路裝置的I/O,使用者行程(發送端),Socket系統呼叫,通訊協定驅動程式(作業系統核心),裝置驅動程式,網路卡,使用者行程(接收端),Socket系統呼叫,通訊協定驅動程式(作業系統核心),裝置驅動程式,網路卡,網路,中斷處理常式,著作權所有 旗標出版股份有限公司,70,TCP連線的建立過程,TCP提供的是客戶端與伺服端的連線。伺服端在建立socket之後,會等待客戶端送來連線的請求,然後開始連線的建立三段式斡旋:

43、整個連線建立過程中至少有3次的資料交換伺服端首先會呼叫socket()、bind()、與listen(),準備好接受連線的請求客戶端先呼叫socket(),然後呼叫connect()送出開啟連線的請求,送出SYN的資料段,並且註明連線中資料段的起始序號 伺服端送出對客戶端SYN的確認資料段,以及自己的SYN資料段和這條連線的起始序號。客戶端確認伺服端的SYN,著作權所有 旗標出版股份有限公司,71,圖7-16 TCP的三段式斡旋,客戶端,伺服端,socket,Socket,bind,listen,Accept(暫停),connect(暫停),connect(返回),Accept(返回),時間,

44、SYN J,SYN K,ACK J+1,ACK K+1,著作權所有 旗標出版股份有限公司,72,Socket介面,兩邊的應用程式只要指定對方的位址,並且建立連線之後,就好像是進行一般的裝置I/O一樣 只要透過socket的檔案描述子指定裝置,就可以直接輸出資料給對方,或是由對方輸入資料,著作權所有 旗標出版股份有限公司,73,TCP伺服端的程式範例,int listen_fd,conn_fd;struct sockaddr_in cliaddr,servaddr;listen_fd=socket(AF_INET,SOCK_STREAM,0);servaddr.sin_family=AF_INE

45、T;servaddr.sin_addr.s_addr=htonl(INADDR_ANY);servaddr.sin_port=htons(SERV_PORT);bind(listen _fd,(SA*),著作權所有 旗標出版股份有限公司,74,TCP客戶端的程式範例,int socket_fd;struct sockaddr_in servaddr;socket _fd=socket(AF_INET,SOCK_STREAM,0);servaddr.sin_family=AF_INET;servaddr.sin_addr.s_addr=htonl(SERV_IP);servaddr.sin_po

46、rt=htons(SERV_PORT);connect(socket_fd,(SA,著作權所有 旗標出版股份有限公司,75,7-6實作歷險記-Linux滑鼠驅動程式實作,以匯流排滑鼠為例,介紹如何在Linux中撰寫裝置驅動程式(使用I/O埠0 x300、IRQ 12)範例中的一些基本定義:,#define MYMOUSE_BASE 0 x300/*定義滑鼠使用的I/O埠*/#define MYMOUSE_IRQ 12/*定義滑鼠使用的IRQ*/#define MYMOUSE_NAME“mymouse”/*定義滑鼠的裝置名稱*/#define MYMOUSE_MINOR 100/*定義滑鼠裝置的

47、次要號碼*/struct file_operations mymouse_fops=/*定義滑鼠裝置操作函式的資料結構*/read:read_mymouse,/*定義滑鼠讀取函式的名稱*/open:open_mymouse,/*定義滑鼠開啟函式的名稱*/release:close_mymouse,/*定義滑鼠關閉函式的名稱*/static struct miscdevice my_mouse=/*滑鼠裝置的資料結構*/MYMOUSE_MINOR,MYMOUSE_NAME,著作權所有 旗標出版股份有限公司,76,裝置驅動程式的主要成份,初始化程式中斷處理程式裝置操作程式離開程式,著作權所有 旗標

48、出版股份有限公司,77,初始化函式,int _init mymouse_init(void)/*檢查I/O埠是否有效*/if(check_region(MYMOUSE_BASE,3)return ENODEV;/*註冊I/O埠*/request_region(MYMOUSE_BASE,3,MYMOUSE_NAME);/*註冊裝置檔案*/misc_register(,著作權所有 旗標出版股份有限公司,78,中斷處理函式,interrupt_mymouse()/*使用inb()從I/O埠中讀取滑鼠的輸入資料*/delta_x=inb(MYMOUSE_BASE);delta_y=inb(MYMOUS

49、E_BASE+1);new_buttons=inb(MYMOUSE_BASE+2);if(delta_x|delta_y|new_buttons!=mouse_buttons)/*將讀出的資料累加至全域變數,等待讀取函式處理*/./*喚醒在等待佇列中的行程*/wake_up_interruptible(,著作權所有 旗標出版股份有限公司,79,裝置操作函式-開啟函式,static int open_mymouse(struct inode*inode,struct file*file)/*只允許一個行程使用此裝置*/if(users+)return 0;/*向系統註冊IRQ;最後一個參數是裝置

50、ID,一般填NULL即可*/if(request _irq(MYMOUSE_IRQ,interrupt_mymouse,0,MYMOUSE_NAME,NULL)/*錯誤處理*/./*初始化全域變數*/.return 0;,著作權所有 旗標出版股份有限公司,80,裝置操作函式 讀取函式,static int read_mymouse(struct inode*inode,struct file*file).while(!mouse_event)./*等待發生滑鼠中斷*/interruptible_sleep_on(,著作權所有 旗標出版股份有限公司,81,離開函式,static int clos

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号