1. 程式人生 > 其它 >資訊安全系統設計與實現第六週:《Unix/Linux系統程式設計》第三章學習筆記

資訊安全系統設計與實現第六週:《Unix/Linux系統程式設計》第三章學習筆記

Unix/Linux程序管理

多工處理原則

多工處理

  • 通過不同任務之間多路複用CPU的執行時間來實現,即將CPU執行操作從一個任務切換到另一個任務;
  • 邏輯並行性稱為“併發”;
  • 多工處理是所有作業系統的基礎,也是並行程式設計的基礎。

多工處理系統(MT系統)

1.虛擬CPU;
2.init():當MT系統啟動時,main()函式呼叫init()函式以初始化系統;
3.P0呼叫kfork()來建立優先順序為1的子程序P1,並將其輸入就緒佇列中,然後P0呼叫tswitch(),將會切換任務以執行P1;
4.tswitch():實現程序上下文切換

SAVE函式:當正在執行的某個任務呼叫tswitch()時,會把返回地址儲存在堆疊上,並在彙編程式碼中進入tswitch();
scheduler():在執行了tswitch()中的SAVE函式後,任務呼叫scheduler()來選擇下一個正在執行的任務;
RESUME函式:當執行從scheduler()返回時,“執行”可能已經轉而指向另一個任務的PROC;

5.kfork():kfork()函式建立一個子任務並將其輸入readyQueue中。

程序

概念

  • 程序是對映像的執行。

多工處理系統內的程序

  • 多工處理系統支援動態程序建立、程序終止,以及通過休眠與喚醒實現程序同步、程序關係,以及以二叉樹的形式實現程序家族樹,從而允許父程序等待子程序終止。

程序的執行模式

  • 核心模式Kmode
  • 使用者模式Umode

在Kmode模式下,通過將CPU的狀態暫存器從K模式更改為U模式,可輕鬆切換至Umode;但Umode程序只能通過中斷、陷阱、系統呼叫三種方式進入Kmode。

程序管理的系統呼叫

  • fork
  • wait
  • exec
  • exit

I/O重定向

I/O重定向原則

  • 標準輸入:如果用一個新開啟的檔案來替換檔案描述符0,那麼輸入將來自該檔案而不是原始輸入裝置。
  • 標準輸出:更改檔案描述符1,指向開啟的檔名,然後stdout的輸出將會轉到該檔案而不是螢幕;同樣也可以將stderr重定向到一個檔案。

管道程式設計