程序學習之基本概念(筆記)

2021-08-18 21:50:06 字數 1674 閱讀 3781

順序程式特徵

:1.順序性

2.封閉性(執行環境封閉性)

3.確定性

4.可再現性

併發程式特徵:

1.共享性

2.併發性

3.隨機性

由於程序要求共享資源,而且有些資源需要互斥使用,因此各程序間競爭使用這些資源,程序這種關係為程序的互斥。

系統中某些資源一次只允許乙個程序使用,稱這樣的資源為臨界資源或互斥資源。

在程序中涉及到互斥資源的程式段叫臨界區。

程序同步指的是多個程序需要互相配合共同完成一項任務。

資料傳輸:乙個程序需要將它的資料傳送給另乙個程序。

資源共享:多個程序之間共享同樣的資源。

通知事件:乙個程序需要向另乙個過一組程序傳送訊息,通知它(它們)發生了某種事件(如程序的終止時要通知父程序)。

程序控制: 有些程序希望完全控制另乙個程序的執行(如debug程序),此時控制程序希望能夠攔截乙個程序的所有陷入和異常,並且能夠及時知道它的狀態改變。

檔案檔案鎖

管道(pipe)和有名管道(fifo)

訊號(signal)

訊息佇列

共享記憶體

訊號量互斥量

條件變數

讀寫鎖套接字

system v ipc:

system v 訊息佇列

system v 共享記憶體

system v 訊號量

posix ipc:

訊息佇列

共享記憶體

訊號量互斥量

條件變數

讀寫鎖隨程序持續:一直存在知道開啟的最後乙個程序結束。(如pipe和fifo)

隨核心持續:一直持續直到核心自舉或顯示刪除。(如system v訊息佇列,共享記憶體,訊號量)

隨檔案系統持續:一直存在直到顯示刪除,即使核心自舉還存在。(posix訊息佇列、共享記憶體、訊號量如果是使用對映檔案來實現)。

死鎖是指多個程序之間相互等待對方的資源,而在得到對方資源之前又不釋放自己的資源,這樣,造成迴圈等待的一種現象。如果所有程序都在等待乙個不可能發生的事情,則程序就死鎖了。 

死鎖產生的必要條件:

互斥條件:

程序對資源進行排它性使用,即在一段時間內某資源僅為乙個程序所占用。    

請求和保持條件: 

當程序已獲得的資源在未使用完之前,不能被剝奪,只能在使用完時由自己釋放。

環路等待條件:

各個程序組成封閉的環形鏈,每個程序都等待下乙個程序所占用的資源。

防止死鎖的辦法:

資源一次性分配(破壞請求和保持條件)

可剝奪資源:破壞不可剝奪條件

資源有序分配方法:(破壞迴圈等待條件)

預防死鎖的幾種策略,會嚴重的損害系統效能。因此在避免死鎖時,要施加較弱的限制,從而獲得比較滿意的系統效能。

由於在避免死鎖的策略中,允許程序動態的申請資源。因而,系統在進行資源分配之前預先計算資源分配的安全性。若此次分配不會導致系統進入不安全狀態,則將資源分配給程序;否則,程序等待。其中最具有代表性的避免死鎖的演算法是銀行家演算法。

訊號量和p、v原語由迪傑斯特拉提出。

訊號量:

互斥:p、v在同乙個程序中。

同步:p、v在不同程序中。

訊號量及其含義:

s>0:s表示可用資源的個數

s=0:表示無可用資源,無等待程序。

s<0:|s|表示等待佇列中程序個數。

程序管理之基本概念

1就緒 ready 狀態 當程序已分配到除cpu以外的所有必要資源後,只要再獲得cpu,便可立即執行,程序這時的狀態稱為就緒狀態。在乙個系統中處於就緒狀態的程序可能有多個,所有處於就緒狀態的程序排成乙個佇列,稱為就緒佇列 2執行狀態 程序已獲得cpu,其程式正在執行。3阻塞狀態 正在執行的程序由於發...

Java NIO學習筆記之基本概念

緩衝區,以及緩衝區如何工作,是所有 i o 的基礎。所謂 輸入 輸出 講的無非就是把資料移進或移出緩衝區。程序使用 read 系統呼叫,要求其緩衝區被填滿。核心隨即向磁碟控制硬體發出命令,要求其從磁碟讀取資料。磁碟控制器把資料直接寫入核心記憶體緩衝區,這一步通過 dma 完成,無需主 cpu 協助。...

Java NIO學習筆記之基本概念

緩衝區,以及緩衝區如何工作,是所有 i o 的基礎。所謂 輸入 輸出 講的無非就是把資料移進或移出緩衝區。程序使用 read 系統呼叫,要求其緩衝區被填滿。核心隨即向磁碟控制硬體發出命令,要求其從磁碟讀取資料。磁碟控制器把資料直接寫入核心記憶體緩衝區,這一步通過 dma 完成,無需主 cpu 協助。...