作業系統 KLT和ULT

2021-09-25 20:45:57 字數 784 閱讀 6913

很好理解,就是所有的執行緒都交給核心管理。需要達成這一點,核心就需要維護乙個所有執行緒的執行緒表。執行緒表儲存了暫存器、狀態和其他資訊。當然每個執行緒所屬程序的程序表也是維護在核心的。

排程過程

所有能夠阻塞執行緒的呼叫都以系統呼叫的形式實現,這代表著每次切換執行緒都會伴隨著一次正向過程和一次逆向過程。代價是很可觀的。

但是這也帶來了優勢,正因為是在核心排程執行緒,所以不一定是排程同一程序的執行緒。它可以選擇同一程序的就緒執行緒或者不同程序的就緒執行緒。

在核心建立和銷毀執行緒的代價是比較大的,這就產生了乙個「**」的思想。當某個執行緒被撤銷時,把執行緒標誌為不可執行的,但是資料結構不受影響。這樣子在之後如果需要建立新的執行緒,就重啟乙個這樣子被「**」的執行緒。已經有點像執行緒池了是不是。

對照一下,就是將執行緒的排程放在使用者態執行,對於核心來說就像是單執行緒一樣。這樣子的話,上述的執行緒表就需要維護在對應的程序之間了,而且程序之間無法共享資料,所以執行緒表只是各自程序的執行緒。

排程過程兩者的有缺點都這麼明顯,而且顯然非常的互補。那自然而然就出現了一種混合實現的思想,其中一種方法就是使用核心級執行緒,然後將使用者級執行緒與某些或者全部核心執行緒多路復用起來。如果採用這種方法,程式設計人員可以決定有多少個核心級執行緒和多少個使用者級執行緒彼此多路復用。

採用這種方法後,核心值識別核心級執行緒,並排程核心級執行緒。

核心級執行緒(KLT)和使用者級執行緒(ULT)

tags klt ult 核心級執行緒 使用者級執行緒 引言 本文涉及到作業系統的核心模式和使用者模式,如果不太懂的話,可以參看我的這篇文章核心模式和使用者模式,其中簡單的進行了介紹。首先說一下執行緒對於程序的優勢,這其實就是執行緒出現的意義。程序是資源擁有的基本單位,程序切換需要儲存程序狀態,會造...

分時作業系統和實時作業系統

1.linux分時作業系統和rtos 實時作業系統 我們知道,相對比vxworks,linux核心屬於非實時作業系統,原因主要是 1 實時任務搶占時間是不可預期的。2 為什麼搶占是不可預期的呢?這涉及到核心中的搶占點知識,其中spin lock鎖,在unlock時是乙個搶占點,但是spinlock本...

分時作業系統和實時作業系統

分時作業系統將系統處理機時間與記憶體空間按一定的時間間隔 劃分時間片 採用輪轉執行方式輪流地切換給各終端使用者的程式使用 例如規定每個作業每次只能執行乙個時間片 由於時間間隔很短,每個使用者就感覺像獨佔全機一樣,這樣就解決了主機共享問題。而對於人機互動,為實現使用者鍵入命令後能對自己的作業及其執行及...