乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      進(jìn)程與線程的區(qū)別

       燮羽 2010-11-30

      進(jìn)程與線程的區(qū)別:


      通俗的解釋

      一個(gè)系統(tǒng)運(yùn)行著很多進(jìn)程,可以比喻為一條馬路上有很多馬車

      不同的進(jìn)程可以理解為不同的馬車

      而同一輛馬車可以有很多匹馬來(lái)拉----這些馬就是線程

      假設(shè)道路的寬度恰好可以通過(guò)一輛馬車

      道路可以認(rèn)為是臨界資源

      那么馬車成為分配資源的最小單位(進(jìn)程)

      而同一個(gè)馬車被很多匹馬驅(qū)動(dòng)(線程)----即最小的運(yùn)行單位

      每輛馬車馬匹數(shù)>=1

      所以馬匹數(shù)=1的時(shí)候進(jìn)程和線程沒(méi)有嚴(yán)格界限,只存在一個(gè)概念上的區(qū)分度

      馬匹數(shù)>1的時(shí)候才可以嚴(yán)格區(qū)分進(jìn)程和線程

      專業(yè)的解釋:

      簡(jiǎn)而言之,一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線程.

           線程的劃分尺度小于進(jìn)程,使得多線程程序的并發(fā)性高。另外,進(jìn)程在執(zhí)行過(guò)程中擁有獨(dú)立的內(nèi)存單元,而多個(gè)線程共享內(nèi)存,從而極大地提高了程序的運(yùn)行效率。

            線程在執(zhí)行過(guò)程中與進(jìn)程還是有區(qū)別的。每個(gè)獨(dú)立的線程有一個(gè)程序運(yùn)行的入口、順序執(zhí)行序列和程序的出口。但是線程不能夠獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制。

            從邏輯角度來(lái)看,多線程的意義在于一個(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)度和管理以及資源分配。這就是進(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)度和分派的基本單位,它是比進(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)程和線程的主要差別在于它們是不同的操作系統(tǒng)資源管理方式。進(jìn)程有獨(dú)立的地址空間,一個(gè)進(jìn)程崩潰后,在保護(hù)模式下不會(huì)對(duì)其它進(jìn)程產(chǎn)生影響,而線程只是一個(gè)進(jìn)程中的不同執(zhí)行路徑。線程有自己的堆棧和局部變量,但線程之間沒(méi)有單獨(dú)的地址空間,一個(gè)線程死掉就等于整個(gè)進(jìn)程死掉,所以多進(jìn)程的程序要比多線程的程序健壯,但在進(jìn)程切換時(shí),耗費(fèi)資源較大,效率要差一些。但對(duì)于一些要求同時(shí)進(jìn)行并且又要共享某些變量的并發(fā)操作,只能用線程,不能用進(jìn)程。如果有興趣深入的話,我建議你們看看《現(xiàn)代操作系統(tǒng)》或者《操作系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》。對(duì)就個(gè)問(wèn)題說(shuō)得比較清楚。

      +++++++++++++++++++++++++++++++++++++++++++++++

      進(jìn)程概念

        進(jìn)程是表示資源分配的基本單位,又是調(diào)度運(yùn)行的基本單位。例如,用戶運(yùn)行自己的程序,系統(tǒng)就創(chuàng)建一個(gè)進(jìn)程,并為它分配資源,包括各種表格、內(nèi)存空間、磁盤空間、I/O設(shè)備等。然后,把該進(jìn)程放人進(jìn)程的就緒隊(duì)列。進(jìn)程調(diào)度程序選中它,為它分配CPU以及其它有關(guān)資源,該進(jìn)程才真正運(yùn)行。所以,進(jìn)程是系統(tǒng)中的并發(fā)執(zhí)行的單位。

        在Mac、Windows NT等采用微內(nèi)核結(jié)構(gòu)的操作系統(tǒng)中,進(jìn)程的功能發(fā)生了變化:它只是資源分配的單位,而不再是調(diào)度運(yùn)行的單位。在微內(nèi)核系統(tǒng)中,真正調(diào)度運(yùn)行的基本單位是線程。因此,實(shí)現(xiàn)并發(fā)功能的單位是線程。

      線程概念

        線程是進(jìn)程中執(zhí)行運(yùn)算的最小單位,亦即執(zhí)行處理機(jī)調(diào)度的基本單位。如果把進(jìn)程理解為在邏輯上操作系統(tǒng)所完成的任務(wù),那么線程表示完成該任務(wù)的許多可能的子任務(wù)之一。例如,假設(shè)用戶啟動(dòng)了一個(gè)窗口中的數(shù)據(jù)庫(kù)應(yīng)用程序,操作系統(tǒng)就將對(duì)數(shù)據(jù)庫(kù)的調(diào)用表示為一個(gè)進(jìn)程。假設(shè)用戶要從數(shù)據(jù)庫(kù)中產(chǎn)生一份工資單報(bào)表,并傳到一個(gè)文件中,這是一個(gè)子任務(wù);在產(chǎn)生工資單報(bào)表的過(guò)程中,用戶又可以輸人數(shù)據(jù)庫(kù)查詢請(qǐng)求,這又是一個(gè)子任務(wù)。這樣,操作系統(tǒng)則把每一個(gè)請(qǐng)求――工資單報(bào)表和新輸人的數(shù)據(jù)查詢表示為數(shù)據(jù)庫(kù)進(jìn)程中的獨(dú)立的線程。線程可以在處理器上獨(dú)立調(diào)度執(zhí)行,這樣,在多處理器環(huán)境下就允許幾個(gè)線程各自在單獨(dú)處理器上進(jìn)行。操作系統(tǒng)提供線程就是為了方便而有效地實(shí)現(xiàn)這種并發(fā)性

      引入線程的好處

      (1)易于調(diào)度。

      (2)提高并發(fā)性。通過(guò)線程可方便有效地實(shí)現(xiàn)并發(fā)性。進(jìn)程可創(chuàng)建多個(gè)線程來(lái)執(zhí)行同一程序的不同部分。

      (3)開銷少。創(chuàng)建線程比創(chuàng)建進(jìn)程要快,所需開銷很少。。

      (4)利于充分發(fā)揮多處理器的功能。通過(guò)創(chuàng)建多線程進(jìn)程(即一個(gè)進(jìn)程可具有兩個(gè)或更多個(gè)線程),每個(gè)線程在一個(gè)處理器上運(yùn)行,從而實(shí)現(xiàn)應(yīng)用程序的并發(fā)性,使每個(gè)處理器都得到充分運(yùn)行。

      ++++++++++++++++++++++++++++++++++++++++++++++++

      進(jìn)程和線程的關(guān)系:

      (1)一個(gè)線程只能屬于一個(gè)進(jìn)程,而一個(gè)進(jìn)程可以有多個(gè)線程,但至少有一個(gè)線程。

      (2)資源分配給進(jìn)程,同一進(jìn)程的所有線程共享該進(jìn)程的所有資源。

      (3)處理機(jī)分給線程,即真正在處理機(jī)上運(yùn)行的是線程。

      (4)線程在執(zhí)行過(guò)程中,需要協(xié)作同步。不同進(jìn)程的線程間要利用消息通信的辦法實(shí)現(xiàn)同步。

      線程是指進(jìn)程內(nèi)的一個(gè)執(zhí)行單元,也是進(jìn)程內(nèi)的可調(diào)度實(shí)體.

      與進(jìn)程的區(qū)別:

      (1)調(diào)度:線程作為調(diào)度和分配的基本單位,進(jìn)程作為擁有資源的基本單位

      (2)并發(fā)性:不僅進(jìn)程之間可以并發(fā)執(zhí)行,同一個(gè)進(jìn)程的多個(gè)線程之間也可并發(fā)執(zhí)行

      (3)擁有資源:進(jìn)程是擁有資源的一個(gè)獨(dú)立單位,線程不擁有系統(tǒng)資源,但可以訪問(wèn)隸屬于進(jìn)程的資源.

      (4)系統(tǒng)開銷:在創(chuàng)建或撤消進(jìn)程時(shí),由于系統(tǒng)都要為之分配和回收資源,導(dǎo)致系統(tǒng)的開銷明顯大于創(chuàng)建或撤消線程時(shí)的開銷。

      +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

      進(jìn)程間的通信方式:

      1.管道(pipe)及有名管道(named pipe):

      管道可用于具有親緣關(guān)系的父子進(jìn)程間的通信,有名管道除了具有管道所具有的功能外,它還允許無(wú)親緣關(guān)系進(jìn)程間的通信。

      2.信號(hào)(signal):

      信號(hào)是在軟件層次上對(duì)中斷機(jī)制的一種模擬,它是比較復(fù)雜的通信方式,用于通知進(jìn)程有某事件發(fā)生,一個(gè)進(jìn)程收到一個(gè)信號(hào)與處理器收到一個(gè)中斷請(qǐng)求效果上可以說(shuō)是一致的。

      3.消息隊(duì)列(message queue):

      消息隊(duì)列是消息的鏈接表,它克服了上兩種通信方式中信號(hào)量有限的缺點(diǎn),具有寫權(quán)限得進(jìn)程可以按照一定得規(guī)則向消息隊(duì)列中添加新信息;對(duì)消息隊(duì)列有讀權(quán)限得進(jìn)程則可以從消息隊(duì)列中讀取信息。

      4.共享內(nèi)存(shared memory):

      可以說(shuō)這是最有用的進(jìn)程間通信方式。它使得多個(gè)進(jìn)程可以訪問(wèn)同一塊內(nèi)存空間,不同進(jìn)程可以及時(shí)看到對(duì)方進(jìn)程中對(duì)共享內(nèi)存中數(shù)據(jù)得更新。這種方式需要依靠某種同步操作,如互斥鎖和信號(hào)量等。

      5.信號(hào)量(semaphore):

      主要作為進(jìn)程之間及同一種進(jìn)程的不同線程之間得同步和互斥手段。

      6.套接字(socket);

      這是一種更為一般得進(jìn)程間通信機(jī)制,它可用于網(wǎng)絡(luò)中不同機(jī)器之間的進(jìn)程間通信,應(yīng)用非常廣泛。

      ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

      線程之間的同步通信:

      1.信號(hào)量 二進(jìn)制信號(hào)量 互斥信號(hào)量 整數(shù)型信號(hào)量 記錄型信號(hào)量

      2.消息     消息隊(duì)列 消息郵箱

      3.事件event

      互斥型信號(hào)量:必須是同一個(gè)任務(wù)申請(qǐng),同一個(gè)任務(wù)釋放,其他任務(wù)釋放無(wú)效。同一個(gè)任務(wù)可以遞歸申請(qǐng)。(互斥信號(hào)量是二進(jìn)制信號(hào)量的一個(gè)子集)

       

      二進(jìn)制信號(hào)量:一個(gè)任務(wù)申請(qǐng)成功后,可以由另一個(gè)任務(wù)釋放。(與互斥信號(hào)量的區(qū)別)

      整數(shù)型信號(hào)量:取值不局限于0和1,可以一個(gè)任務(wù)申請(qǐng),另一個(gè)任務(wù)釋放。(包含二進(jìn)制信號(hào)量,二進(jìn)制信號(hào)量是整數(shù)型信號(hào)量的子集)

      二進(jìn)制信號(hào)量實(shí)現(xiàn)任務(wù)互斥:

             打印機(jī)資源只有一個(gè),a b c三個(gè)任務(wù)共享,當(dāng)a取得使用權(quán)后,為了防止其他任務(wù)錯(cuò)誤地釋放了信號(hào)量(二進(jìn)制信號(hào)量允許其他任務(wù)釋放),必須將打印機(jī)房的門關(guān)起來(lái)(進(jìn)入臨界段),用完后,釋放信號(hào)量,再把門打開(出臨界段),其他任務(wù)再進(jìn)去打印。(而互斥型信號(hào)量由于必須由取得信號(hào)量的那個(gè)任務(wù)釋放,故不會(huì)出現(xiàn)其他任務(wù)錯(cuò)誤地釋放了信號(hào)量的情況出現(xiàn),故不需要有臨界段?;コ庑托盘?hào)量是二進(jìn)制信號(hào)量的子集。)

      二進(jìn)制信號(hào)量實(shí)現(xiàn)任務(wù)同步:

           a任務(wù)一直等待信號(hào)量,b任務(wù)定時(shí)釋放信號(hào)量,完成同步功能

      記錄型信號(hào)量(record semaphore):
             每個(gè)信號(hào)量s除一個(gè)整數(shù)值value(計(jì)數(shù))外,還有一個(gè)等待隊(duì)列List,其中是阻塞在該信號(hào)量的各個(gè)線程的標(biāo)識(shí)。當(dāng)信號(hào)量被釋放一個(gè),值被加一后,系統(tǒng)自動(dòng)從等待隊(duì)列中喚醒一個(gè)等待中的線程,讓其獲得信號(hào)量,同時(shí)信號(hào)量再減一。

      +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

      同步和互斥的區(qū)別:

           當(dāng)有多個(gè)線程的時(shí)候,經(jīng)常需要去同步這些線程以訪問(wèn)同一個(gè)數(shù)據(jù)或資源。例如,假設(shè)有一個(gè)程序,其中一個(gè)線程用于把文件讀到內(nèi)存,而另一個(gè)線程用于統(tǒng)計(jì)文件中的字符數(shù)。當(dāng)然,在把整個(gè)文件調(diào)入內(nèi)存之前,統(tǒng)計(jì)它的計(jì)數(shù)是沒(méi)有意義的。但是,由于每個(gè)操作都有自己的線程,操作系統(tǒng)會(huì)把兩個(gè)線程當(dāng)作是互不相干的任務(wù)分別執(zhí)行,這樣就可能在沒(méi)有把整個(gè)文件裝入內(nèi)存時(shí)統(tǒng)計(jì)字?jǐn)?shù)。為解決此問(wèn)題,你必須使兩個(gè)線程同步工作。

             所謂互斥,是指散布在不同進(jìn)程之間的若干程序片斷,當(dāng)某個(gè)進(jìn)程運(yùn)行其中一個(gè)程序片段時(shí),其它進(jìn)程就不能運(yùn)行它們之中的任一程序片段,只能等到該進(jìn)程運(yùn)行完這個(gè)程序片段后才可以運(yùn)行。如果用對(duì)資源的訪問(wèn)來(lái)定義的話,互斥某一資源同時(shí)只允許一個(gè)訪問(wèn)者對(duì)其進(jìn)行訪問(wèn),具有唯一性和排它性。但互斥無(wú)法限制訪問(wèn)者對(duì)資源的訪問(wèn)順序,即訪問(wèn)是無(wú)序的

              所謂同步,是指散步在不同進(jìn)程之間的若干程序片斷,它們的運(yùn)行必須嚴(yán)格按照規(guī)定的某種先后次序來(lái)運(yùn)行,這種先后次序依賴于要完成的特定的任務(wù)。如果用對(duì)資源的訪問(wèn)來(lái)定義的話,同步是指在互斥的基礎(chǔ)上(大多數(shù)情況),通過(guò)其它機(jī)制實(shí)現(xiàn)訪問(wèn)者對(duì)資源的有序訪問(wèn)。在大多數(shù)情況下,同步已經(jīng)實(shí)現(xiàn)了互斥,特別是所有寫入資源的情況必定是互斥的。少數(shù)情況是指可以允許多個(gè)訪問(wèn)者同時(shí)訪問(wèn)資源

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多