程序概念總結

2022-05-13 20:49:34 字數 827 閱讀 1154

最近剛剛學習多程序,對於多程序的概念我自己總結一下

每乙個程式啟動後都會在系統中產生乙個程序來處理這個程式

但是乙個程序執行速度畢竟有限,在程式中有一些比較耗時的操作程式就只能是卡死的狀態,為了解決這個問題,就出現了多程序。讓耗時的工作建立乙個子程序讓子程序去工作,主程序執行自己的。

但子程序多了也會出現問題:

1、孤兒程序

2、殭屍程序

但是使用多程序的時候又出現了程序之間資料共享的問題,這時候程序間的通訊就需要解決。目前知道的解決辦法是用:

1、檔案

2、管道

3、佇列

4、共享記憶體

以上資料共享型別的區別在於:

管道:操作起來麻煩,讀的時候不能寫。寫的時候不能讀。如果在寫的時候不關閉讀操作,在讀的時候可能會出現問題

佇列:操作簡單,一般推薦使用。

共享記憶體:共享記憶體與(管道、佇列)區別在於,管道和佇列在建立時需要單獨在記憶體中開闢一塊空間進行操作。而共享記憶體則不需要單獨開闢空間讀寫更快捷

在多程序間,又會產生程序間資料錯誤的問題,原因是兩個程序訪問乙個變數最終的結果改變會出現問題如:

a、b程序 訪問  共享記憶體 a1  = 10

a程序的操作是將a1的值減1

b程序的操作是將a1的值加1

此時兩個程序同時訪問a1變數

在a程序沒有改變a1值得情況下b程序已經獲取到了a1的原始值 10 此時b程序改變a1的值就會覆蓋a程序改變後的值9

此時a1的值為11

為了程序間訪問變數互斥的問題就需要有序的操作變數(加鎖):

互斥:在a程序操作a1變數的時候加乙個鎖,b程序此時等待解鎖之後再進行操作此變數

linux 程序概念總結

在計算機結構中,程序是程式的基本執行 擔當分配系統資源,包括像cpu時間,記憶體空間 的實體。通俗來說,程序就是我們具體執行程式的那個過程。當我們執行一段 時,就是乙個程序。而每乙個程序都有屬於本程序的一些屬性資訊。這些資訊被存放在核心的乙個結構體當中。包括像程序的識別符號,狀態,優先順序等資訊。在...

程序與多程序概念

程序 process 是計算機中程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統機結構基礎。狹義定義 程序是正在執行的程式的例項。在同一時間,同一作業系統中有兩個或兩個以上的程式處於執行狀態。php 提供了程序控制的擴充套件 pcntl。pcntl 實現了unix ...

程序概念和程序狀態

檢視程序 程序狀態 孤兒程序 執行中的程式。對於作業系統來說就是pcb程序控制塊,在linux中就是乙個task struct結構體。是作業系統對程式執行的動態描述,系統通過這個描述實現程式執行的管理和排程。要執行main這個程式,作業系統找到對應main的pcb,在pcb上讀取main執行所需要的...