什麼是進程?什麼是線程?進程和線程之間的區別是什麼?

什麼是進程?什麼是線程?

進程是系統中正在運行的一個程序,程序一旦運行就是進程。

進程可以看成程序執行的一個實例。進程是系統資源分配的獨立實體,每個進程都擁有獨立的地址空間。一個進程無法訪問另一個進程的變量和數據結構,如果想讓一個進程訪問另一個進程的資源,需要使用進程間通信,比如管道,文件,套接字等。

一個進程可以擁有多個線程,每個線程使用其所屬進程的棧空間。線程與進程的一個主要區別是,統一進程內的一個主要區別是,同一進程內的多個線程會共享部分狀態,多個線程可以讀寫同一塊內存(一個進程無法直接訪問另一進程的內存)。同時,每個線程還擁有自己的寄存器和棧,其他線程可以讀寫這些棧內存。

線程是進程的一個實體,是進程的一條執行路徑。

線程是進程的一個特定執行路徑。當一個線程修改了進程的資源,它的兄弟線程可以立即看到這種變化。

進程和線程的區別體現在以下幾個方面:

1.地址空間和其他資源(如打開文件):進程間相互獨立,同一進程的各線程間共享。某進程內的線程在其他進程內不可見。

2.通信:進程間通信IPC(管道,信號量,共享內存,消息隊列),線程間可以直接獨寫進程數據段(如全局變量)來進程通信——需要進程同步和互斥手段的輔助,以保證數據的一致性。

3.調度和切換:線程上下文切換比進程上下文切換快得多。

4.在多線程OS中,進程不是一個可執行的實體。

進程和線程的選擇取決以下幾點:

1.需要頻繁創建銷燬的優先使用線程;因爲對進程來說創建和銷燬一個進程的代價是很大的。

2.線程的切換速度快,所以在需要大量計算,切換頻繁時使用線程,還有耗時的操作時用使用線程可提高應用程序的響應。

3.因爲對CPU系統的效率使用上線程更佔優勢,所以可能要發展到多機分佈的用進程,多核分佈用線程。

4.並行操作時用線程,如C/S架構的服務器端併發線程響應用戶的請求。

5.需要更穩定安全時,適合選擇進程;需要速度時,選擇線程更好。

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