什麼是程序掛起和程序切換?
讓我們首先了解什麼是程序掛起。
程序掛起
當主存中的程序進入阻塞狀態時,作業系統會將一個程序掛起,將其放入掛起狀態並轉移到磁碟。記憶體中空閒的空間用於調入另一個程序。
許多作業系統都圍繞就緒、執行、阻塞狀態。但通常,作業系統的執行中還有一個掛起狀態。
如果任何處於就緒狀態的程序沒有佔用主存,作業系統會將一個阻塞程序換出到掛起佇列。
假設,當一個掛起程序準備執行時,它會進入就緒掛起佇列。因此,我們還有另外兩種狀態:阻塞掛起和就緒掛起。
目的
程序掛起的目的如下:
交換
定時
互動式使用者請求
父程序請求
現在讓我們討論程序切換。
程序切換
當作業系統從當前執行的程序獲得控制權時,隨時可能發生程序切換。讓我們考慮一下系統中斷。有兩種型別的系統中斷,如下所示:
中斷
陷阱
切換程序
當我們可以切換程序時,將在下面解釋。
監督呼叫 - 程式的顯式請求,例如來自檔案的請求。該程序可能會被阻塞。
陷阱 - 上一條指令導致的錯誤。這可能會導致程序移至終端狀態。
中斷 - 這是當前程序外部執行的原因。
程序切換步驟
程序切換的步驟如下:
儲存 CPU 上下文(使用模式位從使用者模式切換到核心模式)。
更新當前程序的 PCB(程序控制塊)。
將當前程序的 PCB 移動到相應的佇列。
選擇另一個程序執行。(由 CPU 排程程式)
更新所選程序
更新記憶體管理結構
恢復新 PCB 的 CPU 上下文(從核心模式切換到使用者模式)。
目的
程序切換是作業系統排程程式從一個正在執行的程式切換到另一個程式。這需要儲存當前正在執行程式的所有狀態,包括其暫存器狀態、相關的核心狀態及其整個虛擬記憶體配置。然後載入新程式的所有狀態,並繼續執行。
區別
程序切換和程序掛起的主要區別如下:
程序掛起
掛起的程序不會立即可用。
程序可能正在等待事件,也可能不在等待。
在代理發出移除命令之前,程序可能不會從掛起狀態中移除。
程序切換
程序切換也稱為上下文切換,它涉及儲存資訊。
更新控制資訊。
並恢復 CPU 資訊。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP