Tips: linux進程和線程差異(0)

1 linux進程與線程的聯繫和區別:

    在linux中,線程按照進程的方式實現。其實現機制與solaris和windows差異很大。

    在現代操作系統中,進程支持多線程,進程是資源管理以及分配的最小單元,線程是程序執行的最小單元。一個進程實體分爲:線程集和資源集(包括地址空間、打開的文件以及用戶信息等)兩部分。線程有其私有數據:PC,棧以及寄存器。

    採用多進程的問題:

1) fork一個子進程的開銷較大;

2) 各個進程擁有獨立的地址空間,需要複雜的進程間通信(IPC)技術,如消息傳遞和共享內存。

    而採用線程的優點:

1) 改進程序的實時響應能力、通信方便

2) 更有效的使用多處理器

3) 改進程序結構,多控制流

4) 減少系統資源的使用

   缺點:線程間地址空間共享可能會造成競爭。

 

2 linux線程的分類

1) 內核線程:linux內核可以看作一個服務進程,內核有多個執行流並行,因此內核線程作爲內核的分身,完成可以並行的功能模塊。內核線程的調度有內核負責,一個內核線程處於阻塞狀態時不影響其他的內核線程。

2) 用戶線程:在用戶空間中實現,內核不能獨立地對用戶線程進行調度,而是由一個線程運行庫來組織線程的調度。

 

3 關於內核線程:

使用命令"ps -ef"查看系統當中的進程,其中帶有"[]"的都是內核線程。

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