各個教科書都解釋過,用戶線程:內核線程:內核進程有n:0:1和n:n:1和m:n:r(m>n>r>1)的關系。
用戶線程必須與內核線程相關聯的原因是:
用戶線程本身只是一堆數據用戶程序。內核線程是系統中的真正線程,因此對於用戶線程來說,用戶程序必須讓它的調度器采用用戶線程,然后在內核線程上運行它。用戶線程和內核線程之間的映射不必是一對一(1:1)映射;你可以有多個用戶線程共享相同的內核線程(每次只運行其中一個用戶線程),並且你可以有一個單獨的用戶線程在不同的內核線程(1:n)映射之間循環。
結論:
如果線程管理調度工作在用戶空間完成,則內核線程比用戶線程更少甚至沒有(只有一個內核進程)。只有一個進程是極端情況,m:n:r是中間情況。
如果在內核空間調度管理,則必須一一映射到內核空間。