線程與進(jìn)程區(qū)別_第1頁
線程與進(jìn)程區(qū)別_第2頁
線程與進(jìn)程區(qū)別_第3頁
線程與進(jìn)程區(qū)別_第4頁
線程與進(jìn)程區(qū)別_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、線程與進(jìn)程區(qū)別線程是指進(jìn)程內(nèi)的一個(gè)執(zhí)行單元,也是進(jìn)程內(nèi)的可調(diào)度實(shí)體.與進(jìn)程的區(qū)別:(1)地址空間:進(jìn)程內(nèi)的一個(gè)執(zhí)行單元;進(jìn)程至少有一個(gè)線程;它們共享進(jìn)程的地址空間; 而進(jìn)程有自己獨(dú)立的地址空間;(2)資源擁有:進(jìn)程是資源分配和擁有的單位,同一個(gè)進(jìn)程內(nèi)的線程共享進(jìn)程的資源(3) 線程是處理器調(diào)度的基本單位,但進(jìn)程不是.4)二者均可并發(fā)執(zhí)行.進(jìn)程和線程都是由操作系統(tǒng)所體會(huì)的程序運(yùn)行的基本單元,系統(tǒng)利用該基本單元實(shí)現(xiàn) 系統(tǒng)對應(yīng)用的并發(fā)性。進(jìn)程和線程的區(qū)別在于:簡而言之,一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線程.線程的劃分尺度小 于進(jìn)程,使得多線程程序的并發(fā)性高。另外,進(jìn)程在執(zhí)行過程中擁有獨(dú)立的

2、內(nèi)存單元,而多個(gè)線程共享內(nèi)存,從而極大地提 高了程序的運(yùn)行效率。線程在執(zhí)行過程中與進(jìn)程還是有區(qū)別的。每個(gè)獨(dú)立的線程有一個(gè)程序運(yùn)行的入口、順 序執(zhí)行序列和程序的出口。但是線程不能夠獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程 序提供多個(gè)線程執(zhí)行控制。從邏輯角度來看,多線程的意義在于一個(gè)應(yīng)用程序中,有多個(gè)執(zhí)行部分可以同時(shí)執(zhí)行。 但操作系統(tǒng)并沒有將多個(gè)線程看做多個(gè)獨(dú)立的應(yīng)用,來實(shí)現(xiàn)進(jìn)程的調(diào)度和管理以及資源分 配。這就是進(jìn)程和線程的重要區(qū)別。進(jìn)程是具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),進(jìn)程是系統(tǒng)進(jìn) 行資源分配和調(diào)度的一個(gè)獨(dú)立單位.線程是進(jìn)程的一個(gè)實(shí)體,是CPU調(diào)度和分派的基本單位,它是比

3、進(jìn)程更小的能獨(dú)立運(yùn)行 的基本單位.線程白已基本上不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源(如程 序計(jì)數(shù)器,一組寄存器和棧),但是它可與同屬一個(gè)進(jìn)程的其他的線程共享進(jìn)程所擁有的全 部資源.一個(gè)線程可以創(chuàng)建和撤銷另一個(gè)線程;同一個(gè)進(jìn)程中的多個(gè)線程之間可以并發(fā)執(zhí) 行.線程和進(jìn)程都是現(xiàn)在電腦概念里比較時(shí)髦的用語,什么是多線程,什么是多進(jìn)程?本 文詳細(xì)的給您介紹一下,希望能增進(jìn)您對當(dāng)代電腦技術(shù)的了解,有不到之處,還往高手了 以更正。進(jìn)程(英語:Process,中國大陸譯作進(jìn)程,臺灣譯作行程)是計(jì)算機(jī)中已運(yùn)行程 序的實(shí)體。進(jìn)程本身不會(huì)運(yùn)行,是線程的容器。程序本身只是指令的集合,進(jìn)程才是程序(那些指

4、令)的真正運(yùn)行。若干進(jìn)程有可能與同一個(gè)程序相關(guān)系,旦每個(gè)進(jìn)程皆可以同步 (循序)或不同步(平行)的方式獨(dú)立運(yùn)行。進(jìn)程為現(xiàn)今分時(shí)系統(tǒng)的基本運(yùn)作單位線程(英語:thread,臺灣譯為運(yùn)行緒),操作系統(tǒng)技術(shù)中的術(shù)語,是操作系統(tǒng)能夠進(jìn) 行運(yùn)算調(diào)度的最小單位。它被包涵在進(jìn)程之中,一條線程指的是進(jìn)程中一個(gè)單一順序的控 制流,一個(gè)進(jìn)程中可以并發(fā)多個(gè)線程,每條線程并行執(zhí)行不同的任務(wù)。在Unix System V 及SunOS中也被稱為輕量進(jìn)程(lightweight processes),但輕量進(jìn)程更多指內(nèi)核線程 (kernel thread),而把用戶線程(user thread)稱為線程。線程是獨(dú)立調(diào)度和

