複製鏈接
請複製以下鏈接發送給好友

內核級線程

鎖定
內核級線程,是指由內核管理的線程。用户應用程序通過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時間片)。
用户線程不需要額外的內核開支,並且用户態線程的實現方式可以被定製或修改以適應特殊應用的要求,但是;而內核線程則沒有這個限制,有利於發揮多處理器的併發優勢,但卻佔用了更多的系統開支。