百科解釋
進(jìn)程概念
進(jìn)程(英語:process),是計算機(jī)中已運(yùn)行程序的實(shí)體。在面向進(jìn)程設(shè)計的系統(tǒng)(如早期的UNIX,Linux 2.4及更早的版本)中,進(jìn)程是程序的基本執(zhí)行實(shí)體;在面向線程設(shè)計的系統(tǒng)中,進(jìn)程本身不是基本運(yùn)行單位,而是線程的容器。程序本身只是指令、數(shù)據(jù)及其組織形式的描述,進(jìn)程才是程序(那些指令和數(shù)據(jù))的真正運(yùn)行實(shí)例。
用戶下達(dá)運(yùn)行程序的命令后,就會產(chǎn)生進(jìn)程。同一程序可產(chǎn)生多個進(jìn)程(一對多關(guān)系),以允許同時有多位用戶運(yùn)行同一程序,卻不會相沖突。
每個進(jìn)程中至少包含一個線程,這個線程叫做主線程
線程概念
線程(英語:thread)是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位。它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單位。一條線程指的是進(jìn)程中一個單一順序的控制流,一個進(jìn)程中可以并發(fā)多個線程,每條線程并行執(zhí)行不同的任務(wù)。
同一進(jìn)程中的多條線程將共享該進(jìn)程中的全部系統(tǒng)資源,如虛擬地址空間,文件描述符和信號處理等等。但同一進(jìn)程中的多個線程有各自的調(diào)用棧(call stack),自己的寄存器環(huán)境(register context),自己的線程本地存儲(thread-local storage)。