OS Design and Implementation讀書筆記(1)

|| 計算機可分爲:硬件 / 系統軟件 / 應用軟件
其中系統程序包括:操作系統,編譯器,命令解釋器(shell)等,
OS是最特殊的一個系統軟件,它需要CPU處於內核態纔會運行,且受到硬件的保護

|| 硬件操作很複雜,我們通過在裸機上引入一個軟件(OS),讓他來管理硬件系統的各個部件,並給上層用戶提供易於操作硬件的接口

|| 讓上面的人好管理硬件:
OS的一大功能就是將複雜的硬件操作封裝起來,給程序員一個方便編程的接口。從這個角度看,OS的功能就是提供了一個等價的擴展計算機或稱虛擬機,使得用戶程序可以通過稱爲“系統調用”的特殊指令來使用OS提供的服務(當前猜想:用戶程序使用特殊指令來造成中斷/異常事件,使得CPU轉化爲內核態去運行操作系統,操作系統通過不同的中斷碼調用不同的服務,使得CPU運行中斷處理程序去解決中斷)

|| 讓自己好管理硬件
計算機的硬件多且雜,OS作爲管理硬盤者,需要在互相競爭的程序之間有序地控制硬件設備的分配使用
OS的另一大功能就是作爲資源管理器,它需要做到
1,資源跟蹤記錄 — 即數據結構
2,資源共享策略 — 即算法
3,分配回收
4,協調衝突

|| 系統調用,是操作系統的擴展指令,它們定義了操作系統與用戶程序的接口
可以理解爲一個操作硬件的函數調用,它把CPU轉變爲內核態,令CPU控制權交給操作系統

|| MINIX 3系統調用大致分爲兩類:
進程相關係統調用:進程創建與終止,請求與釋放更多內存,等待一個子進程結束,加載並執行另一個程序
文件相關係統調用:創建與刪除文件,打開與關閉文件,讀與寫文件

進程:

|| 進程的簡要概念:本質上講就是一個正在進行的程序,運行在一個內存地址上,進程是通過系統調用常見或者終止的

|| 操作系統中有一個 進程表(鏈表或結構數組),無論運行還是掛起每個進程都會佔用表的一項
進程可以創建子進程,子進程也可以創建子進程,這就構成了進程樹。相關進程通過“進程間通信”相互合作,共同完成某項任務。

進程舉例:當你需要編譯一個程序時,鍵入命令後,shell通過進程創建系統調用創建了進程,新進程中運行了編譯器,待編譯完成,shell通過進程終止系統調用終止自己

文件:

|| 文件的簡要概念:本質上在磁盤相關區域上,OS屏蔽了相關細節

|| 操作系統中有 目錄,目錄由其絕對路徑

|| 訪問文件:
訪問一個文件進行讀寫操作時,會進行權限檢查,若訪問許可則返回一個整數(文件描述符),若權限不夠就返回一個錯誤碼-1
文件和目錄通過一個11位的二進制碼來保護。保護碼分爲3個3位的域(剩下兩位另談),第一個域用來描述文件所有者,第二個域用來描述同組用戶,第三個域則是其他用戶。域中3位分別標識讀權限,寫權限和可執行權限(rwx),“-”表示不具備相應權限 eg:文件保護碼:rwxrwxrwx / rwxr-x–x

|| 掛裝文件:
使用掛裝系統調用,將外來文件系統掛裝到根文件系統中的任何位置。(不能並行掛裝,形成兩個跟文件系統)

|| 設備文件:爲了使得I/O設備的使用更加類似於文件來方便文件的讀和寫操作,引入設備文件的概念。分爲:塊設備文件,字符設備文件

|| 進程與文件的聯繫:
1,任一時刻,每一個進程都有其當前的工作目錄,在這種目錄下路徑名使用簡略版(僅包含據對路徑名尾部)
2,管道:管道時用來連接兩個進程的虛擬文件。通過這個管道(文件)進行進程間的數據傳輸

發佈了38 篇原創文章 · 獲贊 66 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章