最近剛剛學習多程序,對於多程序的概念我自己總結一下
每乙個程式啟動後都會在系統中產生乙個程序來處理這個程式
但是乙個程序執行速度畢竟有限,在程式中有一些比較耗時的操作程式就只能是卡死的狀態,為了解決這個問題,就出現了多程序。讓耗時的工作建立乙個子程序讓子程序去工作,主程序執行自己的。
但子程序多了也會出現問題:
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執行所需要的...