問題:多個進程競爭內存資源
1.解決方法
方案一:采用交換技術,換出一部分進程到外存,以騰出內存空間
方案二:采用虛擬存儲技術,每個進程只能裝入一部分程序和數據(存儲管理部分)
2.對換技術(交換技術,)
將內存中暫時不能運行的進程,或暫時不用的數據和程序,換出到外存,以騰出足夠的內存空間,把已具備運行條件的進程,或進程所需要的數據和程序,換入內存。PCB不能換出去(PCB是系統唯一感知進程的標志) 。
進程被交換到外存,狀態變為掛起狀態。
2.1進程掛起的原因
#1進程全部阻塞,處理機空閑
#2系統負荷過重,內存空間緊張
#3操作系統的需要。操作系統可能需要掛起后臺進程或一些服務進程(如打印進程),或者某些可能導致系統故障的進程。(前臺處理的事短的聯機請求,后臺處理的是批量任務,前臺具有較高的優先級)
#4終端用戶的請求(終端用戶在處理程序,需要關閉一些進程,進而研究剩余進程的變化)
#5父進程的需求
2.2 被掛起進程的特征
#1不能立即執行
#2可能是等待某事件發生,若是,則阻塞條件獨立于掛起條件,即使阻塞事件發生,該進程也不能執行。阻塞和掛起沒有聯系。
#3使之掛起的進程為:自身、其父進程、OS
#4只有掛起它的進程才能使之由掛起狀態轉換為其他狀態.
2.3掛起與阻塞
區分概念,阻塞是指進程是否等待事件;掛起是指進程是否被換出內存。四種狀態組合是指,就緒:進程在內存,準備執行;阻塞:進程在內存,等待事件;就緒/掛起:進程在外存,只要調入內存即可執行 ;阻塞/掛起:進程在外存,等待事件。
注: 處理機可調度執行的進程有兩種:
新創建的進程; 或換入一個以前掛起的進程。 通常為避免增加系統負載,系統會換入一個以前掛起的進程執行。
具有掛起狀態的狀態轉換模型
注 :
1.阻塞->阻塞/掛起 :OS通常將阻塞進程換出,以騰出內存空間
2.阻塞/掛起->就緒/掛起:當阻塞/掛起進程等待的事件發生時,可以將其轉換為就緒/掛起
3.就緒/掛起->就緒:OS需要調入一個進程執行.
2.3 進程的控制
2.3.1 兩種執行模式
模式一:系統模式/系統態/控制模式/內核模式
具有較高的特權;運行系統特定的指令,包括讀寫控制寄存器的指令、基本I/O指令以及與存儲器管理有關的指令,及一些特定的內存區。內核模式下的處理機及其指令、寄存器和內存都完全受到控制和保護。
模式二:用戶模式
具有較低的特權,用戶程序一般運行在用戶模式
2.3.2 模式切換
用戶模式->系統模式:用戶程序執行到一條系統調用,進入操作系統內核執行
系統模式->用戶模式 :執行完系統調用的功能,返回到用戶程序
特殊情況:程序執行到結束語句時,切換到系統模式,不再返回到用戶程序.
2.3.3 操作系統內核(Kernel)
操作系統的核心, 是基于硬件的第一層軟件擴充 ,提供操作系統最基本的功能,是操作系統工作的基礎。現代操作系統設計中,為減少系統本身的開銷,往往將一些 與硬件緊密相關的 (如中斷處理程序、設備驅動程序等)、 基本的、公共的、運行頻率較高的模塊 (如時鐘管理、進程調度等)以及 關鍵性數據結構 獨立開來,使之 常駐內存 ,并對它們進行特殊保護。通常把這一部分稱為操作系統的內核。
##: 用戶通過系統調用訪問操作系統的功能,這些功能最終都通過操作系統內核實現。
##:不同的操作系統對內核的定義和功能范圍的設定是不同的(操作系統內核定義的理解不同)。
一般地,操作系統內核的功能可以概括地劃分為資源管理功能和支撐功能。
##:資源管理,進程管理(進程創建和終止、調度、狀態轉換、同步和通信、管理PCB)、存儲管理(為進程分配地址空間、對換、段/頁管理)和I/O設備管理(緩存管理、為進程分配I/O通道和設備)
##:支撐功能,中斷處理、統計、監測、時鐘管理、原語操作等。
2.3.4 進程創建的原因、步驟以及進程終止的原因
進程創建的原因:
##:提交新的批處理作業
##:交互式用戶注冊
##:操作系統提供服務
##:父進程創建子進程
進程創建的步驟:
(1)為進程分配一個唯一標識號ID 主進程表中增加一個新的表項
(2)為進程分配空間,用戶地址空間、用戶棧空間、PCB空間。若共享已有空間,則應建立相應的鏈接。
(3)初始化PCB,進程標識、處理機狀態信息、進程狀態
(4)建立鏈接,若調度隊列是鏈表,則將新進程插入到就緒或就緒/掛起鏈表
(5)建立或擴展其他數據結構
進程終止的原因:
##:批處理作業執行到“結束”語句
##: 交互式用戶“注銷”
##: 停止進程(應用程序)的執行
##: 遇到錯誤或故障
舉例:進程A切換到進程B的步驟:
(1)首先,保護進程A的現場,將進程A的當前運行信息( 如程序執行到的當前位置,程序狀態字,所有的寄存器值等 )保存到進程A的PCB中。
(2)然后,恢復進程B的現場,從進程B的PCB中獲取其執行信息,將這些信息寫入相應的寄存器中,程序計數器指向進程B將執行的下一條指令。進程B可能第一次開始執行,也可能是被中斷過的進程,恢復執行。不論是哪一種情況,進程B的執行信息都能在其PCB中找到。
3.比較進程切換與模式切換
進程切換是指:作用于進程之間的一種操作。當分派程序收回當前進程的CPU并準備把它分派給某個就緒進程時,該操作將被引用。
模式切換是指:是進程內部所引用的一種操作。當用戶程序轉入系統調用,或相反時,該操作將被引用。
進程切換一定引發模式切換,反之則不然。【進程正在執行時,如果需要切換到另一個進程,需要引用系統的監控程序進行進程的調度,一定會觸發模式切換】
4.進程的調度 4.1什么是調度?(兼顧公平、效率、饑餓現象)
調度是指,在一個隊列中,按照某種方法(算法),選擇一個合適的個體的過程。調度的關鍵是需要某種方法或算法,好的調度算法有利于選擇到合適的個體。如何判斷、設計一個好的調度算法呢?
4.2 調度的目標
##: 公平性,防止進程長期不能獲得調度而饑餓;
##: 處理機利用率,盡量提高處理機的利用率;
##: 提高系統吞吐量;
##: 盡量減少進程的響應時間
4.3 調度的原則
## 滿足用戶的要求:響應時間、周轉時間、截止時間
響應時間是指,從用戶通過鍵盤提交一個請求開始,直到系統首次產生響應為止的時間。 響應時間=輸入的請求傳送到處理機的時間+ 處理機對請求信息進行處理的時間+ 將響應結果發送到輸出終端的時間。 調度算法則應考慮盡可能使絕大多數用戶的請求能在響應時間內完成。 常用于評價分時系統的性能。
周轉時間是指,從作業提交給系統開始,到作業完成為止的這段時間間隔。周轉時間=作業在外存排隊等待調度的時間+進程在就緒隊列中等待調度的時間+進程被處理機執行的時間+等待I/O操作完成的時間。常用于評價批處理系統的性能
截止時間是指,實時系統中,某任務必須開始執行的最遲時間(開始截止時間),或必須完成的最遲時間(完成截止時間)。常用于評價實時系統的性能。
## 滿足系統的需求:系統吞吐量、處理機利用率、各類資源的平衡使用、公平性及優先級
吞吐量是指指單位時間內系統所完成的作業數,常用于評價批處理系統的性能。
處理機利用率是指,大、中型多用戶系統,由于處理機價格昂貴,處理機利用率是衡量系統性能的一個重要指標,單用戶微機或某些實時系統,則并非很重要。
各類資源的平衡使用,多道程序系統的目標之一就是為了提高系統資源的利用率,因此,調度算法有責任使系統中的各種資源都盡量處于忙碌狀態。該原則同時適用于長程調度和中程調度,因為它們可以決定哪些作業(進程)可以進入內存,可以考慮系統資源的均衡使用。
公平性是指,調度算法應該對所有進程公平,不偏袒任何進程。
優先級是指:優先權高的進程應優先調度。可以根據進程的優先權不同,組織不同的就緒隊列。進程調度時首先選擇高優先權隊列中的進程,直到該隊列空,再調度較低優先權隊列中的進程,如圖所示:
幾乎所有操作系統的調度算法都可考慮優先權原則。當然,僅考慮優先權,可能會出現饑餓,對低優先權的進程不公平。可以將進程排隊的等待時間等因素納入優先權的計算,隨著進程等待時間的增長,其優先權也不斷提高,進程也會在不久的將來得到調度。
可以將進程排隊的等待時間等因素納入優先權的計算,隨著進程等待時間的增長,其優先權也不斷提高,進程也會在不久的將來得到調度。