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

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

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

教材學習內容總結

併發程式設計

  • 併發:邏輯控制流在時間上重疊
  • 併發程式:使用應用級併發的應用程式稱為併發程式。
    三種基本的構造併發程式的方法:
  • 程序,用核心來呼叫和維護,有獨立的虛擬地址空間,顯式的程序間通訊機制。
  • I/O多路複用,應用程式在一個程序的上下文中顯式的排程控制流。邏輯流被模型化為狀態機。
    執行緒,執行在一個單一程序上下文中的邏輯流。由核心進行排程,共享同一個虛擬地址空間。
  • 基於程序的併發程式設計
    構造併發程式最簡單的方法就是用程序。

  • 一個構造併發伺服器的自然方法就是,在父程序中接受客戶端連線請求,然後建立一個新的子程序來為每個新客戶端提供服務。
    基於程序的併發伺服器

  • 通常伺服器會執行很長的時間,所以我們必須要包括一個 SIGCHLD 處理程式,來回收僵死 (zombie) 子程序的資源。當 SIGCHLD 處理程式執行時, SIGCHLD 訊號是阻塞的,而 Unix 訊號是不排隊的。

  • 父子程序必須關閉它們各自的 connfd 拷貝。父程序必須關閉它的已連線描述符,以避免儲存器洩漏。直到父子程序的 connfd 都關閉了,到客戶端的連線才會終止。

程序的優劣

  • 優點:一個程序不可能不小心覆蓋另一個程序的虛擬儲存器,這就消除了許多令人迷惑的錯誤。
  • 缺點:獨立的地址空間使得程序共享狀態資訊變得更加困難。為了共享資訊,它們必須使用顯式的IPC(程序間通訊)機制。基於程序的設計的另一個缺點是,它們往往比較慢,因為程序控制和 IPC 的開銷很高。

基於 I/O 多路複用的併發程式設計

  • I/O多路複用技術的基本思路:使用select函式,要求核心掛起程序,只有在一個或多個I/O事件發生後,才將控制返回給應用程式
  • 狀態機就是一組狀態、輸入事件和轉移,轉移就是將狀態和輸入時間對映到狀態,自迴圈是同一輸入和輸出狀態之間的轉移。
    I/O 多路複用技術的優劣
  • 優點:
    它比基於程序的設計給了程式設計師更多的對程式行為的控制。
    一個基於 I/O 多路複用的事件驅動伺服器是執行在單一程序上下文中的,因 此每個邏輯流都能訪問該程序的全部地址空間。
  • 缺點:編碼複雜且不能充分利用多核處理器。
    基於執行緒的併發程式設計
  • 執行緒:執行在程序上下文中的邏輯流。

執行緒有自己的執行緒上下文,包括一個唯一的整數執行緒ID、棧、棧指標、程式計數器、通用目的暫存器和條件碼。所有執行在一個程序裡的執行緒共享該程序的整個虛擬地址空間
主執行緒:每個程序開始生命週期時都是單一執行緒。

對等執行緒:某一時刻,主執行緒建立的對等執行緒。

  • 進度圖
    進度圖是將n個併發執行緒的執行模型化為一條n維笛卡爾空間中的軌跡線,原點對應於沒有任何執行緒完成一條指令的初始狀態。

  • 轉換規則:
    合法的轉換是向右或者向上,即某一個執行緒中的一條指令完成
    兩條指令不能在同一時刻完成,即不允許出現對角線
    程式不能反向執行,即不能出現向下或向左
    訊號量定義:
type semaphore=record
count: integer;
queue: list of process
end;
var s:semaphore;

讀者—寫者問題:
(1)讀者優先,要求不讓讀者等待,除非已經把使用物件的許可權賦予了一個寫者。
(2)寫者優先,要求一旦一個寫者準備好可以寫,它就會盡可能地完成它的寫操作。
(3)飢餓就是一個執行緒無限期地阻塞,無法進展。
其他併發問題

  • 執行緒安全
    當且僅當被多個併發執行緒反覆地呼叫時,它會一直產生正確的結果。

  • 可重入性
    顯式可重入的:所有函式引數都是傳值傳遞,沒有指標,並且所有的資料引用都是本地的自動棧變數,沒有引用靜態或全劇變數。
    隱式可重入的:呼叫執行緒小心的傳遞指向非共享資料的指標。

競爭

  • 發生的原因:一個程式的正確性依賴於一個執行緒要在另一個執行緒到達y點之前到達它的控制流中的x點。也就是說,程式設計師假定執行緒會按照某種特殊的軌跡穿過執行狀態空間,忘了一條準則規定:執行緒化的程式必須對任何可行的軌跡線都正確工作。
  • 消除方法:動態的為每個整數ID分配一個獨立的塊,並且傳遞給執行緒例程一個指向這個塊的指標
    死鎖
  • 死鎖:一組執行緒被阻塞了,等待一個永遠也不會為真的條件。