在一般的情況下,處理器處理的指令序列是相鄰的(順序執行)。
異常控制流提供了指令的跳轉,它一部分是由硬體實現的,一部分是由作業系統實現的。
異常處理
在系統啟動時,作業系統分配和初始化一張稱為異常表的跳轉表:
觸發異常時將從跳轉表中找到並執行相應的異常處理程式的**(所謂的核心態**?):
系統呼叫
每個系統呼叫都屬於異常,當呼叫c庫中的系統呼叫函式時將觸發異常。
ia32系統中,系統呼叫是通過一條稱為int 0x80(異常號)的陷阱指令來提供的。
所有linux的系統呼叫都是通過暫存器來傳遞的。
下面是乙個系統呼叫的例子
int相應的彙編**main()
main:movl $4, %eax 系統呼叫號
movl $1, %ebx 檔案描述符
movl $string, %ecx "hello, world\n"movl $len, %edx 長度
int $0x80...
CSAPP 第八章 異常控制流 小結
異常控制流 ecf 為什麼重要,主要是理解系統概念,應用程式和系統是如何互動的,理解併發,了解軟體異常如何工作。事件 狀態變化 觸發異常。異常類別 類別原因 非同步 同步 返回行為 中斷來自i o的訊號 非同步返回到下一條指令 陷阱有意的異常 同步返回到下一條指令 故障潛在的可恢復的錯誤 同步可能返...
異常控制流
異常控制流 在作業系統執行程式時,作業系統會把程式具體到每條指令,利用程式指標順序執行指令以達到程式執行的目的。這些指令類似乙個集合,稱之為控制流。程式指標依次執行每條指令,稱之為控制轉移。但是在程式執行過程中因為種種原因,程式狀態發生變化,程式指標不會依次執行這些程式指令,引起程式狀態變化的是存在...
異常控制流
作業系統通過使控制流程發生突變來響應系統狀態變化,這些突變就是異常控制流 exceptional control flow,ecf 異常控制處理流程 1.系統啟動時,作業系統分配和初始化一張異常表,使得索引為k的條目對應異常號為k的處理程式的位址。2.系統執行時,處理器檢測到狀態變化,確定相應的異常...