chapter4

hisun9發表於2024-10-22

img

透過python process.run.py -h命令瞭解了process.run.py的可用的選項

題外話(關於/home目錄的):

/home 目錄是 Linux 系統中用於儲存使用者個人檔案的地方。每個使用者在 /home 下都有一個以其使用者名稱命名的子目錄,用於存放該使用者的個人資料和設定。以下是一些 /home 目錄的特點:

  • 使用者目錄:每個使用者的主目錄通常是 /home/username,其中 username 是使用者的登入名。

  • 個人檔案:使用者可以在其主目錄中建立資料夾和檔案,儲存文件、圖片、下載的內容等。

  • 配置檔案:使用者的個性化配置檔案(如 .bashrc.profile)通常以點(.)開頭,存放在使用者的主目錄中。

  • 許可權:使用者只能訪問和修改自己的主目錄,其他使用者無法直接訪問,除非他們有適當的許可權。

第一題

問題:用以下標誌執行程式:./process-run.py -l 5:100,5:100。CPU 利用率(CPU 使用時間的百分比)應該是多少?為什麼你知道這一點?利用 -c 標記檢視你的答案是否正確。

執行./process-run.py -l 5:100,5:100

img

執行./process-run.py -l 5:100,5:100 -c./process-run.py -l 5:100,5:100 -c -p

img

CPU利用率為100%,程式沒有進行IO操作。

第二題

問題:現在用這些標誌執行:./process-run.py -l 4:100,1:0。這些標誌指定了一個包含 4 條指令的程序(都要使用 CPU),並且只是簡單地發出 I/O 並等待它完成。完成這兩個程序需要多長時間?利用-c 檢查你的答案是否正確。

執行./process-run.py -l 4:100,1:0

img

執行./process-run.py -l 4:100,1:0 -c

img

執行./process-run.py -l 4:100,1:0 -c -p

img

需要11個時間週期(Time)

第三題

題目:現在交換程序的順序:./process-run.py -l 1:0,4:100。現在發生了什麼?交換順序是否重要?為什麼?同樣,用-c 看看你的答案是否正確。

執行./process-run.py -l 1:0,4:100

img

執行./process-run.py -l 1:0,4:100 -c

img

執行./process-run.py -l 1:0,4:100 -c -p

img

程序0(PID:0)執行IO操作,程序1(PID:1)使用CPU,執行時間從11個時間週期變為7個時間週期

第四題

問題:現在探索另一些標誌。一個重要的標誌是-S,它決定了當程序發出 I/O 時系統如何反應。將標誌設定為 SWITCH_ON_END,在程序進行 I/O 操作時,系統將不會切換到另一個程序,而是等待程序完成。當你執行以下兩個程序時,會發生什麼情況?一個執行 I/O,另一個執行 CPU 工作。(-l 1:0,4:100 -c -S SWITCH_ON_END

執行./process-run.py -l 1:0,4:100 -c -S SWITCH_ON_END

img

程序0(PID:0)執行IO操作時,程序1(PID:1)等待。

第五題

問題:現在,執行相同的程序,但切換行為設定,在等待 I/O 時切換到另一個程序(-l 1:0,4:100 -c -S SWITCH_ON_IO)。現在會發生什麼?利用-c 來確認你的答案是否正確。

執行./process-run.py -l 1:0,4:100 -c -S SWITCH_ON_IO

img

程序0(PID:0)執行IO操作時,程序1(PID:1)使用CPU,執行CPU操作,充分利用CPU資源。

第六題

問題:另一個重要的行為是 I/O 完成時要做什麼。利用-I IO_RUN_LATER,當 I/O 完成時,發出它的程序不一定馬上執行。相反,當時執行的程序一直執行。當你執行這個程序組合時會發生什麼?(./process-run.py -l 3:0,5:100,5:100,5:100 -S SWITCH_ON_IO -I IO_RUN_ LATER -c -p)系統資源是否被有效利用?

執行./process-run.py -l 3:0,5:100,5:100,5:100 -S SWITCH_ON_IO -I IO_RUN_ LATER -c -p

img

系統資源沒有被有效利用,時鐘週期1923,2630,CPU空閒

第七題

問題:現在執行相同的程序,但使用 -I IO_RUN_IMMEDIATE 設定,該設定立即執行發出I/O 的程序。這種行為有何不同?為什麼執行一個剛剛完成 I/O 的程序會是一個好主意?

執行./process-run.py -l 3:0,5:100,5:100,5:100 -S SWITCH_ON_IO -I IO_RUN_IMMEDIATE -c -p

img

系統資源被有效利用,當IO密集程序IO完畢時,立即切換到該程序發出IO操作請求,再讓出CPU,使得系統資源被充分利用。(有過IO操作的程序很有可能後面也會進行IO操作,為了使CPU有效利用,應該在IO結束不久後執行該程序,使其得到繼續阻塞IO的機會。)

第八題

問題:現在執行一些隨機生成的程序,例如-s 1 -l 3:50,3:50, -s 2 -l 3:50,3:50, -s 3 -l 3:50,3:50。看看你是否能預測追蹤記錄會如何變化?當你使用-I IO_RUN_IMMEDIATE-I IO_RUN_ LATER 時會發生什麼?當你使用-S SWITCH_ON_IO-S SWITCH_ON_END 時會發生什麼?

以隨機種子=1為例:

執行./process-run.py -s 1 -l 3:50,3:50 -c -p

img

使用-I IO_RUN_IMMEDIATE-I IO_RUN_ LATER

執行./process-run.py -s 1 -l 3:50,3:50 -c -p -I IO_RUN_IMMEDIATE

img

執行./process-run.py -s 1 -l 3:50,3:50 -c -p -I IO_RUN_LATER

img

兩者沒區別,因為在IO完成前所有CPU任務都已經完成

使用-S SWITCH_ON_IO-S SWITCH_ON_END

執行./process-run.py -s 1 -l 3:50,3:50 -c -p -S SWITCH_ON_IO

img

執行./process-run.py -s 1 -l 3:50,3:50 -c -p -S SWITCH_ON_END

img