驅動框架:
驅動程式分為兩大類:字元裝置和塊裝置
字元裝置:每次傳輸資料時將字元作為最基本單位的裝置,如鍵盤和音效卡等。他們通常不支援隨機訪問資料,因此對字元裝置的處理非常直觀簡單,字元裝置在實現時也大多不需要快取,系統直接從裝置讀取/寫入每乙個字元
塊裝置:與字元裝置相對的,以批量方式進行資料傳輸的一類裝置,如硬碟,cd-rom等。塊裝置支援隨訪問和定址並使用快取,這幾點與字元裝置相對的,作業系統會為塊裝置的輸入或輸出過程分配快取,以儲存臨時讀出或寫入的資料。當快取被填滿時,會採取適當的操作把資料傳走,而後系統清空快取。這種針對裝置的快取機制其實是廣泛存在的,目的就是使訪問速度較慢的塊裝置,能夠適當的提高讀寫效率
作業系統把裝置分為這兩大類,就是對裝置的高度抽象,所有的裝置都可以按類分成字元裝置或者是塊裝置,這樣核心只需要實現乙個字元裝置框架或乙個塊裝置框架,就可以管理系統中的所有裝置了
檔案系統是怎麼引入的?
因為幾乎所有的應用程式都需要對資料做處理,所以作業系統需要對資料進行管理,而資料就是一堆二進位制數,由於不能將資料儲存到儲存器上,這又是因為,直接對儲存器進行讀寫操作,反覆的操作會產生記憶體碎片降低儲存器的工作效率,所以linux引入檔案系統,就是將二進位制的資料進行加工,使加工後的資料載入到儲存裝置中
檔案系統的特性:
1.檔案系統其實就是作業系統的一種抽象,它可以讓儲存裝置的操作變得容易,使用者不再需要了解儲存器的原理,而只需要知道檔案系統的基本概念,如檔案、資料夾等,就可以直接進行資料的讀寫了。
2.由於要儲存的資料是被重新加工後再被儲存的,因此我們可以將資料的儲存位置、大小等資訊也存到儲存器中,這樣,再進行資料查詢、插入或刪除時,就會便得到相當容易,就是因為這種抽象性,檔案系統才不能代表乙個具體的儲存載體,而必須依託某乙個具體的儲存裝置才會有意義
注:資料在儲存之前要按照某種格式加工一下,再儲存到儲存器中,這種格式就叫做檔案系統型別,例如fat和ntfs,不同檔案系統型別下的檔案內容是一致的,只不過組織的方法不同,而將某個儲存裝置組織成某種檔案系統型別的過程就叫做格式化
檔案系統框架:以檔案的形式運算元據-》檔案系統-》檔案系統型別(資料加工)-》儲存裝置
檔案系統的架構之中首先肯定是要有乙個結構,用來描述檔案系統的乙個物件也就是檔案,從而這裡引入索引節點的概念
索引節點(inode):列出了檔案的屬性等資訊以及檔案中各個資料塊在磁碟中的相應位置。因此,我們可以得出如下結論:每個儲存在儲存器中的檔案都會有乙個索引節點與之對應。也就是說,索引節點就是儲存在儲存器中的資料抽象。
當我們想從裝置中讀取一段資料時;
1.要找到對應這個資料的索引節點
2.呼叫與索引節點相配套的資料操作函式,通過索引節點中記錄的資料資訊正確的讀出資料,這個函式在傳統的unix中被稱為namei,使用namei能夠得到對應檔案的索引節點,而索引節點裡又記錄了必要的資料資訊,在得到索引節點後,就得到了必要的資料資訊
3.再呼叫儲存器對應的驅動程式,將資料從索引節點裡面記錄的實際資料儲存位址中讀出來,從而實現對資料的讀取
Linux 檔案系統與驅動
之前做應用程式的開發,就知道linux系統的一大特點就是一切皆檔案,一直以來對所有裝置的操作都是使用系統函式open read write close來實現的,就沒關心過系統裡面是怎麼實現對各種裝置的區分和控制櫃,直到開始看linux裝置驅動方面的知識以後,感覺像發現了新大陸一樣的神奇,故把相關知識...
三 磁碟與檔案系統篇(1) 初識檔案系統
1.檔案系統詳解 linux檔案系統主要是ext2 ext3 ext4等等,它主要是管理系統的資料,資料是儲存在磁碟裡面的,當磁碟被分割槽 格式化後就可以正常的訪問資料了,其實格式化就是向分割槽的部分寫入檔案系統,在檔案系統的概念中,資料是怎麼儲存的,還有那些檔案的屬性 許可權等又是儲存在什麼地方的...
Linux檔案系統與裝置驅動
應用程式與vfs virtual filesystem 之間的介面是系統呼叫。vfs與檔案系統及裝置檔案之間的介面是file operation 結構體成員函式。結構成員函式過多,基本上程式設計用到的有.read write open owner this module 在對file opreati...