Linux 進程:
- 有獨立的內核堆棧和獨立的存儲空間,它是操作系統中資源分配和調度的最小單位。
- 以進程爲單位,分配系統資源,給程序進行調度。
- 在執行一個程序時,它會創建一個進程,來執行應用程序,並且伴隨着資源的分配和釋放。
(備註:所謂進程,說白了就是應用程序)
Davik 進程:
- Dalvik 虛擬機運行在 Linux 系統之上。
- Davik 進程就是 Linux 操作系統中的一個進程,屬於 Linux 進程。
- 每一個 Android 應用程序進程都有一個 Dalvik 虛擬機實例。這樣做的好處是 Android 應用程序進程之間不會相互影響,也就是說,一個 Android 應用程序進程的意外終止,不會影響到其他的應用程序進程的正常運行。
(備註:每個 Android 應用程序都會對應一個獨立的 Dalvik 虛擬機)
線程:
- 線程是進程的一個實體,是 CPU 調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。
- 線程自己基本上不擁有系統資源,在運行時,只需要必不可少的資源(e.g. 程序計數器,一組寄存器和棧)
- 線程與同屬一個進程的其他的線程共享進程所擁有的全部資源。
e.g. 開啓一個子線程:
new Thread().start();
進程和線程的區別:
- 一個程序至少有一個進程,一個進程至少有一個線程。
- 線程的劃分尺度小於進程,使得多線程程序的併發性高。
- 進程在執行過程中擁有獨立的內存單元,而多個線程共享內存(同屬一個進程),從而極大地提高了程序的運行效率。
- 每個獨立的進程有一個程序運行的入口、順序執行序列和程序的出口。但是線程不能夠獨立執行,必須以存在應用程序中,由應用程序提供多個線程執行控制。
- 從邏輯角度來看,多線程的意義在於一個應用程序中,有多個執行部分可以同時執行。但操作系統並沒有將多個線程看做多個獨立的應用,來實現進程的調度和管理以及資源分配。這就是進程和線程的重要區別。