Linux有內核級線程嗎?


Linux有內核級線程嗎?

線程通常被定義為一個進程中代碼的不同執行路線。從實現方式上劃分,線程有兩種類型:“用戶級線程”和“內核級線程”。

用戶線程指不需要內核支持而在用戶程序中實現的線程,其不依賴於操作系統核心,應用進程利用線程庫提供創建、同步、調度和管理線程的函數來控制用戶線程。這種線程甚至在象 DOS 這樣的操作系統中也可實現,但線程的調度需要用戶程序完成,這有些類似 Windows 3.x 的協作式多任務。另外一種則需要內核的參與,由內核完成線程的調度。其依賴於操作系統核心,由內核的內部需求進行創建和撤銷,這兩種模型各有其好處和缺點。用戶線程不需要額外的內核開支

,並且用戶態線程的實現方式可以被定製或修改以適應特殊應用的要求,但是當一個線程因 I/O 而處於等待狀態時,整個進程就會被調度程序切換為等待狀態,其他線程得不到運行的機會;而內核線程則沒有各個限制,有利於發揮多處理器的併發優勢,但卻佔用了更多的系統開支。

Windows NT和OS/2支持內核線程。Linux 支持內核級的多線程。


分享到:


相關文章: