異常控制流
異常
異常:控制流中的突變。在任何情況下,當處理器檢測到有事件發生時,會通過異常表的跳轉表,轉到異常處理程式。
異常處理:異常号;異常表(異常表基址寄存器)
異常類别:
- 中斷
- 陷阱
- 故障
- 終止
Linux /IA32
1.Linux/IA32 故障和終止
- 除法錯誤
- 一般保護故障
- 缺頁
- 機器檢查
Linux/IA32 系統調用
Linux提供上百種系統調用;IA32系統上,系統調用是通過一條 int n 的陷阱指令來提供的。
程序
程序的經典定義就是 一個執行中的程式的執行個體 。系統中的每一個程式都是運作在某個程序上下文中的。
- 邏輯控制流
- 并發流(并發 多任務 時間片 并行流 并行執行)
- 私有位址空間
- 使用者模式和核心模式
- 上下文切換
系統調用錯誤處理
錯誤報告函數、錯誤處理包裝
程序控制:
- 擷取程序ID
- 建立和終止程序1. 運作2. 停止3. 終止
- 回收子程序
- 判定等待集合的成員
- 修改預設行為
- 檢查已回收子程序的退出狀态
- 錯誤條件
- wait函數
- 讓程序休眠
sleep(); pause();
- 加載并運作程式
- 利用fork和execve運作程式
信号
-
發送信号
1.程序組
2.用/bit/kill程式發送信号
3.從鍵盤發送信号
4.用kill函數發送信号
5.用alarm函數發送信号
- 接收信号
-
信号處理問題
待處理信号被阻塞
待處理信号不會排隊等待
系統調用可以被中斷
***不可以用信号來對其他程序中發生的事件計數。
- 顯式地阻塞和取消阻塞信号
- 同步流以避免讨厭的并發錯誤
非本地跳轉
操作程序的工具
參考資料:《深入了解計算機系統》
問題:1.對信号處理等待機制有困惑