1. 程式人生 > >2018-2019-1 20165333 《資訊安全系統設計基礎》第七週學習總結

2018-2019-1 20165333 《資訊安全系統設計基礎》第七週學習總結

教材學習:第八章《異常控制流》

知識點學習:

  • 異常控制流(ECF):現代系統通過使控制流發生突變,做出反應。
  • 對於ECF的理解:
  • ECF是作業系統的基本機制
  • 應用程式通過ECF的形式,向作業系統請求服務
  • ECF是計算機系統中實現併發的基本機制
  • 異常:是異常控制流的一種形式,是控制流中的突變
  • 事件:狀態的變化
    異常
    異常的一部分由硬體實現,一部分由作業系統實現,它就是控制流中的突變,用來響應處理器狀態的某些變化。注意和語言中的應用級的異常概念區分。

處理器中,狀態被編碼為不同的位和訊號,狀態變化被稱為事件,事件不一定和當前指令的執行有關。處理器檢測到有事件發生時,會通過異常表進行間接過程呼叫,到一個專門設計處理事件的作業系統子程式,稱為異常處理程式。

異常處理程式完成處理後,根據異常事件的型別會(執行一種):

將控制返回給當前指令(事件發生時正在執行的)。
將控制返回給下一條指令(沒有異常將會執行的)。
終止被中斷的程式。
異常表是一張跳轉表,表目k包含異常k的處理程式的地址,在系統啟動時由作業系統分配和初始化。系統中每種可能的異常都分配了一個唯一的非負整數的異常號。

linux系統呼叫;是通過一條稱為syscall的陷阱指令來提供。

  • *程序**
    程序是一個執行中程式的例項。系統中每個程式都是執行在某個程序的上下文中的。上下文由程式正確執行所需的狀態組成,包括程式的存放在儲存器中的程式碼和資料、棧、通用目的暫存器的內容、程式計數器、環境變數和開啟檔案描述符的集合。

在shell中執行程式時,shell會建立一個新的程序,然後在新程序的上下文中執行可執行目標檔案。應用程式還能建立新程序。

程序給應用程式提供了兩個關鍵抽象:

獨立的邏輯控制流,提供程式獨佔處理器的假象。
私有的地址空間,提供程式獨佔儲存器系統的假象。
邏輯控制流
程式執行的一系列PC(程式計數器)值唯一地對應於包含在程式的可執行目標檔案中的指令或包含在執行時動態連結的共享庫中的指令,這個PC值的序列稱為邏輯控制流

程序輪流使用處理器,每個程序執行它的流的一部分,然後被搶佔,其他程序開始執行。程式執行在程序的上下文中,因此像是在獨佔地使用處理器。

邏輯流是相互獨立的,程序互不影響。可以通過程序間通訊(IPC)機制來實現程序間互動。

邏輯流在時間上和其他邏輯流重疊的程序稱為併發程序,這兩個程序稱為併發執行。如A和B、A和C,而B和C不是併發執行的。

程序執行控制流的一部分的時間段稱為時間片,程序和其他程序輪換執行稱為多工,也稱時間分片。
訊號
訊號是一種更高層軟體形式的異常,它允許程序中斷其他程序。一個訊號即一條資訊,通知程序一個某種型別的事件已經在系統中發生了。
每種訊號型別都對應某個型別的系統事件。底層硬體異常通常對使用者程序不可見,訊號提供了一種機制向用戶程序通知這些異常的發生。其他訊號對應核心或其他使用者程序中較高層的軟體事件。

傳送訊號指核心通過更新目的程序上下文中的某個狀態,傳送一個訊號給目的程序。傳送訊號的原因有:

  • 核心檢測到一個系統事件,如除零或子程序終止。
  • 程序呼叫了 kill 函式,顯示要求核心傳送訊號給目的程序。程序可以給自己傳送訊號。
    接收訊號指目的程序被核心強迫以某種方式對訊號的傳送做出反應。程序可以忽略訊號,終止,或執行訊號處理程式捕獲訊號。

發出而沒有被接收的訊號稱為待處理訊號。一種型別最多有一個待處理訊號,重複的訊號被丟棄。程序可以阻塞某種訊號,這時仍可被髮送,但不會被接收。一個待處理訊號最多隻能被接收一次。