1基本概念:
程序:計算機已執行程式的實體。程式本身只是指令的集合,程序才是程式的真正執行。使用者下達執行程式的命令後,就會產生程序。
程序通常有5種狀態,其中前3種為程序的基本狀態。分別為:執行狀態;就緒狀態;阻塞狀態;建立狀態;結束狀態。
其中,就緒狀態指程序獲得了除了處理器之外的一切所需資源,一旦得到處理器即可執行。阻塞狀態指程序正在等待某一事件而暫停執行,入等待某資源為可用(不包括儲存器)或者等待輸入、輸出完成。
程序與程式的區別:1.程序是程式及其資料在計算機上的一次執行活動,是乙個動態概念。程序是由程式、資料和程序控制塊(jcb)組成。程式是一組有序的指令集合,是乙個靜態概念。2、程序是程式的一次執行過程,具有一定的生命週期,可以永久存在的,可長期儲存。3.乙個程序可以執行乙個或者幾個程式,乙個程式也可以構成多個程序,程序可以建立程序,但是程式不能形成新的程式。4.程序和程式的組成不同。
執行緒:有時也被稱為輕量級程序,是程式執行的最小單元。乙個標準的執行緒由執行緒id,當前指令指標(pc),暫存器和堆疊(stack)組成。
執行緒也有就緒、阻塞和執行三種基本狀態。
執行緒是程式中乙個單一的順序控制流程,在單個程式中同時執行多個執行緒完成不同的工作,被稱為多執行緒。
執行緒與程序的區別:1.排程,程序是擁有資源的基本單位,執行緒是獨立排程的基本單位。在同一程序中,執行緒的切換不會引起程序切換,在不同的程序中線程的切換,會引起程序切換。2.資源,程序是擁有資源的基本單位,執行緒不擁有資源,但是執行緒可以共享其隸屬程序的系統資源。3.併發,程序可以併發執行,同乙個程序內的多個執行緒也可以併發執行。4.系統開銷,建立和撤銷程序時,系統都要為之分配或者**資源,執行緒切換時只需要儲存少量暫存器內容,開銷少,同乙個程序內的多個執行緒共享程序的位址空間,因此這些執行緒之間的同步和通訊易實現,甚至無需作業系統干預。5.位址空間和其他資源,程序的位址空間之間互相獨立,同乙個程序的各個執行緒共享程序資源。6.程序間通訊需要借助作業系統,而執行緒間可以直接通過讀寫程序資料段來進行通訊。
程序通訊和程序同步
linux執行緒間通訊:互斥體(互斥量),訊號量,條件變數
windows程序間通訊:管道、共享記憶體、訊息佇列、訊號量、socket。
windows執行緒間通訊:臨界區(critical section)、互斥量(mutex)、訊號量(訊號燈)(semaphore)、事件(event)。注意:臨界區與互斥體的區別:臨界區智慧型用來同步本程序內的執行緒,而不能用來同步多個程序中的執行緒。互斥量,訊號量,事件都可以跨越程序使用來進行同步資料操作;臨界區是非核心物件,只在使用者太進行鎖操作,速度快,互斥體是核心物件,在核心態(需要處理器參與)執行,速度慢。
程序的排程演算法:先來先服務演算法(fcfs),短作業優先(sjf),優先順序排程演算法,高相應比優先演算法,時間片輪轉演算法,多級反饋佇列排程演算法。
死鎖:多個程序因競爭資源而造成的一種僵局(互相等待),若無外力做用,這些程序都將無法向前推進。
死鎖產生的原因:系統資源的競爭,程序推進順序非法。
死鎖產生的必要條件:互斥條件,不剝奪條件,請求和保持條件,迴圈條件。
銀行家演算法是著名的死鎖避免演算法。
一 程序執行緒
1.程序的3種狀態 執行 阻塞 就緒 其中不存在的狀態轉換 阻塞 執行 就緒 阻塞 2.作業系統用於維護程序記錄的結構 程序表或程序控制權 pcb 3.程式使用cpu的3種方式 cpu導向 io導向 平衡型程式 4.程序排程目標 極小化平均時間 級大化系統吞吐量 保持系統各個功能部分均處於繁忙狀態和...
程序管理 一 程序的概念以及程序的建立
程式一旦跑起來就是乙個程序,程序是乙個可以執行的例項。每個程序都擁有乙個自己的虛擬cpu,但是實際上只有乙個cpu,其只是在各個程序之間快速的切換,這種快速切換就叫做多道程式設計 例子 乙個計算機科學家給女兒做蛋糕,他有做蛋糕用的食譜,廚房中有大量的原料,比如香草 雞蛋 麵粉 糖等等。其中食譜就是程...
實現單一程序
有時候,乙個模組x會被其他模組函式呼叫,模組x會產生很多的實現程序,具有不同的pid號。也許模組x在系統執行時只需要乙個實現程序就可以實現它對系統的服務功能,而執行多個實現程序則會造成對系統資源的浪費,而且在某些情況下,如果模組x是對某個硬體的控制,同時執行多個程序則會導致對硬體資源的搶奪,對硬體的...