用戶級線程和內核級線程具有的優缺點

  1. 用戶級線程

用戶空間管理線程,每個進程需要有專用的線程表,用來跟蹤進程中的線程,這個表和內核中的進程表類似,僅僅記錄各個線程的屬性,每個線程的程序計數器,堆棧,寄存器,狀態等。線程表由運行時系統管理。

優點1:
堆棧指針和計數器被切換,新的進程就自動投入運行。
如果機器有一條保存所有寄存器的指令和一條裝入全部寄存器的指令,進程切換就會自在幾條指令內完成。這樣的線程切換會比至少陷入內核更快一個數量級;
優點2:允許每個進程擁有自己的調度算法;
優點3:用戶線程具有良好的擴展性;(因爲內核線程中需要一些固定的表格空間和堆棧空間,如果內核線程非常大,就會出現問題)。
優點4:可以在現有的操作系統上;
缺點:
1:阻塞調用不好實現;
解釋:一個線程讀取鍵盤,該線程進程系統調用是不被接受的,這樣會停止所有的線程,使用線程的主要目標,首先要允許每個線程進行阻塞調用,還要避免被阻塞的線程影響其他的線程,
2:一個線程開始運行,該進程中的其他線程就不能運行,除非第一個線程放棄CPU,在一個進程內部沒有時鐘中斷,

2.內核中線程

每個進程沒有線程邊表,內核中有記錄系統中所有線程的線程表。

優點1:內核線程不需要任何新的非阻塞的系統調用,
優點2:進程中線程引起的頁面故障好檢查。
缺點:系統調用花銷巨大。

實際應用模式:二者結合使用,
內核識別內核級線程,對其進行調度,一些內核級線程會被多個用戶級線程多路複用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章