




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
匯流排架構裝置管理2本章提要I/O硬件
I/O軟件常見儲存裝置管理范例
網絡裝置
實作歷險記-Linux鼠標驅動程序實作
3裝置管理概論對操作系統(tǒng)的設計者而言,不同設備的管理是操作系統(tǒng)最頭大的工作之一各種裝置的特性差異非常的大一臺計算機可能連接多種不同的裝置,必須要能同時處理不同行程的I/O需求,以盡量提高裝置的使用效率對電腦的使用者與程序設計師而言:裝置管理方面最重要的貢獻是提供高階的邏輯操作界面,使得使用者與設計師不需要去自行了解每種裝置的特性與管理細節(jié)4計算機外設裝置的分類方法依裝置的功能來分:儲存裝置I/O裝置依裝置的資訊儲存方式來分:字元裝置:例如鍵盤、打印機、通訊端口、鼠標等區(qū)塊裝置:例如磁盤、磁帶等依裝置的共用性來分:獨占裝置:例如打印機共用裝置:例如磁盤虛擬裝置:透過某些技術處理,將獨占裝置轉變成看似共享的裝置,以便同時供多個行程存取其他分類方式:例如依照資料傳輸速率分為高速裝置與低速裝置,或是根據通訊對象分為人-機通訊裝置與機器-機器通訊裝置
57-1I/O硬件總線裝置控制器6總線總線:計算機系統(tǒng)用來連接各種裝置的通訊管道最簡單的計算機就是只用一條匯流排來連接所有裝置協(xié)定:規(guī)范在特定時間里,哪個裝置擁有進行通訊的權利匯流排控制器:負責仲裁下個時脈周期該由哪個裝置使用7圖7-1單一總線架構CPU內存圖形顯示控制器磁盤控制器鍵盤控制器屏幕磁盤鍵盤總線8新一代的總線架構PCIexpress目前個人計算機內部最大的速度瓶頸是在傳輸頻寬上:PCI界面與所有的外圍數據傳輸,只能通過一條主要干道來共同分享133MB/s的帶寬專為連接圖形顯示適配器所設計的AGP總線,也逐漸不足PCIExpress架構:使用交換式點對點傳輸技術,每組PCIExpress都有自己的獨立通道,以避免數據傳輸互相干擾的問題。單一信道的傳輸速度為250MB/s,稱為PCIExpressx1,并規(guī)劃有x1、x2、x4、x8、x16、x32...等不同規(guī)格相對于PCIExpress,目前已經在使用的另一種高速總線架構是PCI-X9為什么計算機中要包含多個總線?平行性:可以同時進行多項數據傳輸活動但事實上并沒有這么容易效能:為了因應不同傳輸特性所設計的不同總線PCI總線:在目前典型的個人計算機架構中,用來連接外圍裝置的標準總線AGP總線:專為連接顯示適配器與CPU所設計前端總線:用來優(yōu)化CPU與內存間的傳輸擴充總線:用來聯(lián)絡鍵盤、并列端口/串行端口等較慢速裝置10圖7-2個人計算機常見的總線架構CPU內存圖形顯示控制器IDE磁盤控制器屏幕磁盤鍵盤PCI總線AGP總線系統(tǒng)芯片內存總線磁盤磁盤磁盤網絡控制器網絡擴充匯流排界面擴充總線串行端口控制器Com1并列埠控制器打印機前端總線11裝置控制器裝置控制器:接收CPU傳送的高階存取命令,并處理實際的存取動作每種裝置都有其專屬的I/O控制器,而一個控制器通常可以控制多個相同的裝置通常包含數個資料與位址的緩存器CPU與控制器的溝通:對這些緩存器進行讀寫常用的緩存器訪問方法:連接埠I/O內存映像I/O有些系統(tǒng)會同時使用這兩種方法
12實作討論—PC的I/O端口地址個人計算機常用的一些I/O端口地址:I/O端口地址范圍(16進位)裝置000-00FDMA控制器020-021中斷控制器040-043定時器200-20F游戲控制器2F8-2FF次要串行埠320-32F磁盤控制器378-37F并行端口3D0-3DF圖形顯示控制器3F0-3F7軟盤控制器3F8-3FF主要串行埠13I/O控制器中的緩存器種類狀態(tài)緩存器:用來表示裝置目前的狀態(tài),例如命令是否已經執(zhí)行完畢控制緩存器:控制裝置的運作模式,例如要以全雙工/半雙工運作,或是設定數據傳輸速率等資料輸入緩存器:用來存放要讀入系統(tǒng)的數據資料輸出緩存器:用來存放要輸出到裝置的數據14I/O與CPU間的溝通方式忙碌等待讓CPU在送出一個資料字組的I/O命令之后就持續(xù)檢查控制器上的狀態(tài)緩存器,直到I/O完成中斷I/O控制器在完成一個數據字組的I/O運算之后,會從特定的中斷線路中送出中斷信號CPU偵測到中斷信號時,會先執(zhí)行中斷處理程序必須賦予中斷不同的優(yōu)先順序DMA:直接內存訪問系統(tǒng)會將包含傳輸來源地址、目的地址、與資料量的DMA指令交給DMA控制器,然后繼續(xù)進行其他的工作DMA控制器會在完成整批數據的傳輸之后,再送出中斷給CPU15圖7-3數據輸入的3種技術送出讀取命令讀取I/O的狀態(tài)檢查狀態(tài)從I/O控制器讀取字組將字組寫入記憶體完成所有資料傳送?讀取錯誤就緒未就緒是否下個指令(a)忙碌等待送出讀取命令CPU去做其他事情讀取I/O的狀態(tài)檢查狀態(tài)從I/O控制器讀取字組將字組寫入記憶體完成所有資料傳送?讀取錯誤就緒是否下個指令(b)中斷I/O控制器送出中斷送出讀取命令給DMACPU去做其他事情讀取DMA的狀態(tài)下個指令(c)DMADMA控制器送出中斷16實作討論—PC上的中斷IRQ是InterruptRequest(中斷請求)的縮寫;對應到裝置控制器傳送信號給CPU時所使用的中斷線編號IRQ沖突發(fā)生在兩種不同的外圍裝置選擇同一條IRQ線路的時候微軟在1995年開始在Windows操作系統(tǒng)中支持隨插即用(PnP)的功能,能夠讓周邊裝置自動找到尚未被使用的IRQ,以協(xié)助解決IRQ沖突的問題17圖7-4IRQ范例畫面18ISA總線默認的IRQ值IRQ裝置IRQ裝置0系統(tǒng)定時器8實時時鐘1鍵盤9閑置2用來串聯(lián)至IRQ8至15,目前已被重導至IRQ910閑置3串行端口(COM2)11閑置4串行端口(COM1)12PS/2鼠標5閑置13數值協(xié)處理器6磁盤控制器14主IDE控制器7并列埠(LPT1)15次IDE控制器IRQ0到7中,編號越小者,代表其優(yōu)先權越高,但IRQ8到15的優(yōu)先權則相當于是IRQ2197-2I/O軟件I/O軟件的目標:裝置獨立性:除了直接與裝置溝通的最底層軟件之外,其他部份的軟件設計都與硬件特性無關統(tǒng)一命名原則:對不同的裝置使用統(tǒng)一的邏輯命名原則,讓高階的應用程序在使用不同裝置的時候,不需要使用不同的命名規(guī)則。
Ex:在Unix下,將軟盤掛載在/usr/ast/backup,然后使用正常的檔案拷貝命令:cp/usr/ast/backup最好還能使用相同的一組基本原式來存取所有的裝置20實作討論—Unix操作系統(tǒng)的I/O函式Unix提供行程兩種進行輸入/輸出的方法:標準I/O鏈接庫:一組高階界面,例如printf()與scanf()I/O系統(tǒng)呼叫:直接與操作系統(tǒng)核心相連的較低階函式在某些情況下,應用程序仍需要針對特定硬件執(zhí)行某些運算。因此,Unix還提供了ioctl系統(tǒng)呼叫例如,下列命令可以將fd所指向之終端機的窗口大小設為tty_winsize的值:ioctl(fd,TIOCSWINSZ,(char*)&tty_winsize);21I/O系統(tǒng)呼叫中最常用到的幾個函式open:以指定的模式來開啟檔案(或是裝置、網絡界面)intopen(char*pathname,intoflag[,intmode]);creat:以指定的模式來建立新的檔案intcreat(char*pathname,intmode);close:關閉指定的檔案intclose(int);read:將指定長度(以字節(jié)為單位)的數據讀入指定的位置intread(int,char*buff,unsignedintnbytes);write:依照指定的長度,將指定位置的數據從檔案描述子寫出intwrite(int,char*buff,unsignedintnbytes);22I/O軟件結構為了達到裝置獨立的目標,大多數的I/O管理軟件會再細分為幾個層級常見的分法是由低而高細分為:中斷處理程序裝置驅動程序系統(tǒng)軟件使用者層級的應用軟件23圖7-5I/O軟件的層級硬件中斷處理程序使用者層級I/O軟件核心I/O子系統(tǒng)設備驅動器I/O請求傳回I/O結果24中斷處理程序中斷的處理必須完全由作業(yè)系統(tǒng)負責,因為:中斷會打斷使用者行程的正常執(zhí)行中斷的發(fā)生并不在使用者行程的預期之中中斷的處理流程:操作系統(tǒng)會先將目前正在執(zhí)行的指令完成,然后確認中斷是否發(fā)生如果確實有發(fā)生中斷,操作系統(tǒng)會將目前行程執(zhí)行的相關信息儲存在系統(tǒng)堆棧中,然后跳到中斷處理程序在中斷例程結束之后,操作系統(tǒng)會取出堆棧中的信息,從被中斷的地方開始繼續(xù)執(zhí)行原本的行程25圖7-6I/O中斷的處理流程裝置控制器或DMA控制器送出中斷CPU完成目前的指令CPU確認中斷將行程控制信息存入堆棧執(zhí)行中斷處理程序取出行程控制信息繼續(xù)執(zhí)行原本行程26中斷處理程序設計的考慮一方面希望盡快完成這次硬件中斷的處理,以便讓CPU能夠盡快處理其他的任務例如處理在這段時間中發(fā)生的其他中斷另一方面,I/O的中斷又可能會需要處理大量的資料可能的做法:將中斷處理的工作分成兩個階段,先在第一階段以高優(yōu)先序做完必要的緊急處理,再將后續(xù)的處理工作放入較低優(yōu)先序的中斷處理隊列,就不會耽誤到其他高優(yōu)先序中斷的處理時機27實作討論—Windows的中斷處理裝置發(fā)生中斷時,Windows2000/XP核心會在中斷向量表中搜尋對應的中斷處理程序(ISR),并且將控制權轉交給該例程ISR具有高優(yōu)先的中斷請求等級:所做的工作越簡短越好主要任務是去取得裝置的狀態(tài),將負責后續(xù)處理的低請求等級任務(稱為延遲過程調用,DPC)放入隊列,并且清除裝置的中斷信號,然后結束當輪到DPC執(zhí)行時DPC會完成整個中斷的處理,并且視情況需要,啟動下一個在該裝置隊列中等待的I/O請求好處在于優(yōu)先級介于ISR與DPC請求等級之間的中斷,就可以在DPC執(zhí)行之前發(fā)生28實作討論—Linux的中斷處理Linux操作系統(tǒng)也是將中斷處理分為兩個階段硬體中斷處理程序:執(zhí)行與硬件的溝通,通常是用來處理有時間急迫性的問題軟體中斷:負責真正的數據處理Linux2.4版開始提供了tasklet:在硬件中斷處理中會產生一個tasklet,然后在軟體中斷啟動時執(zhí)行在多處理器系統(tǒng)中,許多處理器可能會同時叫用相同的中斷處理程序,由于每個中斷會產生自己的tasklet,就可以避免單一軟件處理程序在執(zhí)行過程中發(fā)生重新進入(reentrant)的問題。29設備驅動器目的:將裝置間的差異封裝起來,對外提供一組標準的溝通界面,而內部則是根據不同裝置的特性量身訂做可以簡化操作系統(tǒng)設計者的工作,不需要去了解各種裝置的控制細節(jié)可以讓硬件廠商更容易推出新的裝置—只要提供新的驅動程序就可以使用不同操作系統(tǒng)的設備驅動器接口各有不同,所以一個裝置需要多種版本的驅動程序作業(yè)系統(tǒng)多半會為同一類裝置提供一個通用的設備驅動器如果要充分發(fā)揮特定裝置本身的效能,最好是選擇廠商所開發(fā)的驅動程序30設備驅動器的組成初始化程序:在驅動程序加載時,進行驅動程序的初始化工作,建立對應的系統(tǒng)對象,供操作系統(tǒng)識別與呼叫驅動程序之用裝置操作程序:裝置一般運作所需的相關功能,例如開啟、關閉、讀取、寫入、控制等運算。中斷處理程序:處理裝置中斷的程序,通常包含比較立即的處理程序,與優(yōu)先權較低的處理程序,例如Windows的ISR與DPC。離開程序:將裝置關閉并釋放系統(tǒng)資源。31核心I/O子系統(tǒng)核心I/O子系統(tǒng)的典型工作:提供應用程序統(tǒng)一的接口排程裝置的保護緩沖快取錯誤處理32提供應用程序統(tǒng)一的接口I/O軟件的重要目標例如在Unix系統(tǒng)中,裝置名稱的表示方式與檔名相同(如/dev/tty01),而其對應的控制信息中則包含了主要號碼與次要號碼主要號碼:代表裝置所鏈接的驅動程序例如主要號碼為1的/dev/null就是由驅動程序1負責管理次要號碼:用來辨識屬于同一類型的裝置有些驅動程序可以同時管理多個裝置,就必須利用次要號碼來加以辨識33排程確保行程間的公平性:至少不要發(fā)生饑餓現象設法對裝置做最有效的運用例如適當的安排磁盤I/O的請求,以降低磁盤的搜尋時間根據任務的特性,賦予I/O請求不同的優(yōu)先級例如虛擬內存的分頁I/O請求,就應該比一般應用程序的I/O請求優(yōu)先34裝置的保護不讓沒有權限的用戶存取裝置例如在Unix操作系統(tǒng)中,就是使用跟檔案權限控管相同的方式,針對裝置檔案設定「讀-寫-執(zhí)行」(rwx)的權限避免使用者執(zhí)行錯誤的I/O運算例如對只能進行輸入的裝置(例如鍵盤)進行輸出運算在Unix中,可以將/dev/kb(鍵盤)設為「r-x」。當用戶嘗試開啟裝置檔案時,操作系統(tǒng)會去比對用戶所要求的運算與裝置的訪問權限是否符合,并且在沒有這個權限(例如寫入權限)時,拒絕使用者的要求注意獨占裝置有互斥的要求在行程嘗試開啟獨占裝置的時候,去檢查是否能接受該請求。當裝置已經被其他行程使用的時候,就必須拒絕這個請求,或是利用周邊并行之類的處理機制來解決35外圍并行技術用緩沖區(qū)暫時存放外圍裝置的數據,以便讓不能同時共享的裝置,提高其并行處理的能力最典型范例:打印機雖然同時可能有多個使用者需要打印,但我們并不希望它將所有的文件混在一起印出來目前的做法是將所有打印運算都先以暫存盤的形式儲存在外圍并行專用的隊列中,當打印機完成一份數據的打印之后,外圍并行系統(tǒng)會再從隊列中取出一個新的打印作業(yè),傳送給打印機對于磁帶與打印機等無法應付同時來自多個行程之I/O請求的裝置非常有用。36緩沖能夠避免置換問題當使用者行程想要從某個裝置讀入數據區(qū)塊時,通常會進入懸置狀態(tài),等待完成之后再被喚醒。此時如果直接將讀入的數據放入行程的數據結構中,在數據輸入的過程中,行程必須保留在主內存中會干擾到操作系統(tǒng)的置換運算數據輸入的緩沖:將數據先讀到系統(tǒng)預留的緩沖區(qū)中,等輪到該行程執(zhí)行的時候,再透過內存搬移的功能,將數據復制到行程的內存地址資料輸出的緩沖:先將數據復制到系統(tǒng)的緩沖區(qū)中,然后再進行實際的數據傳輸工作可以用來改善行程執(zhí)行效率預先讀?。合到y(tǒng)在將數據搬移給行程之后,馬上啟動下一個區(qū)塊的輸入運算,以減少行程等待下一個區(qū)塊的時間雙重緩沖:為每個I/O操作指定兩個系統(tǒng)緩沖區(qū)。當系統(tǒng)正在讀取或輸出一個緩沖區(qū)的數據時,用戶行程可以進行另一個緩沖區(qū)的數據搬移動作37圖7-7輸入的緩沖范例操作系統(tǒng)周邊裝置使用者行程a.無緩沖區(qū)b.單一緩沖c.雙重緩沖數據進入數據進入數據進入數據搬移數據搬移38快取用較快速的儲存裝置,來存放較慢速裝置中的數據,以便節(jié)省數據存取的時間Ex.內存就扮演磁盤的快取角色當快取都已經填滿,但又有新的數據區(qū)塊要儲存時,就必須取代掉一個原有的區(qū)塊同樣可以使用頁面替換算法來解決當磁盤放在快取中的資料發(fā)生修改時:直接寫回:在快取發(fā)生修改之后,立刻就寫回磁盤,并且在完成寫入之后,行程才會從寫入運算中返回可降低兩者不一致的機會延遲寫回:在數據寫入快取后就讓行程繼續(xù),然后等適當的時機,再由系統(tǒng)將數據寫回磁盤可降低對效能的沖擊這是沒有經過關機就直接切斷電源,有時候會造成某些檔案毀損的原因之一39緩沖vs.快取緩沖與快取是兩個不同的功能,但是因為有時候可以用同一機制達成這兩個功能,所以很容易造成混淆例如當操作系統(tǒng)劃出一塊區(qū)域做為磁盤數據的緩沖區(qū)時,它們同樣也可以當作快取,用來保存一些常用或共享的檔案當作業(yè)系統(tǒng)收到I/O請求時,它會先檢查這部份的數據是否已經在內存中40錯誤處理一般而言,大多數的I/O錯誤都與裝置有關,因此,也只有驅動程序知道該如何處理作業(yè)系統(tǒng)只能解決一些暫時性的錯誤,例如因為網絡不穩(wěn)定造成暫時性地傳輸失敗如果是操作系統(tǒng)無法解決的問題,它會將錯誤回報給行程,再由行程顯示適當的訊息給用戶41圖7-8Windows檔案總管的錯誤訊息范例42使用者層級I/O軟件應用程序會使用到一些屬于使用者層級的函式庫例如C語言中的printf()這些輸入/輸出函式的工作,主要是把I/O相關的參數放到適合的位置,由其他的I/O軟件來完成真正的工作例如printf()會根據指定的格式與變量,組成一個ASCII的字符串,然后交給write()這個系統(tǒng)呼叫來輸出43I/O請求的處理流程行程透過I/O函式送出I/O請求。核心I/O子系統(tǒng)檢查參數的正確性。如果是輸入運算的話,系統(tǒng)會檢查在緩沖區(qū)中是否已經有數據了。如果還沒有數據,就送出請求給裝置驅動程序。設備驅動器會送出命令給裝置控制器??刂破鲿O(jiān)督裝置,等到I/O完成就產生中斷。操作系統(tǒng)呼叫中斷處理程序,中斷例程儲存必要信息(如狀態(tài)與數據)之后,會送出信號給裝置驅動程序。設備驅動器將I/O結果回傳給I/O子系統(tǒng)。核心會將數據拷貝到行程的地址空間,并且將行程從等待隊列移到就緒隊列。44圖7-9I/O請求的處理流程送出I/O請求是否已有所需資料送出請求給設備驅動器行程視需要進入懸置狀態(tài)傳送適當的命令給控制器監(jiān)控裝置I/O完成,產生中斷擷取狀態(tài)與數據送出信號給驅動程序傳回I/O狀態(tài)信息傳送數據或錯誤訊息給行程I/O完成裝置控制器中斷處理器設備驅動器核心I/O子系統(tǒng)使用者行程核心I/O子系統(tǒng)系統(tǒng)呼叫否是自系統(tǒng)呼叫返回中斷45常見儲存裝置管理范例–磁盤決定硬盤存取效能的因素:搜尋時間:將讀寫頭移到指定磁道準備讀取所需的時間旋轉延遲:等待磁道上特定數據旋轉至讀寫頭下方所需的時間,其平均值為磁盤旋轉一圈時間的1/2傳輸時間:數據由磁盤實際傳送到內存的時間跟磁盤轉速、單一磁道可存放數據量、和存取的資料量有關假設磁盤的轉速是R(rpm,每分鐘旋轉的圈數),每一磁道上包含N個字節(jié),且所需的數據量為B個字節(jié),則傳輸時間會等于:(B/N)*(60/R)46磁盤訪問時間的討論已知某磁盤的平均搜尋時間為10ms,旋轉速度是每分鐘10,000轉,每個扇區(qū)有512字節(jié),每個磁道有320個扇區(qū)范例一:假設所需傳送的檔案共有40個扇區(qū),并且位于磁盤上的連續(xù)位置,則預估讀出檔案所需的時間為:搜尋時間+訪問時間+傳輸時間=10ms+0.5*60/10000s+(40/320)*(60/10000)s13.75ms范例二:假設所需檔案的大小只有1個扇區(qū),則預估讀出檔案所需的時間為:
10ms+0.5*60/10000s+(1/320)*(60/10000)s13.01ms范例三:假設所需的檔案共有40個扇區(qū),但每個扇區(qū)都是位于不連續(xù)的磁道上,則預估讀出檔案所需的時間為:
(10ms+0.5*60/10000s+(1/320)*(60/10000)s)*40520.75ms由上可知,在傳輸數據的時候,除非數據量真的相當龐大,否則影響讀取時間最重要的因素,是搜尋時間與延遲時間,而不是所需存取的資料量47課堂練習已知某磁盤的平均搜尋時間為8ms,每轉一圈的時間為6ms,每個扇區(qū)有512字節(jié),每個磁道有320個扇區(qū)假設所需傳送的檔案共有80個扇區(qū),請分別估計這80個扇區(qū)是位于連續(xù)位置或不同磁道時,讀出檔案所需的時間。48練習解答連續(xù)8+0.5*6+(80/320)*6=12.5ms不連續(xù)(8+0.5*6+(1/320)*6)*80=881.5ms49磁盤的排程當系統(tǒng)同時收到多個I/O請求的時候,如何進行適當的排程,以減少讀寫頭的移動距離,對I/O的效能會產生很大的影響磁盤的排程算法:FIFO:依序將磁盤I/O請求隊列中的請求取出優(yōu)先權式:重點不是要讓磁盤的使用優(yōu)化,而是要符合操作系統(tǒng)的其他目標SSTF:以磁頭目前的位置為基礎,選取目標位于距離最近之磁柱的I/O請求SCAN:讓讀寫頭在磁盤最內側與最外側磁柱間來回移動,并且在移動的過程中依序執(zhí)行對所經磁道的I/O請求C-SCAN:SCAN的改良;在讀寫頭抵達一側之后,就立刻把它拉回另一側,重新進行存取LOOK:完成目前掃描方向最遠的I/O請求之后就回頭C-LOOK:LOOK版本的C-SCAN50磁盤排程算法范例假設目前讀寫頭的位置為88,且目前隊列中各請求所需的磁柱編號為:12、58、96、74、66、120FIFO磁頭移動的順序:881258967466120磁頭的總位移:
|88-12|+|12-58|+|58-96|+|96-74|+|74-66|+|66-120|=244SSTF磁頭移動的順序:889674665812120磁頭的總位移:
|88-96|+|96-74|+|74-66|+|66-58|+|58-12|+|12-120|=200雖然表現要比FIFO好得多,但未必能達到最佳的位移量(本例為140)51磁盤排程算法范例(2)SCAN磁頭移動的順序(假設磁頭正好是從88往0移動):8874665812096120磁頭的總位移:88+120=208C-SCAN磁頭移動的順序(假設最外側的磁道是255):8874665812025512096磁頭的總位移:88+255+|96-255|=50252磁盤排程算法范例(3)LOOK磁頭移動的順序(假設磁頭正好是從88往0移動):887466581296120磁頭的總位移:|88-12|+|12-120|=184C-LOOK磁頭移動的順序(假設最外側的磁道是255):887466581212096磁頭的總位移:|88-12|+|12-120|+|120-96|=208適用情況:SCAN系列算法適用于存取請求平均分布于磁盤各部位的情況LOOK系列的算法適用于要求存取的位置比較集中在磁盤中間部位的情況53課堂練習假設磁盤驅動器具有4000個磁住,編號從0到3999,現今磁頭正在服務磁柱25的要求,而前一次的要求是磁柱105。如果隊列中未服務的要求以FIFO的次序排列如下:
10、1500、950、175
由目前的讀寫頭位置開始,對于下列的每一種磁盤排程算法,它的磁盤臂的移動方式與總移動距離(以磁柱數為單位)是多少?SSTFSCANC-SCANLOOKC-LOOK54練習解答SSTF:150525101759501500SCAN:1525251001759501500C-SCAN:78482510039991500950175LOOK:150525101759501500C-LOOK:28302510150095017555RAID將數個磁盤串接在一起,將并行處理的觀念應用在I/O上,以改善儲存裝置的效能與可靠度資料切條:對虛擬磁盤資料加以切割,平均分配給多個實體磁盤儲存切割出來的邏輯單位就稱為資料條雖然RAID利用資料切條的技術,大幅提高I/O平行處理的能力,但是這并不是說,包含4個磁盤的RAID,就可以達到4倍的I/O速度受到磁盤與內存間傳輸路徑的帶寬限制受到I/O請求的數據分布影響56RAID架構RAID0:邏輯區(qū)塊沒有重復,無復原能力,適合數據重要性較低,但需要高I/O效能的應用RAID1:邏輯區(qū)塊鏡像,磁盤故障時可迅速切換并繼續(xù)運作,適合非常重要的檔案RAID2:位數據條的并行存取,使用漢明碼檢查,目前未使用RAID3:位數據條的并行存取,使用同位碼檢查,適合大量數據傳輸需求的應用同位位的計算:假設RAID中包含5個磁盤,D0到D3存放數據,D4存放同位位,則第i個同位位的計算方式為:
D4(i)=D0(i)D1(i)D2(i)D3(i),:表互斥運算如果磁盤D3發(fā)生故障,則可以求出D3的內容為:
D3(i)=D0(i)D1(i)D2(i)D4(i)57RAID架構(2)RAID4:邏輯區(qū)塊的獨立存取,使用同位碼檢查,目前未使用同位磁盤可能成為瓶頸新的同位位的計算:假設D4是用來存放同位位的磁盤,且磁盤D1運算前后的位值為D1與D1’D4’(i)=D1(i)D1’(i)D4(i)RAID5:邏輯區(qū)塊的獨立存取,使用同位碼檢查,適合I/O請求量大的系統(tǒng)58圖7-10RAID架構-1資料條8資料條4資料條0資料條9資料條5資料條1資料條10資料條6資料條2資料條11資料條7資料條3(a)RAID0(b)RAID1(c)RAID2資料條8資料條4資料條0資料條9資料條5資料條1資料條10資料條6資料條2資料條11資料條7資料條3資料條8資料條4資料條0資料條9資料條5資料條1資料條10資料條6資料條2資料條11資料條7資料條3漢明碼0漢明碼1漢明碼2位3位0位1位259同位16-19資料條16資料條17資料條18資料條19資料條12同位12-15資料條13資料條14資料條15圖7-11RAID架構-2(a)RAID3(b)RAID4(c)RAID5同位位位3位0位1位2資料條8資料條4資料條0資料條9資料條5資料條1資料條10資料條6資料條2資料條11資料條7資料條3同位8-11同位4-7同位0-3資料條8資料條4資料條0資料條9資料條5資料條1同位8-11資料條6資料條2資料條10同位4-7資料條3資料條11資料條7同位0-360課堂練習假設在RAID3中,有四顆數據磁盤D0、D1、D2、D3,及一顆同位磁盤D4。假設今天D2毀損,欲復原D2的內容已知磁盤D0、D1、D3、D4的第一個位值分別為0、1、1、0請問D2的第一個位值為多少?61練習解答0110=0627-4進階主題-網絡協(xié)議的概念簡介要讓網絡上的兩臺機器彼此交換數據,需要處理的事情非常繁復為了便于設計數據通訊所需的網絡軟件,最好的方式就是將這些工作分成不同的層級,由每一層專心地解決自己負責的問題國際標準組織于1974年定義的OSI模型,就是為了規(guī)范每一層軟件的工作通訊協(xié)定就是用來定義每一層的任務與溝通形式63圖7-12OSI參考模型應用層表現層會談層傳輸層網絡層數據鏈結層物理層應用層表現層會談層傳輸層網絡層數據鏈結層物理層實體通訊虛擬通訊64TCP/IP協(xié)定組目前使用最多的協(xié)議組每1層又包含了功能不同的多個協(xié)議傳輸層有TCP、UDP…網絡層有IP、ICMP…這些協(xié)定的實作就稱為通訊協(xié)議堆棧65圖7-13TCP/IP的階層結構應用層(Telnet,FTP,DNS,SMTP,SNMP等)傳輸層(TCP,UDP)網絡層(IP,ICMP,ARP等)物理層(設備驅動器和硬件,如以太網絡、FDDI等)66網絡裝置的軟件架構與一般的裝置I/O類似,但除了中斷處理程序與設備驅動器外,還會加上針對網絡運算所需的通訊協(xié)定驅動程序雖然應用程序同樣是利用檔案描述子來存取網絡裝置,但是網絡裝置的運算有一組特定的應用程序開發(fā)接口,稱為socket界面67圖7-14網絡裝置的軟件架構設備驅動器網絡應用程序Socket接口鏈接庫通訊協(xié)議驅動程序網絡裝置網絡68通訊協(xié)議驅動程序通訊協(xié)議驅動程序是屬于操作系統(tǒng)核心的網路子系統(tǒng)接受API或其他上層的協(xié)議驅動程序的網絡傳輸請求,將數據轉換為符合該協(xié)議的格式,然后送給設備驅動器或其他下層的協(xié)議驅動程序例如透過socket送出的一個TCP會談資料,就會先送給TCP協(xié)議驅動程序進行必要的處理之后,再轉送給IP協(xié)議驅動程序處理,最后由IP協(xié)議驅動程序送給網絡設備驅動器輸出中斷處理程序接到中斷并處理完數據的接收之后,會依序往上送給IP協(xié)定驅動程序與TCP協(xié)議驅動程序,再透過socket接口傳給對方的應用程序每一層協(xié)議有其獨特的任務,必須依賴不同的控制信息,所以需要進行數據轉換例如IP的資料遶送69圖7-15網絡裝置的I/O使用者行程(發(fā)送端)Socket系統(tǒng)呼叫通訊協(xié)議驅動程序(操作系統(tǒng)核心)設備驅動器網絡卡使用者行程(接收端)Socket系統(tǒng)呼叫通訊協(xié)議驅動程序(操作系統(tǒng)核心)設備驅動器網絡卡網絡中斷處理程序70TCP聯(lián)機的建立過程TCP提供的是客戶端與伺服端的聯(lián)機。伺服端在建立socket之后,會等待客戶端送來聯(lián)機的請求,然后開始聯(lián)機的建立三段式斡旋:整個聯(lián)機建立過程中至少有3次的數據交換伺服端首先會呼叫socket()、bind()、與listen(),準備好接受聯(lián)機的請求客戶端先呼叫socket(),然后呼叫connect()送出開啟聯(lián)機的請求,送出SYN的數據段,并且注明聯(lián)機中數據段的起始序號伺服端送出對客戶端SYN的確認數據段,以及自己的SYN數據段和這條聯(lián)機的起始序號??蛻舳舜_認伺服端的SYN71圖7-16TCP的三段式斡旋客戶端伺服端socketSocket,bind,listenAccept(暫停)connect(暫停)connect(返回)Accept(返回)時間SYNJSYNK,ACKJ+1ACKK+172Socket界面兩邊的應用程序只要指定對方的地址,并且建立聯(lián)機之后,就好像是進行一般的裝置I/O一樣只要透過socket的檔案描述子指定裝置,就可以直接輸出資料給對方,或是由對方輸入數據73TCP伺服端的程序范例 intlisten_fd,conn_fd; structsockaddr_incliaddr,servaddr; listen_fd=socket(AF_INET,SOCK_STREAM,0); servaddr.sin_family=AF_INET; servaddr.sin_addr.s_addr=htonl(INADDR_ANY); servaddr.sin_port=htons(SERV_PORT); bind(listen_fd,(SA*)&servaddr,sizeof(servaddr)); listen(listen_fd,LISTENQ); conn_fd=accept(listen_fd,(SA&)&cliaddr,&clilen);
for(;;) { read_cnt=read(conn_fd,buf,sizeof(buf)); if(read_cnt==0) return(0); printf(“%s”,buf); }74TCP客戶端的程序范例 intsocket_fd; structsockaddr_inservaddr;
socket_fd=socket(AF_INET,SOCK_STREAM,0);
servaddr.sin_family=AF_INET; servaddr.sin_addr.s_addr=htonl(SERV_IP); servaddr.sin_port=htons(SERV_PORT);
connect(socket_fd,(SA&)&servddr,sizeof(servaddr));
while(gets(buf)!=NULL) write_cnt=write(socket_fd,buf,strlen(buf)+1);757-6實作歷險記-Linux鼠標驅動程序實作以總線鼠標為例,介紹如何在Linux中撰寫設備驅動器(使用I/O埠0x300、IRQ12)范例中的一些基本定義:#defineMYMOUSE_BASE0x300/*定義鼠標使用的I/O埠*/#defineMYMOUSE_IRQ12/*定義鼠標使用的IRQ*/#defineMYMOUSE_NAME“mymouse”/*定義鼠標的裝置名稱*/#defineMYMOUSE_MINO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)課題申報書范例
- 區(qū)級教師課題申報書
- 合同范本修訂
- 合伙分紅合同范本
- 微課題申報書
- 教改課題申報書怎么填
- 銜接課題申報書范文
- 員工持股合同范本
- 國家申報書課題名稱結構
- 個人購酒合同范本
- 2025年共青科技職業(yè)學院單招職業(yè)適應性測試題庫完整版
- 2025年上半年潛江市城市建設發(fā)展集團招聘工作人員【52人】易考易錯模擬試題(共500題)試卷后附參考答案
- 旋轉類機電設備故障預測、診斷研究
- 2024年江西應用工程職業(yè)學院單招職業(yè)技能測試題庫標準卷
- 新媒體營銷(第三版) 課件全套 林海 項目1-6 新媒體營銷認知-新媒體營銷數據分析
- 愚公移山英文 -中國故事英文版課件
- 美制統(tǒng)一螺紋表UNC_UNF DS
- 2012年北京大學醫(yī)學部外國留學生本科入學考試
- 七年級英語閱讀理解50篇(附答案)
- 乙酸乙酯的制備ppt課件
- 音樂之聲中英文臺詞
評論
0/150
提交評論