操作系統(tǒng)原理-設備管理_第1頁
操作系統(tǒng)原理-設備管理_第2頁
操作系統(tǒng)原理-設備管理_第3頁
操作系統(tǒng)原理-設備管理_第4頁
操作系統(tǒng)原理-設備管理_第5頁
已閱讀5頁,還剩137頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

設備管理第八章設備管理教學內容設備管理概念設備分配緩沖技術磁盤組織與管理Linux緩沖技術I/O控制設備驅動機制設備阻塞工作模式Linux塊設備I/O調度微內核系統(tǒng)的設備管理教學重點設備分配緩沖技術Linux緩沖技術設備驅動機制設備阻塞工作模式教學難點Linux緩沖技術設備阻塞工作模式8.1設備管理概念

8.1設備管理概念教學內容設備分類設備管理的目標設備管理的功能8.1.1設備分類

8.1.1設備分類1.按交互對象分類人機交互類設備:顯示器、鍵盤、鼠標、打印機、手寫板、觸摸屏等。與環(huán)境交互的設備:主要指傳感器設備,典型的有溫度傳感器(位于主機機箱內測試CPU的工作溫度)、電量傳感器(筆記本計算機內檢測電池電量)、壓力傳感器(手寫板或觸摸屏含有)等。與CPU交互的設備:磁盤、軟盤、光盤、定時器、中斷模塊等。需要注意的是,CPU需要通過接口電路連接這些設備。與計算機交互的設備:主要是通信設備,包括網(wǎng)卡、串口、并口、調制解調器等。8.1.1設備分類2.按交互方向分類交互方向是站在CPU的角度來定義的。輸入設備:鍵盤、鼠標、掃描儀等是主機常見輸入設備。主機內還有很多其他輸入設備。輸出設備:顯示設備、打印機。主機內也還有很多其他輸出設備。雙向設備:硬盤、軟盤、網(wǎng)卡、串口、并口等。嚴格意義上來講,串口、并口僅僅是通信接口,上面會連接相應的串口設備和并口設備。存儲型設備:主要有硬盤、軟盤、光盤、U盤等,用于存儲文件和數(shù)據(jù)。8.1.1設備分類3.按數(shù)據(jù)傳輸率分類速度的高低沒有絕對定量標準,大致的劃分低速設備:1KB/s以下的設備,如鍵盤等。中速設備:1KB/s到1MB/s間的設備,如打印機。高速設備:超過1MB/s的設備,如網(wǎng)卡、磁盤。8.1.1設備分類4.按信息組織特征分類字符設備:這類設備傳輸?shù)幕締挝皇亲址?,像鍵盤、串口。塊設備:這類設備基本是存儲型設備,塊是存儲的基本單位,也是I/O傳輸?shù)幕締挝?。網(wǎng)絡設備:網(wǎng)絡設備采用socket套接字接口訪問。網(wǎng)絡設備在全局空間用唯一的名字,如eth0、eth1指代。8.1.2設備管理的目標

8.1.2設備管理的目標設備管理的目標提高設備的利用率提高設備讀寫效率提高CPU與設備并行程度為用戶提供統(tǒng)一接口實現(xiàn)設備對用戶透明8.1.3設備管理的功能

