操作系統筆記(四)中斷和系統調用等
阿新 • • 發佈:2018-03-12
trap ogr 單獨 設備驅動 gist urn all 保存 per
- bootstrap:
- 執行者:boot-loader(不是操作系統的一部分). 如 GRUB
- 任務: 1)加載OS到內存 2)將控制轉交給OS
- 中斷
- 處理步驟:
- 硬件:保存寄存器, 切到ISR(Interrupt Service Routine)
- ISR匯編:保存需要的寄存器,設置環境
- ISR C: 處理中斷,從外設讀入數據
- ISR C: 返回匯編ISR
- ISR匯編:恢復寄存器,返回中斷點。
- 中斷向量:
- 本質:以IRQ(Interrupt ReQuest number)為索引的ISR向量
- 應用:處理中斷時,CPU根據設備的IRQ定位Interrupt vector中對應的ISR
- 異常
- 本質:處理器執行指令時遭遇異常。因是同步事件(處理完才返回),又稱為軟件中斷或同步中斷
- 與中斷區別:1)發起對象 外設 vs 軟件 2)處理方式 異步 vs 同步
- 外設的訪問:device controller(含寄存器)
- I/O 端口(8/16地址):特殊命令,如IN/OUT reg, port 將I/O端口的數據讀或寫到CPU寄存器
- 內存映射I/O(內存地址):通用指令,同一總線。
- 本質:視作內存
- 優勢:設備驅動可以用C語言寫; 不需要單獨的I/O保護機制;指令重用
- 劣勢:內存的緩沖機制對於外設很危險
- 現狀:結合使用,memory-mapped i/o用於數據寄存器,i/o端口用於指令寄存器
- 硬件保護
- dual mode operation: 0 for 內核,1 for 用戶。設置在硬件上。
- privileged instructions:I/o 保護。包括所有I/o命令。僅在內核態執行。
- memory protection:控制內存可訪問的範圍。base register and limit register。【base, base + limit)
- cpu protection: 防止單程序一直占用CPU。計時器(counter register and holding register)
- 系統調用
- 操作系統提供給用戶程序訪問的接口。
- call wapper of system call in C run-time(CRT) library ->
- 如何trap into os? exception(INT 0x80/0x2e) or special instruction(SYSENTER and SYSEXIT)
- 與庫函數的區別:系統調用需要切換到內核態,也就意味著更大的調用開銷。庫函數本質上和用戶自定義的函數一致。
操作系統筆記(四)中斷和系統調用等