【操作系統】 Operation System 第二章:操作系統基礎操作

2.1 操作系統的啓動

(1)CPU, I/O, 內存通過總線連接。
(2)DISK:存放OS;
BIOS:基本I/O處理系統( basic I/O system); Bootloader: 加載OS到內存中。
(3)當電腦通電時,段寄存器CS和指令寄存器IP能夠確定一個內存地址,例如CS:IP = 0xf000:fff0.
(4)POST(加電自檢),尋找顯卡和執行BIOS。(顯示器,鍵盤…是否正常)。
(5)步驟:
-BIOS: 將Bootloader從磁盤的磁盤的引導扇區(512字節)加載到0x7c00;跳轉到CS:IP=0000:7c00的內存區域(以便下一步)
-Bootloader:將操作系統的代碼和數據從硬盤加載到內存中;跳轉到操作系統的起始地址。
在這裏插入圖片描述
(6)系統調用:(來源於應用程序)應用程序主動向操作系統發出服務請求。
(7)異常:(來源於不良的應用程序)非法指令或其它花的處理狀態(e.g.內存出錯)。
(8)中斷:(來源於外設)來自不同的硬件設備的計時器和網絡的中斷。

(9)爲什麼應用程序不能直接訪問硬件而是通過操作系統?
-計算機運行時,內核是被信任的第三方。
-只有內核可以執行特權指令。
-爲了方便應用程序。

(10)討論的問題:操作系統如何設計和實現中斷/異常和系統調用;他們三者的區別和特點。

(11)產生的源頭
-中斷:外設(鍵盤/鼠標/網卡/聲卡/顯卡,可以產生各種事件)
-異常:應用程序意想不到的行爲(e.g.異常,惡意程序,應用程序需要的資源未得到滿足)
-系統調用(system call):應用程序請求操作提供服務(e.g.打開/關閉/讀寫文件,發送網絡包)

(12)處理時間
-中斷:異步;
-異常:同步;
-系統調用:同步或異步。

(13)響應
-中斷:持續,對用戶應用程序時透明的
-異常:殺死或者重新執行意想不到的應用程序指令
-系統調用:等待和持續

2.2 中斷/異常和系統調用

(1)中斷/異常處理機制
中斷是外設的事件,異常是CPU的事件;中斷/異常迫使CPU訪問一些被中斷和異常服務訪問的功能。

(2)中斷處理機制
硬件:設置中斷標記(CPU初始化)
-將內部/外部事件設置中斷標記;
-中斷事件的ID(程序訪問的中斷向量地址)
軟件(操作系統):
-保存當前處理狀態
-中斷服務程序處理
-清除中斷標記
-恢復之前保存的處理狀態

(3)異常處理機制
異常:異常編號
-保存現場
-異常處理:殺死產生異常的程序;重新執行異常指令
-恢復現場

(4)系統調用
-一條指令會觸發一個系統調用

-程序訪問主要是通過高層次的API接口而不是直接進行系統調用。

-通常情況下,存在與每個系統調用相關的序號,系統調用接口根據這些序號來維護表的索引。
-系統調用接口調用內核態中預期的系統調用,並返回系統調用的狀態和其它任何返回值。
-用戶不需要知道系統調用是如何實現的,只需要獲取API和了解操作新系統將什麼作爲返回結果。操作系統接口的細節大部分都隱藏在API中,並通過運行程序支持的庫來管理。

-用戶態:應用程序在執行的過程中,CPU執行的特權級的狀態(很低,不能訪問特殊機器指令和IO)。
-內核態:應用程序在執行的過程中,CPU執行的特權級的狀態(高,操作系統可以執行CPU任何一條指令)。
-系統調用時涉及到特權級從用戶態到內核態的轉換,應用程序和操作系統有各自的堆棧,這兩個變化比函數調用的開銷更大,但更安全和可靠。(而程序調用是在一個棧空間實現參數的調用和返回)。

(4)跨越操作系統邊界的開銷
-在執行時間上超過程序調用
-開銷包括:
建立中斷/異常/系統調用號與對應服務例程映射關係的初始化開銷;
建立內核堆棧(操作系統和應用程序的堆棧不一樣);
驗證參數(操作系統會檢查數據);
內核態映射到用戶態的地址空間,更新頁面映射權限(內存拷貝開銷);
內核態獨立地址空間TLB。

參考資料
https://www.bilibili.com/video/av6538245?from=search&seid=436175425155932048

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章