1、進程管理

1基本概念: 算法

  進程:計算機已運行程序的實體。程序自己只是指令的集合,進程纔是程序的真正運行。用戶下達運行程序的命令後,就會產生進程。多線程

  進程一般有5種狀態,其中前3種爲進程的基本狀態。分別爲:運行狀態;就緒狀態;阻塞狀態;建立狀態;結束狀態。其中,就緒狀態指進程得到了除了處理器以外的一切所需資源,一旦獲得處理器便可運行。阻塞狀態指進程正在等待某一事件而暫停運行,入等待某資源爲可用(不包括存儲器)或者等待輸入、輸出完成。併發

  進程與程序的區別:1.進程是程序及其數據在計算機上的一次運行活動,是一個動態概念。進程是由程序、數據和進程控制塊(JCB)組成。程序是一組有序的指令集合,是一個靜態概念。二、進程是程序的一次執行過程,具備必定的生命週期,能夠永久存在的,可長期保存。3.一個進程能夠執行一個或者幾個程序,一個程序也能夠構成多個進程,進程能夠建立進程,可是程序不能造成新的程序。4.進程和程序的組成不一樣。socket

 

  線程:有時也被稱爲輕量級進程,是程序執行的最小單元。一個標準的線程由線程ID,當前指令指針(PC),寄存器和堆棧(Stack)組成。線程也有就緒、阻塞和運行三種基本狀態。spa

線程是程序中一個單一的順序控制流程,在單個程序中同時運行多個線程完成不一樣的工做,被稱爲多線程操作系統

  線程進程區別:1.調度,進程是擁有資源的基本單位,線程是獨立調度的基本單位。在同一進程中,線程的切換不會引發進程切換,在不一樣的進程中線程的切換,會引發進程切換。2.資源,進程是擁有資源的基本單位,線程不擁有資源,可是線程能夠共享其隸屬進程的系統資源。3.併發,進程能夠併發執行,同一個進程內的多個線程也能夠併發執行。4.系統開銷,建立和撤銷進程時,系統都要爲之分配或者回收資源,線程切換時只須要保存少許寄存器內容,開銷少,同一個進程內的多個線程共享進程的地址空間,所以這些線程之間的同步和通訊易實現,甚至無需操做系統干預。5.地址空間和其餘資源,進程的地址空間之間互相獨立,同一個進程的各個線程共享進程資源。6.進程間通訊須要藉助操做系統,而線程間能夠直接經過讀寫進程數據段來進行通訊。線程

 

進程通訊和進程同步指針

  Linux線程間通訊:互斥體(互斥量),信號量,條件變量對象

  Windows進程間通訊:管道、共享內存、消息隊列、信號量、socket。生命週期

  Windows線程間通訊:臨界區(Critical Section)、互斥量(Mutex)、信號量(信號燈)(Semaphore)、事件(Event)。注意:臨界區與互斥體的區別:臨界區智能用來同步本進程內的線程,而不能用來同步多個進程中的線程。互斥量,信號量,事件均可以跨越進程使用來進行同步數據操做;臨界區是非內核對象,只在用戶太進行鎖操做,速度快,互斥體是內核對象,在覈心態(須要處理器參與)運行,速度慢。

 

  進程的調度算法:先來先服務算法(FCFS),短做業優先(SJF),優先級調度算法,高相應比優先算法,時間片輪轉算法,多級反饋隊列調度算法。

 

  死鎖:多個進程因競爭資源而形成的一種僵局(互相等待),若無外力作用,這些進程都將沒法向前推動。

  死鎖產生的緣由:系統資源的競爭,進程推動順序非法。

  死鎖產生的必要條件:互斥條件,不剝奪條件,請求和保持條件,循環條件。

       銀行家算法是著名的死鎖避免算法。

相關文章
相關標籤/搜索