程序:作業系統結構的基礎,是乙個正在執行的程式;計算機中正在執行的程式例項;可以分配給處理器並由處理器執行的乙個實體;由單一順序的執行顯示,乙個當前狀態和一組相關的系統資源所描述的活動單元。
程序切換:從正在執行的程序中收回處理器,然後再使待執行程序來占用處理器。
這裡所說的從某個程序收回處理器,實質上就是把程序存放在處理器的暫存器中的中間資料找個地方存起來,從而把處理器的暫存器騰出來讓其他程序使用。那麼被中止執行程序的中間資料存在何處好呢?當然這個地方應該是程序的私有堆疊。
讓程序來占用處理器,實質上是把某個程序存放在私有堆疊中暫存器的資料(前一次本程序被中止時的中間資料)再恢復到處理器的暫存器中去,並把待執行程序的斷點送入處理器的程式指標pc,於是待執行程序就開始被處理器執行了,也就是這個程序已經占有處理器的使用權了。
這就像多個同學要分時使用同一張課桌一樣,所謂要收回正在使用課桌同學的課桌使用權,實質上就是讓他把屬於他的東西拿走;而賦予某個同學課桌使用權,只不過就是讓他把他的東西放到課桌上罷了。
在切換時,乙個程序儲存在處理器各暫存器中的中間資料叫做程序的上下文,所以程序的切換實質上就是被中止執行程序與待執行程序上下文的切換。在程序未占用處理器時,程序 的上下文是儲存在程序的私有堆疊中的。
程序上下文:是程序執行活動全過程的靜態描述。我們把已執行過的程序指令和資料在相關暫存器與堆疊中的內容稱為上文,把正在執行的指令和資料在暫存器和堆疊中的內容稱為正文,把待執行的指令和資料在暫存器與堆疊中的內容稱為下文。具體的說,程序上下文包括計算機系統中與執行該程序有關的各種暫存器(例如 通用暫存器, 程式計數器pc, 程式狀態字暫存器ps等)的值, 程式段在經過編譯過後形成的 機器指令**集,資料集及各種 堆疊值pcb結構。這裡,有關 暫存器和棧區的內容是重要的,例如沒有 程式計數器pc和程式狀態暫存器ps,cpu將無法知道下一條待執行指令的位址和控制有關操作。
程序的系統級上下文分為靜態和動態部分。這裡的動態指程序在進入和退出不同的上下文層次時,系統為各層上下文中相關聯的暫存器所儲存和恢復的記錄。靜態部分為pcb結構,將程序虛 位址空間對映到物理空間以得到核心棧。這個核心棧主要是用來裝載程序中所使用 系統呼叫的呼叫序列。
執行緒是執行上下文。最初每個程序都只有乙個執行上下文。這個執行上下文稱為執行緒。如果程序需要另乙個執行上下文,那麼它只要建立另乙個程序。但是,就處理器的週期和記憶體的使用而言,程序建立的開銷是很大的。發明執行緒是為建立多個執行上下文提供輕量級的機制。windows 和 linux 從作業系統上排程執行緒的目標是提供乙個公平的執行環境。
程序和執行緒之間的最大區別是乙個程序的所有執行緒共享同乙個記憶體空間並共享系統定義的「資源」。這些資源包括開啟的檔案控制代碼(檔案描述符)、共享記憶體、程序同步原語和當前目錄。因為共享全域性記憶體並且幾乎不必分配新記憶體,所以建立執行緒比建立程序更簡單更快。
作業系統 程序與執行緒
為什麼會有程序?以前的計算機效能較差,作業系統只支援單任務,也就是一次只能執行乙個任務,當這個任務執行完成之後,才能執行下乙個任務,例如msdos。當該任務進行io時,cpu會處於空閒狀態。隨著計算機效能增強,出現了多工作業系統,作業系統可以將多個任務同時載入到記憶體中,併發執行。當某個任務進行io...
作業系統 程序與執行緒
1 排程 在傳統的作業系統中,擁有資源的基本單位和獨立排程 分派的基本單位都是程序。而引入執行緒的作業系統,則把執行緒作為排程和分派的基本單位,而程序作為資源擁有的基本單位。2 併發性 在引入執行緒的作業系統中,程序之間可併發執行,在乙個程序中的多個執行緒亦可併發執行。3 擁有資源 程序都可以擁有資...
作業系統 程序與執行緒
程序的概念 順序執行的特點 1.順序性 2.封閉性 3.可重現性 併發執行的特點 1.增強計算機處理能力和提高資源利用率 2.失去了封閉性和可重再現性 3.共享系統資源產生相互制約的關係 程序的定義 1.程序是程式的一次執行 2.程序是乙個程式與其使用的資料在處理機上執行的過程 3.程序是具有獨立功...