8.1.3設備管理的功能設備管理的功能狀態(tài)跟蹤設備分配設備映射設備控制緩沖區(qū)管理8.1.3設備管理的功能狀態(tài)跟蹤為設備管理器生成核心數(shù)據(jù)結構設備控制塊(DeviceControlBlock,DCB),用于記錄設備的基本屬性、狀態(tài)、操作接口以及進程與設備之間的交互信息等。8.1.3設備管理的功能設備分配當多個進程需要競爭使用設備時,系統(tǒng)按一定策略安全地分配和管理各種設備,使系統(tǒng)有序運行。按照相應的分配算法把設備分配給請求該設備的進程,并把未分配到設備的進程放入設備的等待隊列。分配設備的過程實際是按照特定算法遍歷設備控制表的I/O請求隊列,選擇其中一個進程給其分配設備,并喚醒它的過程,同時會記錄設備的使用情況。8.1.3設備管理的功能設備映射設備映射就是把邏輯設備轉換到物理設備。對用戶來說,真實而具體的物理設備對用戶是透明的,用戶編寫程序時并不需要考慮具體的物理設備的名稱、連接位置、工作方式和原理。邏輯設備就是面向用戶的,能完成一定功能,且具有一組特定接口的設備。邏輯設備也可以說是物理設備的抽象。設備的獨立性用戶使用邏輯設備的統(tǒng)一接口去訪問設備,而不用考慮物理設備復雜而特殊的物理操作方式和結果。8.1.3設備管理的功能設備驅動設備管理需要實現(xiàn)對物理設備的驅動和控制,實現(xiàn)最終的I/O操作,完成數(shù)據(jù)傳輸。設備驅動程序介于應用程序與設備的I/O操作命令之間,前者更多采用C語言編寫,后者更多采用匯編語言編寫。用戶通過邏輯設備的統(tǒng)一接口調用設備驅動程序,驅動程序則會把每個接口和參數(shù)都轉化為一組I/O命令,然后控制設備以特定的方式與CPU或內存進行數(shù)據(jù)交換。8.1.3設備管理的功能緩沖區(qū)管理為了緩解外部設備和CPU之間速度不匹配的問題,設備管理功能會在系統(tǒng)中開設一定大小的緩沖區(qū)來暫放數(shù)據(jù),提供包括緩沖區(qū)的遍歷、查找、數(shù)據(jù)更新和回寫等操作,同時為進程提供獲得和釋放緩沖區(qū)的手段。8.2設備分配

8.2設備分配教學內容獨享分配共享分配虛擬分配SPOOLing技術8.2設備分配設備分配設備分配按照一定的算法將設備分配給申請進程。按照設備本身的共享屬性,設備可分成獨享設備、共享設備和虛擬設備3類,相應的設備分配策略分別稱為獨享分配、共享分配和虛擬分配。獨占設備是不可搶占設備,每次只能供一個作業(yè)或進程單獨使用,如鍵盤、打印機等,只有進程不再使用且釋放它們之后才能被別的進程申請到。共享設備是可搶占設備,允許多個作業(yè)或進程同時使用的設備。虛擬設備是借助虛擬技術,在共享設備上模擬獨占設備。8.2.1獨享分配

8.2.1獨享分配獨享分配獨享分配是指進程使用設備之前先向系統(tǒng)申請,申請成功開始使用,直到使用完再釋放。若設備已經(jīng)被占用,則進程會被阻塞,被掛入設備對應的等待隊列等待設備可用之時被喚醒。8.2.2共享分配

8.2.2共享分配共享分配共享設備一般采用共享分配方式。硬盤就是典型的共享設備。當進程申請使用共享設備時,操作系統(tǒng)能立即為其分配共享設備的一塊空間,不會讓進程產(chǎn)生阻塞。共享分配使得進程使用設備十分簡單和高效,隨時申請,隨時可得。8.2.3虛擬分配8.2.3虛擬分配虛擬分配虛擬分配是指當進程需要與獨占設備交換信息時,采用虛擬技術將與該獨占設備所對應的虛擬設備分配給它。8.2.3虛擬分配虛擬分配虛擬分配是指當進程需要與獨占設備交換信息時,采用虛擬技術將與該獨占設備所對應的虛擬設備分配給它。首先,采用共享分配為進程分配一個虛擬的獨占設備;然后,將虛擬設備與指定的獨占設備關聯(lián)。進程在運行過程中,當需要執(zhí)行輸入或輸出操作時,實際上都是直接與虛擬設備,也就是共享設備的某個存儲區(qū)域,進行交互,所以傳輸速度很快,進程本身的推進速度也得到了提高。

8.2.4SPOOLing技術8.2.4SPOOLing技術SPOOLing技術SimultaneausPeriphernalOperationsOnLine虛擬技術和虛擬分配的實現(xiàn)方案,也叫外部設備同時聯(lián)機操作或假脫機輸入輸出系統(tǒng)。SPOOLing技術是將獨占設備改造為共享設備的行之有效的技術。8.2.4SPOOLing技術SPOOLing技術SimultaneausPeriphernalOperationsOnLine外部設備同時聯(lián)機操作8.2.4SPOOLing技術SPOOLing系統(tǒng)的硬件組成(1)輸入井和輸出井輸入井和輸出井是在共享設備(一般是硬盤)上開辟的兩個存儲區(qū)域。輸入井模擬輸入型的獨占設備,用于存儲輸入設備輸入的數(shù)據(jù);輸出井模擬輸出型的獨占設備,用于儲存CPU傳送給輸出設備的數(shù)據(jù)。(2)輸入緩沖區(qū)和輸出緩沖區(qū)輸入緩沖區(qū)和輸出緩沖區(qū)是在內存中開辟的存儲區(qū)域,分別用于暫存來源于輸入設備的輸入數(shù)據(jù)和送到輸出設備的輸出數(shù)據(jù)。8.2.4SPOOLing技術SPOOLing系統(tǒng)的軟件組成(1)預輸入程序(2)輸入表(3)緩輸出程序(4)輸出表(5)井管理程序8.2.48.2.4SPOOLing技術SPOOLing技術SPOOLing系統(tǒng)特點(1)可提高進程的I/O速度SPOOL技術能提高進程的I/O速度,提高進程的整體運行速度。雖然能提高進程的I/O速度,但是并沒有提高獨占設備自身的I/O速度。(2)可提高系統(tǒng)的整體運行效率和吞吐量。從而提高了進程的運行速度,并發(fā)性和執(zhí)行效率,提高了系統(tǒng)的吞吐量。

