1、首先,進(jìn)程是一個(gè)實(shí)體,每一個(gè)進(jìn)程都有自己對(duì)應(yīng)的系統(tǒng)分配的內(nèi)存地址,一般情況下,包括文本區(qū)域(text region)、數(shù)據(jù)區(qū)域(data region)和堆棧(stack region)。文本區(qū)域存儲(chǔ)處理器執(zhí)行的代碼;數(shù)據(jù)區(qū)域存儲(chǔ)變量和進(jìn)程執(zhí)行期間使用的動(dòng)態(tài)分配的內(nèi)存;堆棧區(qū)域存儲(chǔ)著活動(dòng)過程調(diào)用的指令和本地變量;
2、進(jìn)程可以理解為一個(gè)正在執(zhí)行的程序,程序是一個(gè)靜態(tài)的沒有生命體征的實(shí)體,而經(jīng)過操作系統(tǒng)處理對(duì)其賦予生命時(shí)(即調(diào)用程序執(zhí)行操作),這個(gè)程序才可以變?yōu)橐粋€(gè)活動(dòng)的、有生命體征的實(shí)體,即進(jìn)程。
3、進(jìn)程共有三種狀態(tài):就緒、阻塞和運(yùn)行。
(1)、就緒態(tài):就緒狀態(tài)是指程序已達(dá)到可以運(yùn)行的狀態(tài),只等CPU分配資源就可以運(yùn)行的狀態(tài)。
(2)、阻塞態(tài):當(dāng)程序運(yùn)行條件沒有滿足時(shí),需要等待條件滿足時(shí)候才能執(zhí)行時(shí)所處的狀態(tài),如等待i/o操作時(shí)候,此刻的狀態(tài)就叫阻塞態(tài)。
(3)、運(yùn)行態(tài):進(jìn)程占用CPU,并在CPU上運(yùn)行。即程序正在運(yùn)行時(shí)所處的狀態(tài)。
進(jìn)程狀態(tài)轉(zhuǎn)換在此處不在贅述,請(qǐng)看下一篇文章。
程序
程序是指系統(tǒng)指令和數(shù)據(jù)的有序集合,是一個(gè)靜態(tài)的實(shí)體,不存在運(yùn)行狀態(tài)的概念。
進(jìn)程與程序的概念:
1、進(jìn)程是程序運(yùn)行所處的狀態(tài)實(shí)體名稱,是一個(gè)動(dòng)態(tài)概念。
2、進(jìn)程包含程序,進(jìn)程的執(zhí)行離不開程序,二進(jìn)程的文本區(qū)域就是代碼區(qū),即程序存儲(chǔ)的區(qū)域。
線程
線程是進(jìn)程中執(zhí)行運(yùn)算的最小單元,是操作系統(tǒng)執(zhí)行處理機(jī)制的基本單位。每個(gè)進(jìn)程至少有一個(gè)線程,線程可以利用進(jìn)程所擁有的資源執(zhí)行調(diào)度和運(yùn)算。
在引入線程的操作系統(tǒng)中,通常都是把進(jìn)程作為分配資源的基本單位,而把線程作為獨(dú)立運(yùn)行和獨(dú)立調(diào)度的基本單位,線程可以在一個(gè)進(jìn)程中進(jìn)行切換,占用資源開銷小,能更高效的提高系統(tǒng)多個(gè)程序間并發(fā)執(zhí)行的程度。
線程既可以有操作系統(tǒng)內(nèi)核控制調(diào)度,也可以由用戶程序控制調(diào)度。
進(jìn)程與線程的對(duì)比
1、進(jìn)程是操作系統(tǒng)資源分配的基本單位,所有與該進(jìn)程有關(guān)的資源,均會(huì)被記錄在進(jìn)程控制塊PCB中,以表示該進(jìn)程所擁有的資源。同一進(jìn)程下的所有線程共享該進(jìn)程下的所有資源。
2、線程是分配處理機(jī)的基本單位,與系統(tǒng)資源分配無關(guān)。事實(shí)上,正在在處理機(jī)上運(yùn)行的是線程,并非進(jìn)程。
3、一個(gè)線程只能屬于一個(gè)進(jìn)程,而一個(gè)進(jìn)程可以有多個(gè)線程,但至少有一個(gè)線程。
4、線程在執(zhí)行的時(shí)候需要協(xié)作同步,不同進(jìn)程的線程間要利用消息通信方法實(shí)現(xiàn)同步。
進(jìn)程與線程的關(guān)系
1、進(jìn)程將CPU資源分給線程,即真正在CPU上運(yùn)行的是線程。
2、操作資源分配給進(jìn)程,同一進(jìn)程的所有線程共享該進(jìn)程的所有資源。
多進(jìn)程
在同一個(gè)時(shí)間里,同一個(gè)計(jì)算機(jī)系統(tǒng)中如果允許兩個(gè)或兩個(gè)以上的進(jìn)程處于運(yùn)行狀態(tài),這便是多任務(wù)(多進(jìn)程)。現(xiàn)代的操作系統(tǒng)幾乎都是多進(jìn)程操作系統(tǒng),能夠同時(shí)管理多個(gè)進(jìn)程的運(yùn)行。 多進(jìn)程帶來的好處是明顯的。但是多進(jìn)程對(duì)于系統(tǒng)的資源要求甚高,資源浪費(fèi)也比較嚴(yán)重。應(yīng)用多進(jìn)程場(chǎng)景最多的是windows系統(tǒng),例如同時(shí)打開運(yùn)行軟件,每個(gè)軟件打開相當(dāng)于運(yùn)行一個(gè)進(jìn)程。
多線程
在一段完整的代碼中,往往會(huì)有需要獨(dú)立的代碼模塊,而這些獨(dú)立運(yùn)行的程序片段叫作“線程”(Thread),利用多個(gè)線程編程的概念就叫作多線程處理(多線程編程),多線程是為了同步完成多項(xiàng)任務(wù),不是為了提高運(yùn)行效率,而是為了提高資源使用效率來提高系統(tǒng)的效率。多線程是在程序在同一時(shí)間需要完成多項(xiàng)任務(wù)的時(shí)候?qū)崿F(xiàn)的。多線程的目的僅僅是為了提高資源利用效率。各個(gè)線程執(zhí)行自己的任務(wù),這些線程可以”同時(shí)進(jìn)行“。同時(shí)進(jìn)行并非同一時(shí)刻進(jìn)行,而是在某一時(shí)間段內(nèi),完成所有任務(wù),任務(wù)的運(yùn)行有先后順序。
并發(fā)
并發(fā)的實(shí)質(zhì)是一個(gè)物理CPU(也可以多個(gè)物理CPU) 在若干道程序(或線程)之間多路復(fù)用,并發(fā)性是對(duì)有限物理資源強(qiáng)制行使多用戶共享以提高效率。
微觀角度:所有的并發(fā)處理都有排隊(duì)等候,喚醒,執(zhí)行等這樣的步驟,在微觀上他們都是序列被處理的,如果是同一時(shí)刻到達(dá)的請(qǐng)求(或線程)也會(huì)根據(jù)優(yōu)先級(jí)的不同,而先后進(jìn)入隊(duì)列排隊(duì)等候執(zhí)行。
宏觀角度:多個(gè)幾乎同時(shí)到達(dá)的請(qǐng)求(或線程)在宏觀上看就像是同時(shí)在被處理。
并發(fā)就是只有一個(gè)CPU資源,程序(或線程)之間要競(jìng)爭(zhēng)得到執(zhí)行機(jī)會(huì)。圖中的第一個(gè)階段,在A執(zhí)行的過程中B,C不會(huì)執(zhí)行,因?yàn)檫@段時(shí)間內(nèi)這個(gè)CPU資源被A競(jìng)爭(zhēng)到了,同理,第二個(gè)階段只有B在執(zhí)行,第三個(gè)階段只有C在執(zhí)行。其實(shí),并發(fā)過程中,A,B,C并不是同時(shí)在進(jìn)行的(微觀角度)。但又是同時(shí)進(jìn)行的(宏觀角度)。
并行
并行指兩個(gè)或兩個(gè)以上事件(或線程)在同一時(shí)刻發(fā)生,是真正意義上的不同事件或線程在同一時(shí)刻,在不同CPU資源上(多核),同時(shí)執(zhí)行。
并行,不存在像并發(fā)那樣競(jìng)爭(zhēng)CPU資源,等待執(zhí)行的概念,因?yàn)椴⑿袪顟B(tài)下的線程分布在不同的CPU上。
圖中,A,B,C都在同時(shí)運(yùn)行(微觀,宏觀)。
通過多線程實(shí)現(xiàn)并發(fā),并行
1、在CPU比較繁忙,資源不足的時(shí)候(開啟了很多進(jìn)程),操作系統(tǒng)只為一個(gè)含有多線程的進(jìn)程分配僅有的CPU資源,這些線程就會(huì)為自己盡量多搶時(shí)間片,這就是通過多線程實(shí)現(xiàn)并發(fā),線程之間會(huì)競(jìng)爭(zhēng)CPU資源爭(zhēng)取執(zhí)行機(jī)會(huì)。
2、 在CPU資源比較充足的時(shí)候,一個(gè)進(jìn)程內(nèi)的多線程,可以被分配到不同的CPU資源,這就是通過多線程實(shí)現(xiàn)并行。
3、至于多線程實(shí)現(xiàn)的是并發(fā)還是并行?上面所說,所寫多線程可能被分配到一個(gè)CPU內(nèi)核中執(zhí)行,也可能被分配到不同CPU執(zhí)行,分配過程是操作系統(tǒng)所為,不可人為控制。所有,如果有人問我我所寫的多線程是并發(fā)還是并行的?我會(huì)說,都有可能。
4、不管并發(fā)還是并行,都提高了程序?qū)PU資源的利用率,大限度地利用CPU資源。
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。