進程、線程與協程

進程

  1. 概念
    進程是計算機中的程序關於某數據集合上的一次運行活動,是系統資源分配和調度的基本單位。進程是一個實體,每個進程都有它自己的地址空間,包括text region(代碼),data region(變量和動態分配的內存)和stack region(調用指令和本地變量).進程是執行中的程序,程序是沒有生命的,當程序被操作系統執行時,它才成爲一個活動的實體,稱爲“進程”。
  2. 狀態
    • 就緒態 進程具備運行條件,但還沒有分配CPU資源
    • 運行態 進程正在CPU上執行
    • 阻塞態 進程因等待某個事件(I/O)發生而暫時不能運行

線程

  1. 概念
    線程也被稱爲輕量級進程,是程序執行流的最小單元,線程是進程中的一個實體,是系統調度和分配CPU的基本單位,它不擁有系統資源,屬於同一進程的線程共享進程擁有的全部資源。線程擁有線程ID,當前指令指針PC,寄存器集合和堆棧。
  2. 狀態
    • 就緒態
    • 運行態
    • 阻塞態

協程

  1. 概念
    一個進程可以包含多個協程,進程中的線程相互獨立,有自己的上下文環境,切換受系統控制,而協程也是相互獨立的,有自己的上下文環境,但是切換由自己控制,由當前協程切換到其他協程是由當前協程控制的。

守護進程 daemon

daemon是一直運行的服務端程序,是長時間運行的程序,一般在系統啓動後就運行,在系統關閉後才結束。它不與前臺進行交互,等待客戶端程序與它通信。

進程和線程

進程是資源分配的最小單位,線程是CPU調度的最小單位。進程和線程的區別在於父子進程用於不同的代碼和數據空間,而同屬於一個進程的線程間共享數據空間,每個線程有自己的堆棧和程序計數器爲其上下文。

並行與併發

併發是一次只能由一個進程執行,進程輪流執行,宏觀上看這些進程是併發的
並行是同時可以有多個進程執行,並行比並發的效率高

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章