5、分派的基本單位。線程可以操作系統(tǒng)內(nèi)核調(diào)度的內(nèi)核線程,如Win32線程;由用戶進(jìn)程自行調(diào)度 的用戶線程,如Linux Portable Thread;或者由內(nèi)核與用戶進(jìn)程,如Windows 7的線程, 進(jìn)行混合調(diào)度。同一進(jìn)程中的多條線程將共享該進(jìn)程中的全部系統(tǒng)資源,如虛擬地址空間,文件描述 符和信號處理等等。但同一進(jìn)程中的多個(gè)線程有各自的調(diào)用棧(call stack),白己的寄存 器環(huán)境(register context) 自己的線程本地存儲(thread-local storage) 0一個(gè)進(jìn)程可以有很多線程,每條線程并行執(zhí)行不同的任務(wù)。在多核或多CPU,或支持Hyper-threading的

6、CPU上使用多線程程序設(shè)計(jì)的好處是顯 而易見,即提高了程序的執(zhí)行吞吐率。在單cpi.單核的計(jì)算機(jī)上,使用多線程技術(shù),也可 以把進(jìn)程中負(fù)責(zé)10處理、人機(jī)交互而常備阻塞的部分與密集計(jì)算的部分分開來執(zhí)行,編 寫專門的workhorse線程執(zhí)行密集計(jì)算,從而提高了程序的執(zhí)行效率進(jìn)程是資源分配的最小單位,線程是CPU調(diào)度的最小單位。線程和進(jìn)程的區(qū)別在了, 子進(jìn)程和父進(jìn)程有不同的代碼和數(shù)據(jù)空間,而多個(gè)線程則共享數(shù)據(jù)空間,每個(gè)線程有自己的 執(zhí)行堆棧和程序計(jì)數(shù)器為其執(zhí)行上下文.多線程主要是為了節(jié)約CPU時(shí)間,發(fā)揮利用,根據(jù) 具體情況而定.線程的運(yùn)行中需要使用計(jì)算機(jī)的內(nèi)存資源和CPUo多進(jìn)程:進(jìn)程是程序在計(jì)算機(jī)

7、上的一次執(zhí)行活動(dòng)。當(dāng)你運(yùn)行一個(gè)程序,你就啟動(dòng)了 一個(gè)進(jìn)程。顯然,程序是死的(靜態(tài)的),進(jìn)程是活的(動(dòng)態(tài)的)。進(jìn)程可以分為系統(tǒng)進(jìn)程和 用戶進(jìn)程。凡是用于完成操作系統(tǒng)的各種功能的進(jìn)程就是系統(tǒng)進(jìn)程,它們就是處r運(yùn)行狀 態(tài)下的操作系統(tǒng)本身;所有由用戶啟動(dòng)的進(jìn)程都是用戶進(jìn)程。進(jìn)程是操作系統(tǒng)進(jìn)行資源分 配的單位。進(jìn)程乂被細(xì)化為線程,也就是一個(gè)進(jìn)程下有多個(gè)能獨(dú)立運(yùn)行的更小的單位。 在同一個(gè)時(shí)間里,同一個(gè)計(jì)算機(jī)系統(tǒng)中如果允許兩個(gè)或兩個(gè)以上的進(jìn)程處于運(yùn)行狀態(tài),這 便是多任務(wù)?,F(xiàn)代的操作系統(tǒng)幾乎都是多任務(wù)操作系統(tǒng),能夠同時(shí)管理多個(gè)進(jìn)程的運(yùn)行。 多任務(wù)帶來的好處是明顯的,比如你可以邊聽mp3邊上網(wǎng),與此同時(shí)甚至可以

