進程和線程的區別?同步和異步的區別?并行和并發的區別?
2019-02-24供稿中心: 北大青鳥
摘要:
進程和線程的區別
-
進程是資源的分配和調度的一個獨立單元,而線程是CPU調度的基本單元
-
同一個進程中可以包括多個線程,并且線程共享整個進程的資源(寄存器、堆棧、上下文),一個進行至少包括一個線程。
-
進程的創建調用fork或者vfork,而線程的創建調用pthread_create,進程結束后它擁有的所有線程都將銷毀,而線程的結束不會影響同個進程中的其他線程的結束
-
線程是輕兩級的進程,它的創建和銷毀所需要的時間比進程小很多,所有操作系統中的執行功能都是創建線程去完成的
-
線程中執行時一般都要進行同步和互斥,因為他們共享同一進程的所有資源
-
線程有自己的私有屬性TCB,線程id,寄存器、硬件上下文,而進程也有自己的私有屬性進程控制塊PCB,這些私有屬性是不被共享的,用來標示一個進程或一個線程的標志
同步和異步的區別
-
同步(synchronous):進程之間的關系不是相互排斥臨界資源的關系,而是相互依賴的關系。進一步的說明:就是前一個進程的輸出作為后一個進程的輸入,當第一個進程沒有輸出時第二個進程必須等待。具有同步關系的一組并發進程相互發送的信息稱為消息或事件。
-
異步(asynchronous):異步和同步是相對的,同步就是順序執行,執行完一個再執行下一個,需要等待、協調運行。異步就是彼此獨立,在等待某事件的過程中繼續做自己的事,不需要等待這一事件完成后再工作。線程就是實現異步的一個方式。異步是讓調用方法的主線程不需要同步等待另一線程的完成,從而可以讓主線程干其它的事情。
并行和并發的區別
-
并發:在操作系統中,是指一個時間段中有幾個程序都處于已啟動運行到運行完畢之間,且這個幾個程序都是在同一個處理機上運行。其中兩種并發關系分別是同步和互斥。
-
互斥:進程間相互排斥的使用臨界資源的現象
-
同步:進程之間的關系不是相互排斥臨界資源的關系,而是相互依賴的關系。進一步說明就是前一個進程的輸出作為后一個進程的輸入,當第一個進程沒有輸出時第二個進程必須等待。具有同步關系的一組并發進程相互發送的信息稱為消息或事件。
其中并發又有偽并發和真并發,偽并發是指單核處理器的并發,真并發是指多核處理器的并發。
-
并行(parallelism):在單處理器中多道程序設計系統中,進程被交替執行,表現出一種并發的外部特種;在多處理器系統中,進程不僅可以交替執行,而且可以重疊執行。在多處理器上的程序才可實現并行處理。從而可知,并行是針對多處理器而言的。并行是同時發生的多個并發事件,具有并發的含義,但并發不一定并行,也亦是說并發事件之間不一定要同一時刻發生。
武漢北大青鳥中南軟件學院
咨詢電話:400-027-0822
官方微博:@武漢北大青鳥中南軟件學院
官方微信公眾號:whbdqngf
咨詢QQ:2034934699
武漢北大青鳥中南軟件學院地址:武漢市武昌區中南路中南大廈4-5樓
武漢北大青鳥東湖校區地址:武漢市洪山區八一路延長線東湖路附15號