20165223 《資訊安全系統設計基礎》 第七週學習總結
阿新 • • 發佈:2018-11-11
第八章 異常控制流
一、學習目標
- 瞭解異常及其種類
- 理解程序和併發的概念
- 掌握程序建立和控制的系統呼叫及函式使用:fork,exec,wait,waitpid,exit,getpid,getppid,sleep,pause,setenv,unsetenv,
- 理解陣列指標、指標陣列、函式指標、指標函式的區別
- 理解訊號機制:kill,alarm,signal,sigaction
- 掌握管道和I/O重定向:pipe, dup, dup2
二、學習任務
- 注意每個系統呼叫的引數、返回值,會查幫助文件
- 閱讀教材,完成課後練習(書中有參考答案),考核:練習題把資料變換一下
- 學習視訊,掌握兩個重要命令:
- man -k key1 | grep key2| grep 2 : 根據關鍵字檢索系統呼叫
- grep -nr XXX /usr/include :查詢巨集定義,型別定義
三、教材學習
(1)異常的類別
類別 | 原因 | 非同步/同步 | 返回行為 |
---|---|---|---|
中斷 | 來自I/O裝置的訊號 | 非同步 | 總是返回到下一條指令 |
陷進 | 有意的異常 | 同步 | 總是返回到下一條指令 |
故障 | 潛在可恢復的錯誤 | 同步 | 可能返回到當前指令 |
終止 | 不可恢復的錯誤 | 同步 | 不會返回 |
- 中斷是非同步發生的,是來自處理器外部的 I/O 裝置的訊號的結果,中斷處理程式將控制返回到下一條指令。除了它,其他異常均為同步發生,叫做故障指令(fault instruction)。
- 陷阱是有意的異常,是執行一條指令的結果,陷阱處理程式將控制返回到下一條指令,它最重要的用途是在使用者程式和核心之間提供一個像過程一樣的介面,叫做系統呼叫。
- 故障是由錯誤情況引起,它可能能夠被故障處理程式修正。如果故障修理成功,則返回原指令,否則終止程式。
- 終止是不可恢復的致命錯誤造成的後果,通常是一些硬體錯誤,具有終止應用程式的能力。
(2)程序
- 程序:經典定義就是一個執行中程式的例項。
- 上下文:由程式正確執行所需的狀態組成的。這個狀態包括存放在記憶體中的程式的程式碼和資料,它的棧、通用目的暫存器的內容、程式計數器、環境變數以及開啟檔案描述符的集合。
- 程序提供給應用程式的關鍵抽象:
程序提供 | 假象 |
---|---|
獨立的邏輯控制流 | 提供程式獨佔處理機的假象 |
私有的地址空間 | 提供程式獨佔記憶體系統的假象 |
- 地址空間底部是保留給使用者程式的,包括通常的程式碼、資料、堆和棧段。程式碼段總是從地址0x400000開始。
- 當設定了模式位時,程序就執行在核心模式中(超級使用者模式),一個執行在核心模式的程序可以執行指令集中的任何指令,並且可以訪問系統中的任何記憶體位置。
- 在核心排程了一個新的程序執行後,它就搶佔當前程序,並使用一種稱為上下文切換的機制來將控制轉移到新的程序。
- 上下文切換:1)儲存當前程序的上下文,2)恢復某個先前被搶佔的程序被儲存的上下文,3)將控制傳遞給這個新恢復的程序。