總結
Linux 0.11主要包含檔案管理和行程管理兩個部分,行程管理包括記憶體管理、行程管理、行程間通信模塊,檔案管理包含磁盤檔案系統,打開檔案記憶體資料,磁盤檔案系統包括空閑磁盤塊管理,檔案資料塊的管理,檔案元資料的管理,樹形結構目錄,打開檔案記憶體資料包括檔案描述符表、file檔案表、inode節點表,
中斷程序
- 每個行程有一個用戶堆疊和一個行程堆疊,中斷呼叫導致用戶堆疊切換到內核堆疊,中斷回傳導致內核堆疊切換到用戶堆疊
- INT指令中調呼叫時,用戶態運行狀態被保存到內核堆疊中
- IRET指令中斷回傳時,恢復用戶態運行狀態資訊,包括用戶堆疊地址資訊
- 系統呼叫基于int 80軟中斷實作,80中斷程式根據系統呼叫號呼叫相應的函式,如sys_read、sys_write
- 時間片輪轉行程調度基于時鐘中斷實作,行程時間片用完時,發生時鐘中斷,中斷程式轉而運行調度程式
- 行程調度的實質是運行狀態之間的切換,被選中運行的程式,將被選中行程的運行狀態資訊復制到硬體暫存器中,運行被選中程式
記憶體管理
- 分頁記憶體管理包括空閑塊的管理、行程基于頁表管理已分配的物理記憶體;分段記憶體管理通過段表(LDT)管理分段記憶體資訊,
- 地址翻譯經過段號:偏移—>線性地址—>物理地址的二次轉換程序,設定好段表(LDTR)和頁表(PTBR)資訊后,記憶體管理單元(MMU)自動完成地址翻譯程序,
檔案管理
磁盤資料結構
- 磁盤空閑塊的管理,可以通過鏈表、位圖、成組鏈接法等,
- 檔案資料塊的管理,通過類似頁表的結構維護檔案邏輯塊到磁盤物理塊之間的映射
- 磁盤檔案的管理,通過inode陣列維護所有檔案資訊,inode記錄對應的檔案資訊
- 樹形目錄結構,目錄資料檔案包含子檔案名—>子檔案inode號的映射關系,從而形成樹形目錄結構,
打開檔案的記憶體資料結構
- inode表,記錄檔案的inode資料,用磁盤上檔案inode資料基本一致
- file表,記錄打開檔案的資訊,維護行程對檔案的操作狀態,如讀寫偏移
- 檔案描述符表,記錄行程打開的檔案集合,表項是檔案表的下標索引
- fork后父子行程檔案描述符表相同;不同行程打開同一檔案,具有不同的file資料,即擁有不同的讀寫偏移,
高速緩沖
- 空閑緩沖區的管理,使用空閑鏈表
- 已分配緩沖區的管理,為加快訪問速度,使用哈希表,哈希函式的輸入是設備號和磁盤塊號
- 臟緩沖塊資料的寫盤,緩沖塊需要重新快取其它磁盤塊的資料時,對于舊的資料,如果具有臟資料(dirt位為1),則寫入磁盤
塊驅動程式
- 通過設備表管理塊設備,表項記錄設備的請求佇列地址,處理請求函式地址,
- 請求佇列維護所有對磁盤的讀寫請求,所有讀寫請求被放到請求佇列中
- 設備中斷處理程式,不斷處理請求佇列中的讀寫請求
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/455385.html
標籤:其他
