作為面試中必問的一道面試題,通過看博客和書,簡單總結如下:
定義:
進程:是程序運行的實例,是系統進行資源分配和調度的一個獨立單位,它包括獨立的地址空間,資源以及1個或多個線程。
線程:可以看成是輕量級的進程,是CPU調度和分派的基本單位。
區別:
1.調度 :從上面的定義可以看出一個是調度和分派的基本單位,一個是擁有資源的基本單位
2.共享地址空間,資源:進程擁有各自獨立的地址空間,資源,所以共享復雜,需要用IPC,同步簡單; 線程共享所屬進程的資源,共享簡單,但同步復雜,要通過加鎖等措施。
3.占用內存,cpu: 進程占用內存多,切換復雜,CPU利用率低; 線程占用內存少,切換簡單,CPU利用率高。
4.相互影響: 進程間不會相互影響; 一個線程掛掉會導致整個進程掛掉。