8、將下載的文檔打印出 來,而這些任務(wù)之間絲亳不會(huì)相互干擾。那么這里就涉及到并行的問題,俗話說,一心不 能二用,這對計(jì)算機(jī)也一樣,原則上一個(gè)CPU只能分配給一個(gè)進(jìn)程,以便運(yùn)行這個(gè)進(jìn)程。 我們通常使用的計(jì)算機(jī)中只有一個(gè)CPJ也就是說只有一顆心,要讓它一心多用,同時(shí)運(yùn) 行多個(gè)進(jìn)程,就必須使用并發(fā)技術(shù)。實(shí)現(xiàn)并發(fā)技術(shù)相當(dāng)復(fù)雜,最容易理解的是“時(shí)間片輪轉(zhuǎn)進(jìn)程調(diào)度算法”,它的思想簡單介紹如下:在操作系統(tǒng)的管理下,所有正在運(yùn)行的進(jìn)程 輪流使用CPU,每個(gè)進(jìn)程允許占用CPU的時(shí)間非常短(比如10亳秒),這樣用戶根本感覺不 出來CPU是在輪流為多個(gè)進(jìn)程服務(wù),就好象所有的進(jìn)程都在不間斷地運(yùn)行一樣。但實(shí)際上 在任何一個(gè)

9、時(shí)間內(nèi)有且僅有一個(gè)進(jìn)程占有CPU。如果一臺計(jì)算機(jī)有多個(gè)CPU,情況就不同 了,如果進(jìn)程數(shù)小于CPU數(shù),則不同的進(jìn)程可以分配給不同的CPI來運(yùn)行,這樣,多個(gè)進(jìn) 程就是真正同時(shí)運(yùn)行的,這便是并行。但如果進(jìn)程數(shù)大于CPU數(shù),則仍然需要使用并發(fā)技 術(shù)。進(jìn)行CPU分配是以線程為單位的,一個(gè)進(jìn)程可能由多個(gè)線程組成,這時(shí)情況更加復(fù) 雜,但簡單地說,有如下關(guān)系:總線程數(shù)號CPU數(shù)量:并行運(yùn)行 總線程數(shù))CPU數(shù)量:并發(fā)運(yùn)行并行運(yùn)行的效率顯然高于并發(fā)運(yùn)行,所以在多CPU的計(jì)算機(jī)中,多任務(wù)的效率比較高。 但是,如果在多CPU計(jì)算機(jī)中只運(yùn)行一個(gè)進(jìn)程(線程),就不能發(fā)揮多CPU的優(yōu)勢。這里 涉及到多任務(wù)操作系統(tǒng)的問題

10、,多任務(wù)操作系統(tǒng)(如Windows)的基本原理是:操作系統(tǒng)將 CPU的時(shí)間片分配給多個(gè)線程,每個(gè)線程在操作系統(tǒng)指定的時(shí)間片內(nèi)完成(注意,這里的多個(gè) 線程是分屬了不同進(jìn)程的).操作系統(tǒng)不斷的從一個(gè)線程的執(zhí)行切換到另一個(gè)線程的執(zhí)行, 如此往復(fù),宏觀上看來,就好像是多個(gè)線程在一起執(zhí)行.由于這多個(gè)線程分屬于不同的進(jìn)程, 因此在我們看來,就好像是多個(gè)進(jìn)程在同時(shí)執(zhí)行,這樣就實(shí)現(xiàn)了多任務(wù)多線程:在計(jì)算機(jī)編程中,一個(gè)基本的概念就是同時(shí)對多個(gè)任務(wù)加以控制。許多程序 設(shè)計(jì)問題都要求程序能夠停下手頭的工作,改為處理其他一些問題,再返回主進(jìn)程??梢?通過多種途徑達(dá)到這個(gè)目的。最開始的時(shí)候,那些掌握機(jī)器低級語言的程序員

