2 作業系統中的程式 程序 併發 並行

2021-10-07 19:44:11 字數 1423 閱讀 4136

程序也可以說是乙個任務,

是一種作業系統中非常重要的軟體資源,

把乙個可執行程式跑起來,系統中就會產生乙個相對應的程序,如果這個程式結束了,那麼相對應的程序也會被系統隨之銷毀,

因此,程序也可以被看作是可執行程式的「過程」

可執行程式和程序不是乙個概念,下面我們來具體區分一下

可執行程式

程序程序是可執行檔案跑起來的乙個具體實現過程,那麼當我們雙擊可執行程式時,可以在電腦的任務管理器中找到這個執行程式,這個就是程序

把.exe 檔案中的很多內容都載入到記憶體中了,分配一些資源,並開始執行這個可執行程式中包含的指令

程序也是作業系統中進行資源分配的最小單位

每建立乙個程序,就同時建立了乙個pcb這樣的類的例項

使用雙向鍊錶把所有的pcb物件串到一起,雙擊乙個exe,建立乙個程序的時候,本質上就是在核心中,先建立了乙個pcb物件,然後把這個物件加入到鍊錶中,關閉乙個程式,結束乙個程序的時候,本質上就是在核心中,找到這個對應的pcb物件,然後從鍊錶上刪掉,並且釋放該資源

通過任務管理器檢視到的所有的程序資訊,本質上 就是在遍歷核心中的這個鍊錶,依次讀取對應pcb的節點資訊

pcb裡面包含的資訊有:

1.pid(程序id)程序的身份標識

2.一組記憶體指標:指向該程序持有的一些重要資料在記憶體中的位置

3.程序的狀態:表示當前的程式是在執行還是休眠…

4.優先順序: 這個程序是優先上cpu執行還是放到後面上

5.程序的記賬資訊:記錄了程序在cpu上一共執行了多長時間,通過這個事件來限制不要讓某個程序霸佔cpu太長時間導致的其他程式無法執行

6.上下文:儲存量上次程序在cpu上執行的進度,以便下次程序上cpu的時候能繼續執行

以上的3~6點都是為了實現 程序排程

一般情況都會出現 程序數量多,cpu數量少

cpu數量少,但是程序數量多怎麼解決呢?

我們電腦中同一時間會執行多個程序,這是通過快速頻繁的切換cpu來達到每個執行緒一起工作,

這樣從巨集觀上看多個執行緒是同時進行的----------> 併發

從微觀上看和從巨集觀上啃都是同時進行的-------> 並行

但在具體應用中,併發和並行的區分不大

程序中的狀態還是比較重要的,這裡詳細介紹一下

乙個程序的狀態有一下幾種:

r: 就緒狀態。正在cpu上執行,或是即將執行

s:睡眠狀態。這些程序沒法在cpu上執行,而是在等待

d: 深度睡眠狀態。程序在長時間忙於io操作,沒盡力理會cpu

x:程序已經被銷毀了

阻塞狀態。程序不具備執行條件,正在等待某個事件的完成。

作業系統中的併發和並行

在計算機作業系統 第4版,湯子瀛 中,小標題 並行和併發 的父標題是 併發 經過學習,我的理解是並行是併發的子集,併發是包含並行的含義的。計算機作業系統 中是這樣定義和區分併發和並行的 並行性和併發性是既相似又有區別的兩個概念。並行性是指兩個或多個事件在同一時刻發生。而併發性是指兩個或多個事件在同一...

作業系統 並行和併發

併發 concurrent 在作業系統中,是指乙個時間段中有幾個程式都處於已啟動執行到執行完畢之間,且這幾個程式都是在同乙個cpu上執行。併發不是真正意義上的 同時進行 只是cpu把乙個時間段劃分成幾個時間片段 時間區間 然後在這幾個時間區間之間來回切換,由於cpu處理的速度非常快,只要時間間隔處理...

OS作業系統中的併發與並行

併發與並行 從字面裡來講很容易混淆,現在總結一下。1.併發 指的是兩個或多個事件在同一時間間隔內發生。2.並行 指的是系統具有同時進行運算或操作的特性,在同一時刻能完成兩種或兩種以上的工作。並行性需要硬體的支援,比如流水線或者多處理機硬體環境。舉例子 1.如果你在9 00 9 10僅吃麵包,在9 1...