核心級執行緒

核心級執行緒

核心級執行緒,是指由核心管理的執行緒。用戶應用程式通過API和系統調用(system call)來訪問執行緒工具。

基本介紹

  • 中文名:核心級執行緒
  • 外文名:kernel-level treads/ Kernel Threads 
  • 定義:由核心完成執行緒的調度
  • 依賴:作業系統核心
執行緒通常被定義為一個進程中代碼的不同執行路線,一個進程可包含多個執行緒。從實現方式上劃分,執行緒有兩種類型:“用戶級執行緒”和“核心級執行緒”(kernel-level treads)。
核心執行緒(kernel-level threads)指需要核心的參與,由核心完成執行緒的調度。其依賴於作業系統核心,由核心的內部需求進行創建和撤銷。核心執行緒的執行緒表(thread table)位於核心中,包括了執行緒控制快(TCB),一旦執行緒阻塞,核心會從當前或者其他進程(process)中重新選擇一個執行緒保證程式的執行。
優點:1.實現了真正意義上的執行緒並行。
2.不需要運行時系統(runtime system)的參與。
缺點:1.頻繁的模式切換(mode switches)導致核心開支(overhead)。
windows和linux套用的就是核心執行緒。
用戶執行緒(user-level threads)指不需要核心支持而在用戶程式中實現的執行緒,其不依賴於作業系統核心,套用進程利用執行緒庫提供創建、同步、調度和管理執行緒的函式來控制用戶執行緒。這種執行緒甚至在象 DOS 這樣的作業系統中也可實現,但執行緒的調度需要用戶程式完成,這有些類似 Windows 3.x 的協作式多任務。
優點:1.執行緒位於用戶空間(即不需要模式切換)。
2.完全控制執行緒調度器(例如:網站伺服器)。
3.獨立於作業系統(執行緒可以在不支持它們的作業系統上運行)。
4.運行時系統(run time system)可以切換用戶空間中的本地阻塞執行緒(例如:等待另一個執行緒完成).
缺點:1.系統調度中,對一個執行緒的阻塞將會導致整個進程阻塞;(例如:當一個執行緒因 I/O 而處於等待狀態時,整個進程就會被調度程式切換為等待狀態,其他執行緒得不到運行的機會)
2.網站伺服器中,一個頁面的錯誤將導致整個進程阻塞。
3.非真正意義的執行緒並行(一個進程安排在單個CPU上)。
4.不存在時鐘中斷(例如,如果用戶執行緒是非搶占式(non-preemptive)的,將無法被“進程調度”(schedulers)以round-robin的調度算法調用,因為round-robin調度算法中限制了cpu時間片)。
用戶執行緒不需要額外的核心開支,並且用戶態執行緒的實現方式可以被定製或修改以適應特殊套用的要求,但是;而核心執行緒則沒有這個限制,有利於發揮多處理器的並發優勢,但卻占用了更多的系統開支。

相關詞條

熱門詞條

聯絡我們