8.3緩沖技術

8.3緩沖技術教學內容緩沖概念典型緩沖機制提前讀與延后寫8.3.1緩沖概念

8.3.1緩沖概念緩沖技術的作用(1)緩解CPU與外部設備之間速度不匹配的矛盾,提高外部設備的讀寫效率。(2)協(xié)調數(shù)據(jù)記錄大小的不一致CPU與外設之間或兩個設備之間處理的數(shù)據(jù)記錄大小和格式經(jīng)常不一致,這時需要通過緩沖技術進行數(shù)據(jù)記錄大小的轉換或格式的轉換。(3)正確高效地執(zhí)行應用程序的數(shù)據(jù)復制緩沖技術還可以正確高效地實現(xiàn)應用程序的數(shù)據(jù)復制。所謂正確的數(shù)據(jù)復制,就是指復制的數(shù)據(jù)版本正確,即復制的數(shù)據(jù)就是用戶想要的同一份數(shù)據(jù)。(4)提高CPU和外設之間的并發(fā)性。緩沖技術的引入可顯著地提高CPU和外設之間的并行操作程度,提高系統(tǒng)的吞吐量和設備的利用率。8.3.2典型緩沖機制 8.3.2典型緩沖機制緩沖4種形式(1)Cache,即高速緩沖寄存器。(2)外部設備或I/O接口內部的緩沖區(qū)。(3)內存緩沖區(qū)。這類緩沖區(qū)在內存開辟,應用廣泛,使用靈活(4)輔存緩沖區(qū)。這類緩沖區(qū)開辟在輔存上,例如硬盤上。8.3.2典型緩沖機制 1.單緩沖單緩沖是最簡單的一種緩沖技術。單緩沖在內存中開辟的緩沖區(qū)大小僅有一個單元,即僅能容納一條數(shù)據(jù)記錄。8.3.2典型緩沖機制 2.雙緩沖雙緩沖在單緩沖的基礎上增加了緩沖區(qū)的容量,具有2個單元,能容納2條數(shù)據(jù)記錄。8.3.2典型緩沖機制 雙緩沖在輸入過程中的工作原理外部設備產(chǎn)生數(shù)據(jù)并寫入緩沖區(qū)的單元1時,用戶進程可以從緩沖區(qū)的單元2中讀取已準備好的數(shù)據(jù)進行處理;當外部設備再次產(chǎn)生數(shù)據(jù)時把數(shù)據(jù)寫入緩沖區(qū)的單元2,而這時用戶進程可以再從緩沖區(qū)的單元1中讀取已準備好的數(shù)據(jù)進行處理。8.3.2典型緩沖機制 雙緩沖在輸出過程中的工作原理用戶進程產(chǎn)生數(shù)據(jù)并寫入緩沖區(qū)的單元1時,外部設備可以從緩沖區(qū)的單元2中讀取已準備好的數(shù)據(jù)進行處理;當用戶進程再次產(chǎn)生數(shù)據(jù)時把數(shù)據(jù)寫入緩沖區(qū)的單元2中,而這時外部設備可以從緩沖區(qū)的單元1中讀取已準備好的數(shù)據(jù)進行處理。8.3.2典型緩沖機制 環(huán)形緩沖環(huán)形緩沖就是在雙緩沖的基礎上增加了容量,增加了更多的單元以便存放更多數(shù)據(jù)記錄,并讓首尾兩個單元在邏輯上相連。起始指針pStart輸入指針pWrite輸出指針pRead8.3.2典型緩沖機制 緩沖池緩沖池中設置多個可供若干個進程共享的緩沖區(qū)。緩沖池中包括一定數(shù)量的緩沖區(qū),可以支持輸入,也可以支持輸出緩沖池可極大地提高緩沖區(qū)的利用率,減少內存浪費的情況。8.3.3提前讀與延后寫8.3.3提前讀與延后寫提前讀與延后寫設備管理對于磁盤之類的塊設備通常采用提前讀和延后寫技術,以進一步提高進程與外部設備之間的數(shù)據(jù)傳輸效率。提前讀和延后寫通過設置緩沖區(qū)可減少進程訪問目標設備的次數(shù),來提高設備訪問的效率。8.3.3提前讀與延后寫提前讀提前讀是指進程需要從外設讀取的數(shù)據(jù)事先已被提前讀取到了緩沖區(qū)中,不需要繼續(xù)啟動外設執(zhí)行讀取操作。延后寫延后寫是指緩沖機制把進程需要準備向外設寫入的一系列數(shù)據(jù)先緩存起來,等待緩沖區(qū)被填滿后或一些特定事件發(fā)生的時候,再啟動外設,執(zhí)行I/O操作,完成數(shù)據(jù)的真正寫入。有時也會延遲一些固定時間再完成數(shù)據(jù)寫入操作。8.3.3提前讀與延后寫Linux提前讀與延后寫breada()函數(shù)可以將目標數(shù)據(jù)塊后面的數(shù)據(jù)塊提前讀入緩沖區(qū),這樣下次訪問后面的數(shù)據(jù)塊時就可以直接從緩沖區(qū)獲取到。進程在執(zhí)行寫操作時會將數(shù)據(jù)先寫入高速緩存,而不會立即執(zhí)行I/O寫操作。當高速緩存中已被修改但未寫回塊設備的緩沖塊達到規(guī)定的比例時,或者系統(tǒng)急需緩沖塊時,內核進程bdflush就被喚醒,把被修改的數(shù)據(jù)塊寫入塊設備。8.4磁盤組織與管理

