作業系統——裝置驅動和檔案系統

lijunjie127發表於2018-08-21

L26 顯示器

IO裝置:鍵盤和顯示器,磁碟(抽象出一個檔案)

讓外設工作起來,cpu發出指令給顯示卡中的一個暫存器(視訊記憶體),顯示器根據顯示卡中的資訊來讓顯示器工作。所以讓外設工作,只需要向對應的暫存器中傳送指令,完成操作。外設去做對應的工作,外設服務程式執行結束後向cpu傳送一箇中斷,cpu進行中斷處理。

類似於out xxx, al這樣的指令讓外設工作,然後等外設完事後寫中斷處理程式。

向裝置控制器等暫存器寫的過程比較麻煩,為了讓out做的統一,讓使用者使用起來方便,內部隱藏很多細節,形成統一的檔案介面:檔案檢視。

總結:三件事,形成檔案檢視、發出out指令、形成中斷處理

操作外設的程式:

開啟外設檔案(open),不論什麼裝置都是open、read、write、close。區別在檔名,不同的檔名對應不同的裝置。根據裝置檔案找到控制器地址、內容格式等等。

printf記憶體寫到顯示器,fprintf記憶體寫到磁碟

從write開始分支,1是顯示器,

寫裝置驅動:寫出核心out指令,將相應的函式註冊在這些表上,建立dev什麼檔案和登錄檔對上,就行了。

編寫檔案驅動,是一個很重要的技能

L27 鍵盤

cup向外設發指令,原理簡單,細節複雜,統一的檔案檢視,檔名,檔案描述結構。

裝置讀寫後的中斷處理。鍵盤對應的是中斷處理。

如何使用鍵盤?

使用者:敲鍵盤、看結果

OS:“等待”使用者敲鍵盤,敲了就中斷(21號中斷)

處理中斷,根據掃描碼得到ASCII碼,ASCII碼放入緩衝佇列,等著程式去拿資料

L28 生磁碟的使用

原理一樣:檔案檢視、out、中斷,但是比前面顯示器和鍵盤複雜很多。包裝(抽象)層次複雜。

讓磁碟工作起來,就是生磁碟

磁碟結構:盤面、磁軌、扇區、磁頭

磁碟資料訪問的基本單位是大小為512位元組的扇區

扇區的大小是傳輸時間和碎片浪費的折中

磁碟資料讀寫過程:移動磁頭到相應的磁軌上,旋轉磁碟到相應的扇區上,和記憶體快取配合進行讀寫。(控制器—>尋道—>旋轉—>傳輸)

OS的核心就是向控制器中寫柱面、磁頭、扇區、快取位置

out指令寫這些資料,首先要知道這些資料,下面要把這一過程封裝一下

通過盤塊號讀寫磁碟(一層抽象)

磁碟驅動負責從block(一維地址)計算出cyl、head、sec(CHS)

OS內部實現一維地址到三維地址到編址,我們希望相鄰的盤塊可以快速讀出。

L29 從生磁碟到檔案

引出檔案就是熟磁碟了,

L30 檔案使用磁碟的實現

L31目錄與檔案系統

L32 目錄解析程式碼實現

相關文章