(1)進(jìn)程
進(jìn)程是程序的一次執(zhí)行過程,是一個(gè)動(dòng)態(tài)的概念。是程序在執(zhí)行過程中分配和管理資源的基本單位,每一個(gè)進(jìn)程都有自己的地址空間。至少有5種基本狀態(tài):初始態(tài),執(zhí)行態(tài),等待狀態(tài),就緒狀態(tài),終止?fàn)顟B(tài)。
(2)線程
線程是CPU調(diào)度和分派的基本單位,它可與同屬一個(gè)進(jìn)程的其他的線程共享進(jìn)程所擁有的全部資源。
(3)聯(lián)系
?線程是進(jìn)程的一部分,一個(gè)線程只能屬于一個(gè)進(jìn)程,而一個(gè)進(jìn)程可以有多個(gè)線程,但至少有一個(gè)線程。
(4)區(qū)別:理解它們的差別,我從資源使用的角度出發(fā)。
根本區(qū)別:進(jìn)程是操作系統(tǒng)資源分配的基本單位,線程是程序調(diào)度和執(zhí)行的基本單位。
在開銷方面:每個(gè)進(jìn)程都有獨(dú)立的代碼和數(shù)據(jù)空間,程序之間的切換開銷大。線程可以看做是輕量級(jí)的進(jìn)程,同一類線程共享代碼塊和數(shù)據(jù)空間,線程之間的切換開銷小。
所處環(huán)境:在操作系統(tǒng)中能同時(shí)運(yùn)行多個(gè)進(jìn)程(程序);而在同一個(gè)進(jìn)程(程序)中有多個(gè)線程同時(shí)執(zhí)行(通過CPU調(diào)度,在每個(gè)時(shí)間片中只有一個(gè)線程執(zhí)行)
內(nèi)存分配方面:統(tǒng)在運(yùn)行的時(shí)候會(huì)為每個(gè)進(jìn)程分配不同的內(nèi)存空間;而對(duì)線程而言,除了CPU外,系統(tǒng)不會(huì)為線程分配內(nèi)存(線程所使用的資源來自其所屬進(jìn)程的資源),線程組之間只能共享資源。
包含關(guān)系:沒有線程的進(jìn)程可以看做是單線程的,如果一個(gè)進(jìn)程內(nèi)有多個(gè)線程,則執(zhí)行過程不是一條線的,而是多條線(線程)共同完成的;線程是進(jìn)程的一部分,所以線程也被稱為輕權(quán)進(jìn)程或者輕量級(jí)進(jìn)程。