8.4磁盤組織與管理教學內容磁盤的結構磁盤的物理地址磁盤調度算法磁盤的管理8.4.1磁盤的結構8.4.1磁盤的結構硬盤的結構磁盤是若干個同心的磁性盤片疊合,外加讀寫磁頭組合而成的旋轉型的存儲設備。磁性盤片至少有一面可以存儲數(shù)據(jù),也可能兩面都可以存儲數(shù)據(jù)。8.4.1磁盤的結構硬盤的結構1.磁道盤片分成若干個半徑不等的同心圓環(huán),同心圓環(huán)稱磁道。2.柱面若干張盤片中相同位置的磁道組成一個柱面3.磁頭磁頭懸浮在盤片上方,一個盤片就有2個磁頭4.扇區(qū)圓環(huán)磁道均勻分成若干段的扇形區(qū)域,512字節(jié)存儲容量存儲容量=柱面數(shù)×磁頭數(shù)×每磁道扇區(qū)數(shù)×每扇區(qū)字節(jié)數(shù)8.4.2磁盤的物理地址8.4.2磁盤的物理地址CHS式地址磁盤上任意一個扇區(qū)的物理地址可用(柱面號Cylinder,磁頭號Head,扇區(qū)號Sector)方式來定位,又稱CHS方式。柱面號等同于磁道號,磁頭號等同于盤面號。若是雙面的盤面,其正反兩面都有獨立的磁頭。柱面和磁頭從0開始編號扇區(qū)從1開始編號。8.4.2磁盤的物理地址LBA邏輯地址LBA(LogicalBlockAddress,邏輯塊地址)CHS地址和LBA地址的換算公式LBA邏輯地址=(C*每柱面的磁頭數(shù)+H)*每磁道的扇區(qū)數(shù)+(S-1)每柱面的磁頭數(shù)和每磁道的扇區(qū)數(shù)兩個參數(shù)都由磁盤驅動程序提供,它們的典型取值分別是16和64。8.4.2磁盤的物理地址例子1:已知某扇區(qū)的CHS地址是0柱面,0磁頭,1扇區(qū)。計算該扇區(qū)的LBA邏輯地址(假定每柱面的磁頭數(shù)和每磁道的扇區(qū)數(shù)分別是16和64)。解:LBA邏輯地址=(0×16+0)×64+(1-1)=08.4.2磁盤的物理地址例子2:已知某扇區(qū)的CHS地址是0柱面,1磁頭,1扇區(qū)。試計算該扇區(qū)的LBA邏輯地址(假定每柱面的磁頭數(shù)和每磁道的扇區(qū)數(shù)分別是16和64)。解:LBA邏輯地址=(0×16+1)×64+(1-1)=648.4.2磁盤的物理地址例子3:已知某扇區(qū)的CHS地址是1柱面,0磁頭,1扇區(qū)。試計算該扇區(qū)的LBA邏輯地址(假定每柱面的磁頭數(shù)和每磁道的扇區(qū)數(shù)分別是16和64)。解:LBA邏輯地址

=(1×16+0)×64+(1-1)=10248.4.2磁盤的物理地址已知LBA,計算CHS地址柱面號C=LBA/(每柱面的磁頭數(shù)×每磁道的扇區(qū)數(shù))磁頭號H=(LBA/每磁道的扇區(qū)數(shù))%每柱面的磁頭數(shù)扇區(qū)號S=LBA%每磁道的扇區(qū)數(shù)+1例子4:已知扇區(qū)的LBA地址是1024,計算其CHS地址。(假定每柱面的磁頭數(shù)和每磁道的扇區(qū)數(shù)分別取為16和64)解:柱面號C=1024/(16*64)=1

磁頭號H=(1024/64)%16=0

扇區(qū)號S=1024%64+1=1CHS地址是(1、0、1)。8.4.3磁盤調度算法8.4.3磁盤調度算法磁盤訪問時間磁盤訪問時間包括尋道時間、旋轉延遲時間和傳輸時間等3部分時間。尋道時間(SeekTime)是指讀寫磁頭沿徑向移動,移到要讀取的扇區(qū)所在磁道的上方所花的時間。在訪問磁盤的時間中最主要的是尋道時間旋轉延遲時間(RotationalLatencyTime)是指磁頭到達指定磁道后,通過盤片的旋轉,使得要讀取的扇區(qū)轉到讀寫磁頭的下方所花的時間。傳輸時間(TransferTime)指讀寫數(shù)據(jù)所花的時間。8.4.3磁盤調度算法磁盤調度的目標磁盤調度的目標是使磁盤的平均尋道時間最短。目前常用的磁盤調度算法有先來先服務、最短尋道時間優(yōu)先、掃描算法以及循環(huán)掃描算法等。8.4.3磁盤調度算法(1)先來先服務算法它根據(jù)進程請求訪問磁盤的先后次序進行調度。算法的優(yōu)點是公平、簡單,且每個進程的請求都能依次地得到處理,不會出現(xiàn)某一進程的請求長期得不到滿足的情況。算法由于未對尋道進行優(yōu)化,致使平均尋道時間可能較長。8.4.3磁盤調度算法(2)最短尋道時間優(yōu)先算法算法選擇這樣的進程:其要求訪問的磁道與當前磁頭所在的磁道距離最近,以使每次尋道時間最短。這種算法不能保證平均尋道時間最短。8.4.3磁盤調度算法(3)掃描算法掃描算法又稱電梯算法。把磁頭看作在做橫跨磁盤的掃描,從柱面最內圈到最外圈,然后返回來,正如電梯做往返垂直運動一樣。掃描算法既能獲得較好的尋道性能,又能防止“饑餓”現(xiàn)象,故被廣泛用于各型計算機的磁盤調度中。8.4.3磁盤調度算法(4)循環(huán)掃描算法在掃描算法基礎上規(guī)定磁頭單向移動來提供服務,返回時直接快速移動至起始端而不服務任何請求。由于掃描算法偏向于處理那些接近最里或外的磁道的訪問請求,因此使用改進型的循環(huán)掃描算法可以避免這個問題。8.4.4磁盤的管理8.4.4磁盤的管理磁盤管理的目的之一盡量加速對磁盤的訪問,縮短訪問時間。(1)按柱面組織數(shù)據(jù)如果用戶選擇在一個柱面上連續(xù)地讀取所有塊,那么只需要考慮一次尋道時間,而忽略其他時間。這樣,從磁盤上讀寫數(shù)據(jù)的速度就接近于理論上的傳輸速率。(2)預取數(shù)據(jù)在需要磁盤塊之前就將它們預裝入內存。這樣做的好處是方便系統(tǒng)能較好地調度磁盤,減少訪問磁盤塊所需要的平均時間。8.5

Linux緩沖技術

8.5Linux緩沖技術教學內容Linux緩沖概述典型塊設備的塊定義緩沖區(qū)數(shù)據(jù)結構緩沖塊搜索數(shù)據(jù)讀取8.5.1Linux緩沖概述8.5.1Linux緩沖概述Linux0.11緩沖機制Linux0.11提供了內存高速緩沖區(qū)暫存與塊設備之間的交換數(shù)據(jù),以減少I/O操作的次數(shù),提高系統(tǒng)的性能。緩沖塊中總是保存著最近訪問磁盤的數(shù)據(jù)。內核在讀塊設備之前先搜索緩沖區(qū),如果數(shù)據(jù)在緩沖區(qū)中就不需要再從磁盤中讀取,否則向塊設備發(fā)出讀操作的指令。當內核寫塊設備時,先將數(shù)據(jù)寫入緩沖區(qū)。8.5.2典型塊設備的塊定義8.5.2典型塊設備的塊定義典型塊設備的塊定義典型的塊設備包含硬盤、軟盤、RAMDISK等。硬盤最小的可尋址單元是扇區(qū)。扇區(qū)的大小一般是2的整數(shù)次冪,最常見的大小是512Byte。塊(block)是文件系統(tǒng)對存儲設備最小的數(shù)據(jù)傳輸單位的一種抽象,系統(tǒng)規(guī)定只能基于塊來訪問文件系統(tǒng)。塊數(shù)倍于扇區(qū)大小。通常塊大小是512Byte、1024Byte或4096Byte。Linux是1024Byte。8.5.3緩沖區(qū)數(shù)據(jù)結構8.5.3緩沖區(qū)數(shù)據(jù)結構高速緩沖區(qū)被劃分為一個個緩沖塊每個緩沖塊與一個磁盤塊對應。每個緩沖塊都用一個叫緩沖頭buffer_head的結構體來描述。8.5.3緩沖區(qū)數(shù)據(jù)結構高速緩沖區(qū)被劃分為一個個緩沖塊每個緩沖塊與一個磁盤塊對應。每個緩沖塊都用一個叫緩沖頭buffer_head的結構體來描述。8.5.3緩沖區(qū)數(shù)據(jù)結構緩沖頭buffer_head結構體(1)b_data字段:指向緩沖塊對應的數(shù)據(jù)區(qū)。(2)b_blocknr字段:設備中的塊號。(3)b_dev字段:設備號。(4)b_lock字段:表示該緩沖塊是否已被鎖定。(5)b_count字段:緩沖塊被多少個進程引用。(6)b_dirt字段:為延遲寫字段,即臟位字段。(7)b_uptodate字段:為數(shù)據(jù)有效位字段(8)b_wait字段:指向訪問緩沖塊的等待隊列。8.5.4緩沖塊搜索8.5.4緩沖塊搜索緩沖塊搜索內核程序在使用高速緩沖區(qū)中的緩沖塊時,都必須先通過指定設備號(b_dev)和塊號(b_blocknr)搜索緩沖區(qū)中的緩沖塊。內核搜索合適的緩沖塊有兩種方法一種是搜索散列表另一種是搜索LRU隊列(free_list)8.5.5數(shù)據(jù)讀取8.5.5數(shù)據(jù)讀取數(shù)據(jù)讀取數(shù)據(jù)讀取的過程主要是指從用戶提交文件讀取請求開始到產(chǎn)生設備I/O請求的過程。主要過程內核上層程序會將文件訪問請求轉換為對數(shù)據(jù)塊的訪問,通過使用bread()函數(shù)獲得對應的緩沖塊。bread()函數(shù)利用請求的設備號和塊號,在相應的散列數(shù)組項中查找緩沖塊,檢查需要的數(shù)據(jù)塊是否已經(jīng)放入緩沖區(qū)中。若沒有,就會分配一個新的緩沖塊,然后調用底層塊設備讀寫函數(shù)ll_rw_block()去讀取相應的數(shù)據(jù)塊。若有,直接讀回8.5.3緩沖區(qū)數(shù)據(jù)結構file_read()函數(shù)讀磁盤設備8.5.3緩沖區(qū)數(shù)據(jù)結構bread()函數(shù)讀取緩沖區(qū)8.5.3緩沖區(qū)數(shù)據(jù)結構bread()函數(shù)讀取緩沖區(qū)8.6

I/O控制

8.6

I/O控制教學內容設備的接口與端口典型I/O控制方式8.6.1設備的接口與端口8.6.1設備的接口與端口在具有數(shù)據(jù)總線、地址總線、控制總線的計算機中,設備都是通過接口(設備控制器)連接到3組總線上。8.6.1設備的接口與端口接口內部一般含有3類端口數(shù)據(jù)端口:暫存設備與CPU交互的數(shù)據(jù)。狀態(tài)端口:暫存設備產(chǎn)生的工作狀態(tài)信息??刂贫丝冢簳捍鍯PU發(fā)給設備的控制命令8.6.2典型I/O控制方式8.6.2典型I/O控制方式I/O控制CPU與外設之間進行數(shù)據(jù)傳輸?shù)倪^程稱。主要I/O控制方式有5種無條件傳送方式(也叫同步傳送)查詢傳送方式(也叫異步傳送、循環(huán)測試I/O)中斷傳送方式通道傳送方式DMA傳送方式8.6.2典型I/O控制方式無條件傳送方式(也叫同步傳送)CPU與設備進行無條件傳送數(shù)據(jù)時,CPU不需要查詢外設狀態(tài),直接進行數(shù)據(jù)傳輸。例如,如代碼8-5所示,直接從設備的80H端口讀取數(shù)據(jù),然后直接寫到設備的81H端口中。8.6.2典型I/O控制方式查詢傳送方式(也叫異步傳送、循環(huán)測試I/O)查詢方式是在傳送數(shù)據(jù)之前,CPU先對外設狀態(tài)進行檢測,直到確認外設已經(jīng)準備好才開始傳輸。在執(zhí)行輸入時,先獲取狀態(tài)端口的狀態(tài)數(shù)據(jù),檢測外設是否準備好了輸入,即數(shù)據(jù)端口的數(shù)據(jù)是否已經(jīng)準備好。若沒有準備好,則繼續(xù)循環(huán)檢測,直到準備好,才執(zhí)行對數(shù)據(jù)端口的讀操作。在執(zhí)行輸出時,先獲取狀態(tài)端口的狀態(tài)數(shù)據(jù),檢測外設是否準備好了輸出,即數(shù)據(jù)端口是否已經(jīng)被清空。若沒有被清空,則繼續(xù)循環(huán)檢測,直到被清空,才執(zhí)行對數(shù)據(jù)端口的寫操作。8.6.2典型I/O控制方式查詢傳送方式(也叫異步傳送、循環(huán)測試I/O)查詢方式是在傳送數(shù)據(jù)之前,CPU先對外設狀態(tài)進行檢測,直到確認外設已經(jīng)準備好才開始傳輸。8.6.2典型I/O控制方式中斷傳送方式中斷方式的傳輸過程是指,當外設數(shù)據(jù)準備好或準備好接收時,主動向CPU產(chǎn)生中斷信號。CPU收到中斷信號后,停止當前工作,立即開始準備進行數(shù)據(jù)傳輸。CPU在中斷服務程序中完成對數(shù)據(jù)的傳輸。中斷傳送的優(yōu)點(1)數(shù)據(jù)傳輸?shù)膶崟r性高(2)CPU與設備可以并行工作8.6.2典型I/O控制方式通道傳送方式通道(Channel)是用來控制外設與內存數(shù)據(jù)傳輸?shù)膶iT部件。通道有獨立的指令系統(tǒng),既能受控于CPU,又能獨立于CPU主動控制外設的數(shù)據(jù)傳輸過程。當進程向外設請求數(shù)據(jù)時就啟動通道,完成對通道的初始化,包括數(shù)據(jù)的存放地址、字節(jié)數(shù)等參數(shù)的初始化。通道被初始化后主動控制數(shù)據(jù)傳輸過程,實現(xiàn)設備和內存之間直接的數(shù)據(jù)傳輸,不需要CPU干預,直到數(shù)據(jù)傳輸結束為止。通道方式的數(shù)據(jù)傳輸過程以內存為中心,可實現(xiàn)內存與外設直接數(shù)據(jù)交互,能支持高速批量數(shù)據(jù)傳輸。8.6.2典型I/O控制方式DMA傳送方式直接內存存取(DirectMemoryAccess)DMA方式支持在內存與I/O設備之間、內存與內存之間、I/O設備與I/O設備之間直接傳送數(shù)據(jù),不需要CPU的干預。DMA傳送方式主要特點(1)數(shù)據(jù)傳輸支持塊傳送,即每次傳送一個數(shù)據(jù)塊的數(shù)據(jù)。(2)傳送過程直接在設備與內存之間進行,不需要CPU參與。(3)僅在傳送數(shù)據(jù)開始和結束時,才需CPU干預。8.7設備驅動機制

8.7設備驅動機制 教學內容設備驅動概念驅動程序基本接口Linux設備驅動Linux字符設備驅動示例 Linux雜項設備驅動示例8.7.1設備驅動概念8.7.1設備驅動概念程序訪問設備有兩種典型的方法方法一,直接通過I/O指令操作硬件方法二,通過系統(tǒng)調用間接地控制硬件。設備驅動程序(DeviceDriver)設備驅動程序是硬件設備的接口程序,負責直接控制硬件設備的各種操作。設備驅動程序向上為操作系統(tǒng)的I/O操作請求(來自文件系統(tǒng)的標準接口)提供服務,向下執(zhí)行I/O指令控制硬件設備工作,完成操作系統(tǒng)與設備之間的通信。8.7.1設備驅動概念驅動程序在系統(tǒng)中的地位8.7.2驅動程序基本接口8.7.2驅動程序基本接口驅動程序的基本接口包括3類面向用戶程序的接口面向I/O管理器的接口面向設備的接口8.7.2驅動程序基本接口面向用戶程序的接口(1)設備的打開與釋放(2)設備的讀寫操作(3)設備的控制操作(4)設備的中斷處理(5)設備的輪詢處理8.7.2驅動程序基本接口面向I/O管理器的接口注冊函數(shù)注銷函數(shù)必需的數(shù)據(jù)結構8.7.2驅動程序基本接口面向設備的接口這類接口的具體實現(xiàn)與設備密切相關主要功能是把用戶對設備的請求轉化為一系列的端口操作,實現(xiàn)無條件傳送、查詢傳送、中斷傳送或DMA傳送,實現(xiàn)用戶進程和設備之間的通信。8.7.3Linux設備驅動8.7.3Linux設備驅動可裝載內核模塊LoadableKernelModule,LKM模塊機制用于解決單體內核機制的不足??裳b載內核模塊是一種未經(jīng)鏈接的可執(zhí)行代碼,但是經(jīng)過動態(tài)裝載(鏈接)后成為內核一部分。可裝載內核模塊也可以被動態(tài)地卸載。設備驅動程序是一種可以通過模塊的方式被添加到內核而又無須對內核重新編譯的程序。8.7.3Linux設備驅動設備驅動程序框架典型硬件設備驅動程序,需要3類接口面向用戶程序的接口面向I/O管理器的接口面向設備的接口8.7.3Linux設備驅動設備驅動程序框架(1)設備注冊函數(shù)將用戶定義好的設備加入到chrdev字符設備數(shù)組合適位置intregister_chrdev(intmajor,char*name,conststructfile_operations*fops);8.7.3Linux設備驅動fops參數(shù)是file_operations結構體類型8.7.3Linux設備驅動fops參數(shù)的作用提供驅動程序內部自定義的設備操作接口與標準文件操作接口之間的映射關系。8.7.3Linux設備驅動設備驅動程序框架(2)設備注銷函數(shù)當不再需要這個設備時可以卸載unregister_chrdev()或unregister_blkdev()分別從內核中注銷字符設備和塊設備。注銷的過程除釋放內核相應的數(shù)據(jù)結構,還會刪除設備文件和釋放設備號。8.7.3Linux設備驅動設備驅動程序框架(3)定義各種必要的設備操作函數(shù)設備可能有的操作函數(shù)包括設備的打開與釋放、設備的讀寫操作、設備的控制操作、設備的中斷處理、設備的輪詢處理等。但是,不是每個設備都需要實現(xiàn)這些接口。8.7.4Linux字符設備驅動示例8.7.4Linux字符設備驅動示例

示例1的功能支持用戶對設備內部的一個變量進行讀和寫步驟1.定義設備內部的全局變量8.7.4Linux字符設備驅動示例

步驟2.實現(xiàn)若干個設備操作函數(shù)8.7.4Linux字符設備驅動示例

步驟3.定義和初始化文件操作結構體變量8.7.4Linux字符設備驅動示例

步驟4.實現(xiàn)設備的注冊函數(shù)和注銷函數(shù)8.7.4Linux字符設備驅動示例

步驟5.編譯驅動程序6.安裝和卸載驅動程序#insmodRWDevState.ko#rmmod

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論