程序和執行緒 程序排程演算法 程序同步

2022-07-25 01:24:18 字數 2368 閱讀 7716

1、程序

程序是資源分配的基本單位。程序控制塊(pcb)描述程序的基本資訊的執行狀態,所謂的建立程序和撤銷程序,都是指對pcb的操作。

2、執行緒

執行緒是獨立排程的基本單位。乙個程序中可以有多個執行緒,它們共享程序資源。

3、程序與執行緒的區別

擁有的資源:程序是資源分配的基本單位,但是執行緒不擁有資源,執行緒可以訪問隸屬程序的資源。

排程:執行緒是獨立的單位,在同一程序中,執行緒的切換不會引起程序切換,從乙個程序內的執行緒切換到另乙個程序中的執行緒時,會引起程序切換。

系統開銷:由於建立或撤銷程序時,系統都要為之分配或**資源,如記憶體空間、i/o裝置等,所付出的開銷遠大於建立或撤銷執行緒時的開銷。程序切換時涉及到了當前執行的cpu環境的保護以及新排程的程序cpu環境的配置,而執行緒切換只需要保護和設定少量的暫存器的內容,開銷很小。

通訊:程序間通訊(ipc)需要程序同步和程序互斥來輔助,以保證資料的一致性。而執行緒可以通過直接讀/寫同一程序中的資料段(如全域性變數)來進行通訊。

4、程序狀態的切換:

就緒狀態(ready):等待被排程

執行狀態(running)

阻塞狀態(waiting):等待資源

5、程序排程演算法1、批處理系統中的排程

1.1、先來先服務(fcfs):排程最先進入就緒佇列的作業。

有利於長作業,但不利於短作業,因為短作業必須一直等待前面的長作業執行完畢才能執行,而長作業又需要執行很長時間,造成了短作業等待時間過長。

2.2、短作業優先(sjf):排程估計執行時間最短的作業。

長作業有可能會餓死,處於一直等待短作業執行完畢的狀態。因為如果一直有短作業到來,那麼長作業永遠得不到排程。

2、互動式系統中的排程

2.1、優先順序排程:除了可以手動賦予優先權之外,還可以把響應比作為優先權,這種排程方式叫做高響應比優先排程演算法。

響應比 = (等待時間 + 要求服務時間) / 要求服務時間 = 響應時間 / 要求服務時間 

這種排程演算法主要是為了解決短作業優先排程演算法長作業可能會餓死的問題,因為隨著等待時間的增長,響應比也會越來越高。

2.2、時間片輪轉:將所有就緒程序按 fcfs 的原則排成乙個佇列,每次排程時,把 cpu 時間分配給隊首程序,該程序可以執行乙個時間片。當時間片用完時,由計時器發出時鐘中斷,排程程式便停止該程序的執行,並將它送往就緒佇列的末尾,同時繼續把 cpu 時間分配給隊首的程序。

時間片輪轉演算法的效率和時間片的大小有很大關係。因為程序切換都要儲存程序的資訊並且載入新程序的資訊,如果時間片太小,會導致程序切換得太頻繁,在程序切換上就會花過多時間。

6、程序同步:

1、臨界區:對臨界資源進行訪問的那段**稱為臨界區。

為了互斥訪問臨界資源,每個程序在進入臨界區之前,需要先進行檢查。

2、同步與互斥:

同步:多個程序按一定順序執行;

互斥:多個程序在同一時刻只有乙個程序能進入臨界區。

3、訊號量:訊號量(semaphore)是乙個整型變數,可以對其執行 down 和 up 操作,也就是常見的 p 和 v 操作。

down:如果訊號量大於 0 ,執行 -1 操作;如果訊號量等於 0,程序睡眠,等待訊號量大於 0;

up:對訊號量執行 +1 操作,喚醒睡眠的程序讓其完成 down 操作。

4、管程:

使用訊號量機制實現的生產者消費者問題需要客戶端**做很多控制,而管程把控制的**獨立出來,不僅不容易出錯,也使得客戶端**呼叫更容易。

管程有乙個重要特性:在乙個時刻只能有乙個程序使用管程。程序在無法繼續執行的時候不能一直占用管程,否者其它程序永遠不能使用管程。

執行緒 程序同步問題

計算機網路課程實驗要做乙個c s模型的檔案傳遞程式。本來socket程式設計我還是比較熟悉的,因為以前用vc mfc編過乙個網路遊戲 網路五子棋,並通過設定nat與新加坡的同學對戰了一把。這次的程式本來更簡單,但是老師要用純windows api來寫,不准用其他的類庫,於是工作的重點就轉移到了怎樣構...

多執行緒程序同步

windows執行緒同步分使用者方式與核心方式 使用者方式 效率相對較高 1.原子鎖 2.關鍵段 臨界區 以下來自 windows核心程式設計 我反覆說,關鍵 段屬於使用者方式物件。實際上,這種說法並不是百分之百的正確。如果乙個執行緒試圖進入另一 個執行緒擁有的關鍵 段,那麼該執行緒就會被置於等待狀...

執行緒程序同步(二)

檔案鎖 哲學家用餐模型分析 程序間也可以使用互斥鎖,來達到同步的目的。但應在pthread mutex init初始化之前,修改其屬性為程序間共享。mutex的屬性修改函式主要有以下幾個。主要應用函式 pthread mutexattr t mattr 型別 用於定義mutex鎖的 屬性 pthre...