CSAPP 第八章 異常控制流 小結

2021-06-04 14:35:08 字數 805 閱讀 2713

異常控制流(ecf):為什麼重要,主要是理解系統概念,應用程式和系統是如何互動的,理解併發,了解軟體異常如何工作。

事件:狀態變化:觸發異常。

異常類別:

類別原因

非同步/同步

返回行為

中斷來自i/o的訊號

非同步返回到下一條指令

陷阱有意的異常

同步返回到下一條指令

故障潛在的可恢復的錯誤

同步可能返回到當前指令

中值不可恢復的錯誤

同步不返回

後面這三個是故障指令。第乙個指令是正常指令,指的是計算機同時處理多工的能力

陷阱(trap)最重要的用途就是在使用者程式和核心之間提供乙個想過程一樣的介面,例如讀、寫、建立程序,引導程式等。此時通過系統呼叫實現時鐘中斷,時間片可以輪轉。

終止:異常退出。

程序:程序是執行中程式的例項。系統的每個程式的都是執行在程序的上下文中(context)。

邏輯控制流:掛起。上下文切換。快取記憶體汙染

併發流:併發與並行。

程序控制:父程序建立子程序,並且系統自動銷毀,當父程序終止時。

程序狀態:執行,掛起,終止。

子程序複製了全部父程序的堆疊、資料區和**區內容,。

特性:

訊號:個語言和系統都是類似的。還有框架,例如mfc。

併發錯誤:同步流,例子:如果先執行了子程序,核心注意到子程序,發出乙個訊號給父程序,然後執行了父程序的之前一部分指令,此時父程序處理了訊號,此時子程序已經被刪除了,但是父程序仍然執行addjob的**,把不存在的子程序加入到任務列表中。

競爭的經典案例。

第八章 異常

python用異常物件 exception object 表示異常情況。遇到錯誤後,會引發異常。如果異常物件未被處理或捕捉,程式就會用回溯 traceback,一種錯誤資訊 終止執行。每個異常都是一些類的例項 使用乙個類 exception的子類 或例項引數呼叫raise 捕捉異常並且進行處理,而不...

第八章學習小結

內容 這章我具體學習了 穩定的 1.直接插入法 最簡單且穩定。2.折半插入法 利用 折半查詢 3.氣泡排序 最簡單的交換排序,可用於順序表和鏈式儲存結構,但只能交換相鄰記錄,適於小規模資料。4.簡單選擇排序 即 直接選擇排序 與冒泡演算法上有些類似,但也不適於大規模資料 o n 2 2 5.歸併排序...

第八章學習小結

思維導圖 練習總結 排序的穩定性是指 保證排序前兩個相等的數在序列中的前後順序,和排序後相同。要從 50 個鍵值中找出最大的 3 個值,選擇排序比堆排序快。t 規模較小直接選擇排序快 設有5000個無序的元素,希望用最快的速度排出其中前50個最大的元素,最好選堆排序 堆排序不需要等整個排序結束就可挑...