資訊安全系統設計與實現第六週:《Unix/Linux系統程式設計》第三章學習筆記
阿新 • • 發佈:2021-10-25
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重定向到一個檔案。