11、編寫一些“中斷服務(wù)例程”,主進(jìn)程的暫停是通過硬件級的中斷實(shí)現(xiàn)的。盡管這是一種有用的方法, 但編出的程序很難移植,由此造成了另一類的代價(jià)高昂問題。中斷對那些實(shí)時(shí)性很強(qiáng)的任 務(wù)來說是很有必要的。但對于其他許多問題,只要求將問題劃分進(jìn)入獨(dú)立運(yùn)行的程序片斷 中,使整個(gè)程序能更迅速地響應(yīng)用戶的請求。最開始,線程只是用于分配單個(gè)處理器的處理時(shí)間的一種工具。但假如操作系統(tǒng)本身 支持多個(gè)處理器,那么每個(gè)線程都可分配給一個(gè)不同的處理器,真正進(jìn)入“并行運(yùn)算”狀 態(tài)。從程序設(shè)計(jì)語言的角度看,多線程操作最有價(jià)值的特性之一就是程序員不必關(guān)心到底 使用了多少個(gè)處理器。程序在邏輯意義上被分割為數(shù)個(gè)線程;假如機(jī)器本身安裝了多

12、個(gè)處 理器,那么程序會(huì)運(yùn)行得更快,毋需作出任何特殊的調(diào)校。根據(jù)前面的論述,大家可能感 覺線程處理非常簡單。但必須注意一個(gè)問題:共享資源!如果有多個(gè)線程同時(shí)運(yùn)行,而且 它們試圖訪問相同的資源,就會(huì)遇到一個(gè)問題。舉個(gè)例子來說,兩個(gè)線程不能將信息同時(shí) 發(fā)送給一臺打印機(jī)。為解決這個(gè)問題,對那些可共享的資源來說(比如打印機(jī)),它們在使用期間必須進(jìn)入 鎖定狀態(tài)。所以一個(gè)線程可將資源鎖定,在完成了它的任務(wù)后,再解開(釋放)這個(gè)鎖,使 其他線程可以接著使用同樣的資源。多線程是為了同步完成多項(xiàng)任務(wù),不是為了提高運(yùn)行效率,而是為了提高資源使用效 率來提高系統(tǒng)的效率。線程是在同一時(shí)間需要完成多項(xiàng)任務(wù)的時(shí)候?qū)崿F(xiàn)的。一

13、個(gè)采用了多線程技術(shù)的應(yīng)用程序可以更好地利用系統(tǒng)資源。其主要優(yōu)勢在r充分利 用了 CPU的空閑時(shí)間片,可以用盡可能少的時(shí)間來對用戶的要求做出響應(yīng),使得進(jìn)程的整 體運(yùn)行效率得到較大提高,同時(shí)增強(qiáng)了應(yīng)用程序的靈活性。更為重要的是,由于同一進(jìn)程 的所有線程是共享同一內(nèi)存,所以不需要特殊的數(shù)據(jù)傳送機(jī)制,不需要建立共享存儲區(qū)或 共享文件,從而使得不同任務(wù)之間的協(xié)調(diào)操作與運(yùn)行、數(shù)據(jù)的交互、資源的分配等問題更 加易于解決。進(jìn)程間通信(IPC, Inter-Process Communication),指至少兩個(gè)進(jìn)程或線程間傳送數(shù) 據(jù)或信號的一些技術(shù)或方法。進(jìn)程是計(jì)算機(jī)系統(tǒng)分配資源的最小單位。每個(gè)進(jìn)程都有自己

14、的一部分獨(dú)立的系統(tǒng)資源,彼此是隔離的。為了能使不同的進(jìn)程互相訪問資源并進(jìn)行協(xié)調(diào) 工作,才有了進(jìn)程間通信。這些進(jìn)程可以運(yùn)行在同一計(jì)算機(jī)上或網(wǎng)絡(luò)連接的不同計(jì)算機(jī)上。進(jìn)程間通信技術(shù)包括消息傳遞、同步、共享內(nèi)存和遠(yuǎn)程過程調(diào)用。IPC是一種標(biāo)準(zhǔn)的 Unix通信機(jī)制。使用IPC的理由: 信息共享 加速;模塊化;方便;以及 私有權(quán)分離.主要的IPC方法方法提供方(操作系統(tǒng)或其他環(huán)境)文件多數(shù)操作系統(tǒng) 信號多數(shù)操作系統(tǒng)Socket多數(shù)操作系統(tǒng)消息隊(duì)列(en:Message queue)多數(shù)操作系統(tǒng) 管道(en:Pipe)所有的POSIX systems, Windows.具名管道(en:Namud Pipe)所有的 POSIX 系統(tǒng),Windows. 信號量(en:Semaphore) 所有的POSIX系統(tǒng),Windo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論