歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

linux 輕量級進程與普通進程的區別

輕量級進程和普通進程的區別在於:
前者沒有獨立的用戶空間(內核態線程無用戶空間,用戶態線程共享用戶空間),而普通進程有獨立的內存空間;
表現在數據結構上:線程的mm=null或者與其他線程共享,而進程有獨立的mm_struct。

 


內核線程
內核線程只運行在內核態,不受用戶態上下文的拖累。

 

Ø 處理器競爭:可以在全系統范圍內競爭處理器資源;

Ø 使用資源:唯一使用的資源是內核棧和上下文切換時保持寄存器的空間

Ø 調度:調度的開銷可能和進程自身差不多昂貴

Ø 同步效率:資源的同步和數據共享比整個進程的數據同步和共享要低一些。
輕量級進程
輕量級進程(LWP)是建立在內核之上並由內核支持的用戶線程,它是內核線程的高度抽象,每一個輕量級進程都與一個特定的內核線程關聯。內核線程只能由內核管理並像普通進程一樣被調度。

輕量級進程由clone()系統調用創建,參數是CLONE_VM,即與父進程是共享進程地址空間和系統資源。

與普通進程區別:LWP只有一個最小的執行上下文和調度程序所需的統計信息。

 

Ø 處理器競爭:因與特定內核線程關聯,因此可以在全系統范圍內競爭處理器資源

Ø 使用資源:與父進程共享進程地址空間

Ø 調度:像普通進程一樣調度
用戶線程
用戶線程是完全建立在用戶空間的線程庫,用戶線程的創建、調度、同步和銷毀全又庫函數在用戶空間完成,不需要內核的幫助。因此這種線程是極其低消耗和高效的。

Ø 處理器競爭:單純的用戶線程是建立在用戶空間,其對內核是透明的,因此其所屬進程單獨參與處理器的競爭,而進程的所有線程參與競爭該進程的資源。

Ø 使用資源:與所屬進程共享進程地址空間和系統資源。

Ø 調度:由在用戶空間實現的線程庫,在所屬進程內進行調度

Copyright © Linux教程網 All Rights Reserved