一、進(jìn)程:
進(jìn)程(Process)是計(jì)算機(jī)中的程序關(guān)于某數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。在早期面向進(jìn)程設(shè)計(jì)的計(jì)算機(jī)結(jié)構(gòu)中,進(jìn)程是程序的基本執(zhí)行實(shí)體;在當(dāng)代面向線程設(shè)計(jì)的計(jì)算機(jī)結(jié)構(gòu)中,進(jìn)程是線程的容器。程序是指令、數(shù)據(jù)及其組織形式的描述,進(jìn)程是程序的實(shí)體。
二、線程
線程,有時(shí)被稱為輕量級(jí)進(jìn)程(Lightweight Process, LWP),是程序執(zhí)行流的最小單元。一個(gè)標(biāo)準(zhǔn)的線程由線程 ID,當(dāng)前指令指針(PC),寄存器集合和堆棧組成。另外,線程是進(jìn)程中的一個(gè)實(shí)體,是被系統(tǒng)獨(dú)立調(diào)度和分派的基本單位,線程自己不擁有系統(tǒng)資源,只擁有一點(diǎn) 兒在運(yùn)行中必不可少的資源,但它可與同屬一個(gè)進(jìn)程的其它線程共享進(jìn)程所擁有的全部資源。
三、進(jìn)程與線程的區(qū)別
1、從概念上
- 進(jìn)程:一個(gè)程序?qū)σ粋€(gè)數(shù)據(jù)集的動(dòng)態(tài)執(zhí)行過(guò)程,是分配資源的基本單位。
- 線程:一個(gè)進(jìn)程內(nèi)的基本調(diào)度單位。
- 線程的劃分尺度小于進(jìn)程,一個(gè)進(jìn)程包含一個(gè)或者更多的線程。進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。
- 本單位.線程自己基本上不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源(如程序計(jì)數(shù)器,一組寄存器和棧),但是它可與同屬一個(gè)進(jìn)程的其他的線程共享進(jìn)程所擁有的全部資源。
2、從執(zhí)行過(guò)程中來(lái)看
- 進(jìn)程:擁有獨(dú)立的內(nèi)存單元,而多個(gè)線程共享內(nèi)存,從而提高了應(yīng)用程序的運(yùn)行效率。
- 線程:每一個(gè)獨(dú)立的線程,都有一個(gè)程序運(yùn)行的入口、順序執(zhí)行序列、和程序的出口。
- 但是線程不能夠獨(dú)立的執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制。
3、從邏輯角度來(lái)看:(重要區(qū)別)
- 多線程的意義在于一個(gè)應(yīng)用程序中,有多個(gè)執(zhí)行部分可以同時(shí)執(zhí)行。但是,操作系統(tǒng)并沒(méi)有將多個(gè)線程看做多個(gè)獨(dú)立的應(yīng)用,來(lái)實(shí)現(xiàn)進(jìn)程的調(diào)度和管理及資源分配。