看到作業系統程序這一塊兒都會有點亂吧。come on!
上回說到單個程序一生的故事,現在的作業系統是允許多個程序併發執行的,那麼它們之間又會擦出什麼火花呢?
1、程序控制塊 pcb:每個程序都有唯一的程序控制塊,它是作業系統感知程序存在的唯一標誌。包含資訊:程序識別符號資訊、處理機狀態資訊(通用暫存器、指令計數器、程式狀態字psw、使用者棧指標)、程序排程資訊、程序控制資訊
2、程序排程演算法:具體內容見作業系統概念總結;原則:周轉時間短、響應時間快、截止時間保證、系統吞吐量高、處理機利用率好
3、程序切換:
儲存包括程式計數器和其他暫存器在內的cpu上下文環境(存進度)、
更換被替換程序的程序控制塊(換老大)、
修改程序狀態,把執行態改為就緒態或阻塞態(改狀態)、
將替換程序的程序控制塊移到就緒佇列或阻塞佇列(換佇列,**注意換程序控制塊與改狀態的先後順序**——執行佇列是 否允許存在非執行態程序)、
執行 通過程序排程程式 選擇的新程序,並更新改程序的程序控制塊(do ,*可參考程序控制塊包含資訊*)、更新記憶體 管理的資料結構(*程序執行需要獲得資源*)、
恢復 被排程程式 選中的程序的硬體上下文(恢復進度)
4、程序具體執**況(超級通道);
程序同步:併發執行的程序要共享系統的軟、硬體資源,為了保證在多工共享系統資源的情況下程式執行得到正確的結 果,引入同步機制; 原則:空閒讓進、忙則等待、有限等待、讓權等待
訊號量機制:訊號量用來判斷能否訪問與訊號量對應的共享資源,可看做連線同步程序與共享資源的**線
5、執行緒執行:類似於程序的執**況,注意執行緒與程序的關係,誰的狀態影響誰
6、死鎖問題(注意區分i/o管理的中斷):涉及到多個參與者時總會產生對資源的糾紛,程序也不列外,程式執行時程序訪問共享資源順序不當導致死鎖,條件有4:互斥條件、請求和保持條件、不剝奪條件、環路等待條件——缺一不可;預防死鎖當然就要從產生條件入手了——不讓4個條件同時滿足就ok了
每個東西都有它存在的理由,他們不是單獨來到作業系統中的,再難理解的概念、再突兀的設定,當了解它本身的概念作用、與它相關的東西後,邏輯上它自然就那麼合理、那麼妙了,至少在個人的認知上,找不到半點不讓它存在的理由。這大概就是學作業系統的樂趣、學習的樂趣吧。
後續概念彙總!
作業系統 程序間通訊
程序間通訊涉及到3個問題 1.乙個程序如何把資訊傳遞給另乙個程序 2.確保兩個或多個程序之間不會在關鍵活動中出現交叉 3.程序間執行的順序對執行結果的影響。注意 確保程序對臨界區的 互斥 訪問。忙等待的互斥 1.遮蔽中斷 當乙個程序進入臨界區後立即遮蔽所有中斷,時鐘中斷也被遮蔽 這樣cpu就不會進行...
作業系統 程序間通訊
include include include include include include ifndef semun h 條件編譯,即若semun在標頭檔案中沒有被定義,就進行下面的編譯 define semun h union semun endif static int set semval...
作業系統 程序間通訊
程序間通訊方式總結 優缺點 linus下的程序通訊手段基本上是從unix平台上的程序通訊手段繼承而來的。1 無名管道通訊 半雙工通訊,只能在具有親緣關係的程序間使用 1 管道 2 高階管道通訊 將另乙個程式當做乙個新的程序在當前程式程序中啟動,則它算是當前程式的子 程序 3 有名管道通訊 半雙工通訊...