可以使用queue的概念來解釋。想像一個排隊的場景,不同的process就像是排隊等待服務的人,而CPU則是提供服務的服務窗口 * Multiprogramming:CPU 始終運行process以最大化 CPU 利用率 * Time sharing:頻繁切換CPU,以便用戶可以在每個程序運行時與其進行交互 * process必須等到 CPU 空閒並且可以重新調度  ## Process Scheduling Queues * Job queue(新狀態)-系統中所有process的集合 * Ready queue(就緒狀態) - 駐留在主內存中的所有process的集合,準備好並等待執行 * Device queue(等待狀態)- 等待 I/O 設備的process集  ## Schedulers * Short-term scheduler(CPU scheduler)-選擇應執行哪個process並分配CPU(Ready state → Run state) * Long-term scheduler(job scheduler)——選擇哪些process應加載到memory中並放入就緒queue(New state→ Ready state) * Medium-term scheduler - 選擇哪些process應換入/換出memory(Ready state→→ Wait state)  ## process 樹 * process樹的形狀和結構取決於process的創建和終止操作。 * 作業系統通常提供相關的系統調用和命令來查看和管理process樹的結構。 * 每個process都由唯一的處理器標識符(pid) 標識 root process: process樹的root節點是操作系統創建的首個 process,稱為root process。root process是所有其他 process的祖先。 父子關係:在 process樹中,每個 process可以擁有一個父 process和多個子 process。父 process創建子 process,子 process是父 process的衍生。子 process可以再創建自己的子 process,形成多個層次的層次結構。 階層關係: process樹展現了 process之間的階層關係。每個 process(除了根 process)都有唯一的父 process,並且可以有多個子 process。這種結構使得 process之間可以形成層次結構,方便管理和組織。 狀態傳遞:在 process樹中, process的狀態可以在父子 process之間傳遞。例如,當父 process終止時,它的子 process也會被系統接管或終止  UNIX:“ps -ael”將列出所有活動process的完整信息 ## Long-term scheduler * 多道程序控製程度 * 執行頻率較低(例如,僅在process離開系統時調用或幾分鐘調用一次) * 選擇CPU密集型和I/O密集型process的良好組合以提高系統整體性能 * UNIX/NT:沒有Long-term scheduler * 創建的process放置在Memory中供Short-term scheduler程序使用 * 多道程序設計程度受到硬體限制(例如終端數量)或用戶自我調整性質的限制 ## Short-term scheduler 非常頻繁地執行(例如每 100 毫秒執行一次) 必須高效: * 如果選擇一個工作需要 10 毫秒,那麼這樣的選擇需要 100 毫秒, * → 管理費用 = 10/110 = 9%  ## Medium-Term Scheduler 換出:從memory中刪除process以減少多道程序設計的程度 換入:將換出process重新引入memory 目的:改善process組合,釋放memory  ## Process Creation * 資源共享 * 父子process共享所有資源 * 子process共享父process的資源子集 * 父母和孩子不共享資源 * 執行的兩種可能性 * 父級和子級同時執行 * 父process等待子process終止 * 地址空間的兩種可能性 * 父級的子級副本,通過共享變量進行通信 * 子process中加載了一個程序,通過消息傳遞進行通信 ## UNIX/Linux process創建 * fork系統調用 * 創建一個新的(子)流程 * 新process複製其父process的地址空間 * 子process和父process在 fork 後同時執行 * Child:fork的返回值為0 * Parent:fork的返回值為子process的PID * execlp 系統調用 * 將新的二進製文件加載到內存中 - 銷毀舊代碼 * 等待系統調用 * 父process等待其子process之一完成  ![Uploading file..._ii20x7ef7]()
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up