CSAPP-2.1-程式

fjutcoder發表於2020-11-27

程式模型

  • 程式存在的原因:在多道程式系統中,描述併發(偽並行)。
  • 程式定義:一個這個在執行的程式的映像(例項),包括許多狀態,如:PC、Register、變數的當前值。

多道程式設計:記憶體中同時能夠容納多個程式

程式狀態

  1. 執行態。該時刻實際佔用CPU
  2. 就緒態(暫停態)。可執行,等待其他程式執行結束。
  3. 阻塞態。等待某種外部事件的發生。
    在這裡插入圖片描述

程式的建立與終止

程式建立

  • Fork():建立程式的系統呼叫。建立一個與呼叫程式相同的副本。
  • 修改共享記憶體:不可寫的記憶體是共享的。如果全部記憶體都是共享的,那麼需要採用寫時複製技術。

寫時複製:保證子程式不會修改父程式的共享記憶體。在寫之前,複製到記憶體的其他區域,然後建立記憶體對映。

程式終止

  • Exit():終止程式。
  • 退出條件:
    • 正常退出(自願)
    • 錯誤退出(自願)
    • 嚴重錯誤(非自願)
    • 程式被殺死(非自願)

程式的實現

  • 作業系統維護一張表:程式表也成為程式控制塊PCB
    在這裡插入圖片描述

多道程式設計模型

  • 採用多道程式設計可以提高CPU利用率
  • 假設一個程式等待I/O操作的時間與停留在記憶體的時間比是p。CPU利用率=1- p n p^n pn,n是多道程式設計的道數。

相關文章