115 進程和線程的區別

1、進程和線程的關係

1568806853908

線程與進程的區別能夠概括爲如下4點:多線程

  1. 地址空間和其它資源(如打開文件):進程間相互獨立,同一進程的各線程間共享。某進程內的線程在其它進程不可見。
  2. 通訊:進程間通訊IPC,線程間能夠直接讀寫進程數據段(如全局變量)來進行通訊——須要進程同步和互斥手段的輔助,以保證數據的一致性。
  3. 調度和切換:線程上下文切換比進程上下文切換要快得多,開啓線程的速度要比開啓進程的速度要快
  4. 在多線程操做系統中,進程不是一個可執行的實體。

2、線程的特色

在多線程的操做系統中,一般是在一個進程中包括多個線程,每一個線程都是做爲利用CPU的基本單位,是花費最小開銷的實體。線程具備如下屬性。併發

  1. 輕型實體
    • 線程中的實體基本上不擁有系統資源,只是有一點必不可少的、能保證獨立運行的資源。
    • 線程的實體包括程序、數據和TCB。線程是動態概念,它的動態特性由線程控制塊TCB(Thread Control Block)描述,TCB用於指示被執行指令序列的程序計數器、保留局部變量、少數狀態參數和返回地址等的一組寄存器和堆棧。TCB包括如下信息:
      1. 線程狀態。
      2. 當線程不運行時,被保存的現場資源。
      3. 一組執行堆棧。
      4. 存放每一個線程的局部變量主存區。
      5. 訪問同一個進程中的主存和其它資源。
  2. 獨立調度和分派的基本單位

在多線程OS中,線程是能獨立運行的基本單位,於是也是獨立調度和分派的基本單位。因爲線程很「輕」,故線程的切換很是迅速且開銷小(在同一進程中的)。操作系統

  1. 共享進程資源

線程在同一進程中的各個線程,均可以共享該進程所擁有的資源,這首先表如今:全部線程都具備相同的進程id,這意味着,線程能夠訪問該進程的每個內存資源;此外,還能夠訪問進程所擁有的已打開文件、定時器、信號量機構等。因爲同一個進程內的線程共享內存和文件,因此線程之間互相通訊沒必要調用內核。線程

  1. 可併發執行

在一個進程中的多個線程之間,能夠併發執行,甚至容許在一個進程中全部線程都能併發執行;一樣,不一樣進程中的線程也能併發執行,充分利用和發揮了處理機與外圍設備並行工做的能力。進程

相關文章
相關標籤/搜索