計算機原理:程式管理

wuzhenhuai發表於2019-09-19

程式在執行肯定需要用的cpu與io裝置。 在程式在等待io的時候cpu就是空閒狀態, 為了更好的利用cpu,我們應該在等待時候召喚其他程式繼續執行,這樣可以提高cpu利用率,作業系統的一個主要目的就是充分利用cpu。
功能 = 結構 + 演算法
程式管理 : PCB + CPU排程演算法。
併發:只是一段時間內支援多個程式在執行。 在底層一個CPU只能有一個程式在執行。併發只是一個人為的感受,舉個例子 假設1秒鐘時間裡有10個程式,那麼計算機最多每隔100毫秒就更換一個程式。這樣計算機就能在一秒執行10個程式,這10個程式給使用者的感受是在一秒鐘內同時執行了,因為時間段太小人也感受不出來。實際上沒有並行。
並行:同時執行,前提至少2個CPU.
上下午切換:支援併發在所難免的就是要進行程式的切換(CPU不支援並行,因為多個程式在一個CPU中執行程式計數器,暫存器,指標之類的資訊就會混亂),需要程式執行現場保留到PCB,在把要執行程式PCB載入CPU。
程式狀態:建立,就緒,執行,等待,終止。
核心級執行緒:執行在核心態(能有更多的操作許可權),核心級執行緒是有作業系統去實現的。一個PCB下面可以管理多個TCB, TCB共享PCB資源,TCB是執行流單位。此時的作業系統就不會按程式去均分時間。而是利用TCB去均分時間。假設此時有10個程式,按照之前的列子那個程式切換需要切換十次的PCB, 現在如果是2個程式,每個程式中有5個執行緒,那麼此時只需要切換兩次PCB,切換10次TCB,由於TCB只是執行流程,所以切換所耗的時間會小很多。
使用者級執行緒(協程):執行在使用者態,使用者級執行緒是用程式執行緒庫去管理,所以作業系統感覺不到。同一執行流下的執行緒切換所耗的時間跟少,因為只是邏輯程式上的切換,無需呼叫作業系統的一些操作。在均分時間的時候作業系統會分給執行單位,這個執行單位在利用執行緒庫分配給他的執行緒(是使用者級別的執行流程)。如果一個執行緒崩潰就會引起所以執行緒無法執行。
輕量級程式:有程式的特性,但是少了一些不需要的東西,是上下文切換更快捷。
作業系統的程式管理方式:
支援核心執行緒的 - 程式 - 核心執行緒 - 使用者執行緒
不支援的 - 程式 - 使用者執行緒
不支援的 - 程式 - 輕量級程式 - 使用者執行緒

相關文章