面試高頻題:線程和進(jìn)程的區(qū)別

(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)程。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容