線程:併發性好、資源消耗少;資源管理和保護不太適合,由於資源是共享的。多線程
進程:方便資源管理和回收;併發性不如線程,資源消耗大。併發
線程:cpu 調度基本單位。比進程更小的獨立運行單位,同一進程中可有多個線程併發執行。函數
進程:cpu 分配資源基本單位。線程
並行:兩個或多個事件,在同一時刻發生。進程
併發:兩個或多個事件,在同一時間間隔發生。事件
各個線程能夠共享進程資源(內存地址、文件 Io),也能夠獨立調度。線程是 CPU 調度的基本單位。內存
進程是具備必定獨立功能的程序關於某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位。資源
線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。同步
進程和線程的關係:多進程
(1)一個線程只能屬於一個進程,而一個進程能夠有多個線程,但至少有一個線程。
(2)資源分配給進程,同一進程的全部線程共享該進程的全部資源。
(3)處理機分給線程,即真正在處理機上運行的是線程。
(4)線程在執行過程當中,須要協做同步。不一樣進程的線程間要利用消息通訊的辦法實現同步。
進程與線程的區別:
(1)調度:線程做爲調度和分配的基本單位,進程做爲擁有資源的基本單位
(2)併發性:不只進程之間能夠併發執行,同一個進程的多個線程之間也可併發執行
(3)擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統資源,但能夠訪問隸屬於進程的資源.
(4) 系統開銷:在建立或撤消進程時,因爲系統都要爲之分配和回收資源,致使系統的開銷明顯大於建立或撤消線程時的開銷。可是進程有獨立的地址空間,一個進程崩潰後,在保護模式下不會對其它進程產生影響,而線程只是一個進程中的不一樣執行路徑。線程有本身的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個進程死掉就等於全部的線程死掉,因此多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些
結論:
(1)線程是進程的一部分
(2)CPU調度的是線程
(3)系統爲進程分配資源,不對線程分配資源
同一進程間的線程究竟共享哪些資源呢,而又各自獨享哪些資源呢?