併發和並行、進程和線程的區別以及線程調度

併發

併發(交替執行):兩個或多個事件在同一個時間段內發生,CPU在不一樣的事件中來回切換,宏觀上像是同時執行,微觀上是交替執行。多線程

並行

並行(同時執行):兩個或多個事件在同一刻發生,是真正的同時執行。例:有兩個CPU,那麼就是一個CPU處理一個事件,實現兩個事件同時被CPU執行併發

進程

  1. 由硬盤進入到內存中的程序叫作進程:好比「卡巴斯基殺毒軟件」的啓動就是從硬盤加載到了內存中,此時就稱爲進程,可在任務管理器中查看全部的進程。
  2. 一個應用程序能夠同時運行多個進程,每一個進程都有一個獨立的內存空間。
  3. 進程是系統運行程序的基本單位,也是程序的一次執行過程。
  4. 系統運行一個程序便是一個進程從建立、運行到消亡的過程

線程

  1. 應用程序通向CPU的路徑CPU經過這個路徑就能夠執行對應的功能,而這條路徑被稱爲線程,例:點擊「卡巴斯基的病毒查殺」功能時,就開闢了一條通向CPU的路徑,此時CPU就經過該路徑能夠執行「病毒查殺」功能。
  2. 線程是進程中的一個執行單元,負責當前進程中程序的執行。
  3. 一個進程中至少有一個線程,擁有多個線程的應用程序被稱爲多線程程序

進程和線程的區別

  • 進程:有獨立的內存空間,進程中數據存放的位置(堆空間和棧空間)是獨立的,而且進程至少有一個線程。
  • 線程:棧空間是獨立的,堆空間是共享的;且線程消耗的資源比進程少不少。

線程調度:

  • 分時調度:全部線程輪流得到CPU的使用權而且使用CPU,平均分配每一個線程佔用CPU的時間。
  • 搶佔式調度:讓優先級高的線程優先使用CPU,當優先級相同時,隨機選擇一個線程使用CPU(線程隨機性),Java中使用的就是「搶佔式調度」。

PS:線程

  1. 文章來自各類資源的整理,若有侵權請告知刪除。
  2. 轉載本文請註明出處
相關文章
相關標籤/搜索