1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. 線程和進程的區(qū)別

        時間:2020-12-12 14:24:39 常識 我要投稿

        線程和進程的區(qū)別

          線程和進程二者都有優(yōu)先級的概念,那么他們兩個的區(qū)別在哪里呢?本文是YJBYS小編整理的線程和進程的區(qū)別,僅供參考。

          進程是什么?

          程序并不能單獨運行,只有將程序裝載到內(nèi)存中,系統(tǒng)為它分配資源才能運行,而這種執(zhí)行的程序就稱之為進程。程序和進程的區(qū)別就在于:程序是指令的集合,它是進程運行的靜態(tài)描述文本;進程是程序的一次執(zhí)行活動,屬于動態(tài)概念。

          在多道編程中,我們允許多個程序同時加載到內(nèi)存中,在操作系統(tǒng)的調(diào)度下,可以實現(xiàn)并發(fā)地執(zhí)行。這是這樣的設計,大大提高了CPU的利用率。進程的出現(xiàn)讓每個用戶感覺到自己獨享CPU,因此,進程就是為了在CPU上實現(xiàn)多道編程而提出的。

          有了進程為什么還要線程?

          進程有很多優(yōu)點,它提供了多道編程,讓我們感覺我們每個人都擁有自己的CPU和其他資源,可以提高計算機的利用率。很多人就不理解了,既然進程這么優(yōu)秀,為什么還要線程呢?其實,仔細觀察就會發(fā)現(xiàn)進程還是有很多缺陷的,主要體現(xiàn)在兩點上:

          進程只能在一個時間干一件事,如果想同時干兩件事或多件事,進程就無能為力了。

          進程在執(zhí)行的過程中如果阻塞,例如等待輸入,整個進程就會掛起,即使進程中有些工作不依賴于輸入的數(shù)據(jù),也將無法執(zhí)行。

          如果這兩個缺點理解比較困難的話,舉個現(xiàn)實的例子也許你就清楚了:如果把我們上課的過程看成一個進程的話,那么我們要做的是耳朵聽老師講課,手上還要記筆記,腦子還要思考問題,這樣才能高效的完成聽課的任務。而如果只提供進程這個機制的話,上面這三件事將不能同時執(zhí)行,同一時間只能做一件事,聽的時候就不能記筆記,也不能用腦子思考,這是其一;如果老師在黑板上寫演算過程,我們開始記筆記,而老師突然有一步推不下去了,阻塞住了,他在那邊思考著,而我們呢,也不能干其他事,即使你想趁此時思考一下剛才沒聽懂的一個問題都不行,這是其二。

          現(xiàn)在你應該明白了進程的缺陷了,而解決的辦法很簡單,我們完全可以讓聽、寫、思三個獨立的過程,并行起來,這樣很明顯可以提高聽課的效率。而實際的操作系統(tǒng)中,也同樣引入了這種類似的'機制——線程。

          線程的優(yōu)點

          因為要并發(fā),我們發(fā)明了進程,又進一步發(fā)明了線程。只不過進程和線程的并發(fā)層次不同:進程屬于在處理器這一層上提供的抽象;線程則屬于在進程這個層次上再提供了一層并發(fā)的抽象。如果我們進入計算機體系結(jié)構(gòu)里,就會發(fā)現(xiàn),流水線提供的也是一種并發(fā),不過是指令級的并發(fā)。這樣,流水線、線程、進程就從低到高在三個層次上提供我們所迫切需要的并發(fā)!

          除了提高進程的并發(fā)度,線程還有個好處,就是可以有效地利用多處理器和多核計算機,F(xiàn)在的處理器有個趨勢就是朝著多核方向發(fā)展,在沒有線程之前,多核并不能讓一個進程的執(zhí)行速度提高,原因還是上面所有的兩點限制。但如果講一個進程分解為若干個線程,則可以讓不同的線程運行在不同的核上,從而提高了進程的執(zhí)行速度。

          例如:我們經(jīng)常使用微軟的Word進行文字排版,實際上就打開了多個線程。這些線程一個負責顯示,一個接受鍵盤的輸入,一個進行存盤等等。這些線程一起運行,讓我們感覺到我們輸入和屏幕顯示同時發(fā)生,而不是輸入一些字符,過一段時間才能看到顯示出來。在我們不經(jīng)意間,還進行了自動存盤操作。這就是線程給我們帶來的方便之處。

          進程與線程的區(qū)別

          進程是具有一定獨立功能的程序關(guān)于某個數(shù)據(jù)集合上的一次運行活動,進程是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。

          線程是進程的一個實體, 是CPU調(diào)度和分派的基本單位,它是比進程更小的能獨立運行的基本單位.線程自己基本上不擁有系統(tǒng)資源,只擁有一點在運行中必不可少的資源(如程序計數(shù)器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源。

          一個線程可以創(chuàng)建和撤銷另一個線程,同一個進程中的多個線程之間可以并發(fā)執(zhí)行。

          進程和線程的主要差別在于它們是不同的操作系統(tǒng)資源管理方式。進程有獨立的地址空間,一個進程崩潰后,在保護模式下不會對其它進程產(chǎn)生影響,而線程只是一個進程中的不同執(zhí)行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等于整個進程死掉,所以多進程的程序要比多線程的程序 健壯,但在進程切換時,耗費資源較大,效率要差一些。但對于一些要求同時進行并且又要共享某些變量的并發(fā)操作,只能用線程,不能用進程。

        【線程和進程的區(qū)別】相關(guān)文章:

        設計并發(fā)服務器,使用多進程與多線程有什么區(qū)別?12-03

        關(guān)于linux查看進程ps top區(qū)別09-30

        Linux多線程:線程的分離與結(jié)合08-17

        ssat和托福的區(qū)別10-14

        咖啡的種類和區(qū)別10-09

        速錄和速記的區(qū)別10-01

        綠茶和白茶的區(qū)別10-22

        打工和創(chuàng)業(yè)的區(qū)別11-02

        紋眉和畫眉的區(qū)別07-19

        朗誦和播音的區(qū)別09-04

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>