檔案系統占得**比較多,我們將從提供給使用者的api開始逐步進入核心,順藤摸瓜!最終獲取檔案系統的抽象+裝置的組織。【裝置號】
/* * 系統所含的裝置如下:(與minix 系統的一樣,所以我們可以使用minix 的
* 檔案系統。以下這些是主裝置號。)
* * 0 - 沒有用到(nodev)
* 1 - /dev/mem 記憶體裝置。
* 2 - /dev/fd 軟盤裝置。
* 3 - /dev/hd 硬碟裝置。
* 4 - /dev/ttyx tty 序列終端裝置。
* 5 - /dev/tty tty 終端裝置。
* 6 - /dev/lp 列印裝置。
* 7 - unnamed pipes 沒有命名的管道。
*/【使用者apis】
1. read
2. write
3. open
4. close
5. create
6. link/unlink
7. mknod
8. chmod
9. chown
10. mount/unmount
11. fstat
12. access
13. sync
14. rename
15. mkdir
16. rmdir
17. dup
18. pipe
19. ioctl
20. fcntl
【塊裝置驅動】
linux/kernel/blk_drv/
+--------- blk.h 塊裝置驅動標頭檔案
+--------- ll_rw_blk.c 塊裝置驅動模組介面檔案, 向上層的檔案系統提供
+--------- floppy.c 軟盤驅動程式
+--------- hd.c 硬碟驅動程式
+--------- ramdisk.c 記憶體虛擬盤驅動程式
塊裝置驅動模組工作原理圖:ll_rw_block()為對上層的介面函式
【字元裝置驅動】
tty抽象了字元裝置,統一了字元裝置的讀寫操作.
共存著三個tty裝置,乙個為控制台,2個為序列終端。工作原理類似
現在考察下tty的read_q, write_q, secondary中的內容及轉換規則.
copy_to_cooked()函式,這個行規則函式的主要作用是把read_q中的字元經過適當的處理後放入規範佇列secondary,並且在處理過程中,若相應終端裝置設定了回顯標誌,還會把字元放入寫佇列(write_q)中。從而最終在終端螢幕上顯示出剛輸入的字元。
1. 序列裝置直接將收到的字元放入read_q, 然後由tty進行cooking:-),分發到secondary和write_q佇列。
將write_q的內容如實傳送給遠端。
2. 控制台裝置與串列埠裝置類似,這裡有意思的是字串行(控制序列)規則。
keyboard.s 是鍵盤驅動程式, 將功能鍵f1-fn掃瞄碼變換成轉義字元序列並存放在read_q中,將普通按鍵變換成ascii碼,將ctrl+keydown變換成控制字元(0x00--0x1f)。
a.轉義序列
b. 控制序列
【補充】
tty模組向上層檔案系統提供的介面為tty_read() && tty_write()。
a. 對輸入字元的處理從copy_to_cooked()分析。
b. 對輸出字元的處理從con_write()分析。
下一章總結高速緩衝區、檔案型別、核心檔案表、檔案系統格式開始…
檔案系統(一)
又是檔案系統。前面已經提到過一次檔案系統的實現了,為什麼這裡還要再介紹一邊檔案系統呢?原因是前面介紹的檔案系統訪問比較簡單,僅僅是讀取固定的幾個檔案。而這裡,為了保證裝載器的靈活性,這裡的檔案系統設計複雜多了。而且由於是c 實現,可讀性也提高了。以後在核心中,我們還需要處理一次檔案系統,那是作業系統...
檔案系統(一)
檔案系統 檔案系統是某些作業系統必然包含的模組,對系統中儲存介質的訪問以統一的系統介面進行管理,完成read write ioctl等操作 1 分類 按實現分類 傳統的單機版的檔案系統和網路分布式的檔案系統。分布式檔案系統通常應用網路技術和協議,將分散的各個資料資源進行統一管理的系統形式。嵌入式作業...
檔案系統 一
一.檔案系統型別 ext2,ext3 帶日誌 nfs sun,網路檔案系統 msdos,vfat,ntfs,proc 虛擬的程序檔案系統 iso9660 光碟 ufs sun os xfs 目前最好的檔案系統 reiserfs 平衡樹 二.相關指令 1.mount unmount 掛載檔案系統 mo...