定義:進程就是一個具備獨立功能的程序在數據集合上的一次動態執行的過程
組成:shell
總之,進程包含了正在運行的一個程序的全部狀態信息數據結構
動態性:可動態地建立、結束進程
併發性:進程能夠被獨立調度並佔用處理機運行
獨立性:不一樣進程的工做互不影響
制約性:因訪問共享數據/資源或進程間同步而產生的制約併發
描述進程的數據結構:進程控制塊
操做系統爲每一個進程都維護了一個PCB,它是操做系統管理控制進程運行所用的信息集合。
PCB能夠描述進程的基本狀況以及運行變化的過程。學習
進程建立:爲該進程生成一個PCB
進程終止:回收它的PCB
進程的組織管理:經過對PCB的組織管理來實現
PCB包含如下內容:操作系統
進程建立
進程就緒
進程運行
進程等待(阻塞)
進程喚醒
進程結束.net
其中重點說下進程等待
:線程
在如下狀況會發生進程等待 (1)請求並等待系統服務,沒法立刻完成 (2)啓動某種操做,沒法立刻完成 (3)須要的數據沒有到達
注意:進程只能本身阻塞本身
。由於只有進程自身才曉得
本身何時須要等待什麼。code
進入阻塞狀態的程序,等待到了本身要的數據,會進行進程喚醒,這個操做多是操做系統也多是進程作。喚醒後進入就緒隊列,等待被調度佔用處理機運行。blog
咱們先前學習了虛擬存儲器管理,咱們以前說一段程序,先分配給它一個連續的邏輯地址空間,這段程序其實就是進程,進程須要訪問物理內存,在內存不夠時能夠進行換入換出的操做。當把一個進程所對應的佔用的物理內存釋放並將內容換出到硬盤就叫作掛起狀態
。
這個分爲兩種
阻塞掛起狀態:進程在外存並等待某事件的出現
就緒掛起狀態:進程在外存,但只要進入內存,便可運行
隊列
進程是資源分配的單位,線程是cpu的調度單位
線程優勢:
線程缺點:
一個線程崩潰,會致使其所屬進程的全部線程崩潰。
線程實現:
中止當前運行進程(從運行狀態改變成其餘狀態),而且調度其餘進程(轉變爲運行狀態)
上下文切換也就是進程切換。
一個進程不可能一直佔用CPU運行,當時間片到,就會讓其餘進程佔用CPU運行,這個就是上下文切換
切換注意事項: