處理器模式
cpsr暫存器
arm v4的cpsr暫存器(和儲存它的spsr暫存器)中的位分配如下圖所示。
處理器模式 描
述使用者模式(
user,usr
)正常程式執行的模式
快速中斷模式(
fiq,fiq
)用於高速資料傳輸和通道處理
外部中斷模式(
irq,irq
)使用者通常的中斷使用
特權模式(
supervisor,sve
)供作業系統使用的一種保護模式
資料訪問中止模式(
abort,abt
)用於虛擬儲存及儲存保護
未定義指令中止模式(
undefin- ed,und
)用於支援通過軟體**硬體的協處理器
系統模式(
system,sys
)用於執行特權級的作業系統任務
處理器模式
體系結構
模式編號 使用者
全部0b10000
fiq - 快速中斷請求 全部
0b10001
irq - 中斷請求 全部
0b10010
超級使用者 全部
0b10011 中止
全部0b10111
未定義 全部
0b11011 系統
armv4 及更高版本
0b11111 監控
僅限安全擴充套件
0b10110
1.除了使用者模式以外,其他6種處理器模式可以稱為特權模式
(前5種也稱為異常處理模式,即除了系統模式)
2.特權模式允許對cpsr的完全讀/寫訪問;與些相反,非特權模式只允許對cpsr的控制域進行讀訪問,但允許對條件標誌的讀/寫訪問。
3.通過修改
cpsr
可以進入異常
msr cpsr_c,#(noint | svc32mode) //
從系統模式切換到管理模式
也可以在核心對異常或者中斷響應時由硬體切換到異常模式
使用者模式和系統模式不能由異常進入,也就是說要想進入系統模式,必須通過修改
cpsr
才能實現
msr cpsr_c,#(noint | sys32mode) //
從管理模式切換到系統模式 4.
當乙個異常發生時處理器總是切換到
arm狀態而黑
thumb
狀態5.
每一種異常與處理器的一種模式相對應,應用程式發生特定中斷時,處理器核心立即跳轉到向量表中的某個入口位址,執行相應的程式。每一種模式都有相對應的暫存器,保證引入引入異常時使用者模式下的暫存器不被破壞
當處理器訪問儲存器失敗時,進入資料訪問中止模式(abort);
中斷模式和快速中斷模式分別對arm處理器兩種不同級別的中斷作出響應;
處理器復位以後,進入管理模式,作業系統核心也通常處於這種模式;
系統模式是一種特殊的使用者模式主要供作業系統的任務使用,允許對cpsr的完全讀/寫訪問;
當處理器遇到沒有定義的指令或處理器不支援該指令時,進入未定義模式;
使用者模式執行應用程式。
6.特權模式可以訪問系統的所有資源,也可以在各個模式之間進行切換
7.各種異常模式有自己的暫存器組,使用者模式和系統模式的暫存器組是一樣的
,所以系統模式可以使用者狀態下相應的暫存器了,而不是使用異常模式下相應的暫存器,這樣就可以保證當異常中斷發生時任務的狀態不被破壞
。使用者模式通過異常可以進入異常模式,但是由使用者模式進入系統模式並不是通過異常實現的。 8.
需要任務保護的應用程式通常在使用者模式下執行。 有些嵌入式應用程式可能完全執行在超級使用者模式或系統模式下。進入除使用者模式之外的模式是為了處理異常或訪問特許資源。
在這些模式下,程式可以訪問所有的系統資源,也可以任意地進行處理器模式的切換。其中除了系統模式外的其他5種特權模式又稱為異常模式。處理器模式可以通過軟體來切換,在arm linux作業系統中,只有執行在核心態的程式才有可能更改處理器模式,使用者態的程式是不能訪問受作業系統保護的系統資源的,更不能直接進行處理器模式的切換。當需要處理器模式切換的時候,使用者態的程式可以中斷,核心態的中斷處理程式開始響應並做出處理。
以上7種模式對應了系統中的中斷向量表,這在移植作業系統的時候很重要。系統中所有的排程都是圍繞著中斷向量表展開的,在不用作業系統的系統中也就是通常所謂的裸機系統程式中,對於中斷向量表的處理也很關鍵。這個向量表一般載入在cpu復位執行的開始位址的一段空間。在arm linux作業系統中,boot loader程式的移植中需要考慮這些問題,而一旦boot loader移植成功,執行起來以後,開發人員就不需要再考慮這個問題了。
作業系統實驗一 處理器管理
作業系統實驗一 處理器管理 實驗報告 一 實驗目的 1 加深對處理機排程的作用和工作原理的理解。2 進一步認識併發執行的實質。二 實驗要求 本實驗要求用高階語言,模擬在單處理器情況下,採用多個排程演算法,對n個程序進行程序排程。語言自選。並完成實驗報告。三 實驗內容 在採用多道程式設計的系統中,往往...
作業系統實驗一 處理器管理
一 實驗目的 1 加深對處理機排程的作用和工作原理的理解。2 進一步認識併發執行的實質。二 實驗要求 本實驗要求用高階語言,模擬在單處理器情況下,採用多個排程演算法,對n個程序進行程序排程。語言自選。並完成實驗報告。三 實驗內容 在採用多道程式設計的系統中,往往有若干個程序同時處於就緒狀態。當就緒狀...
統一處理異常
1.controlleradvice 註解定義全域性異常處理類 controlleradvice public class globalexceptionhandler 2.exceptionhandler 註解宣告異常處理方法,註解的方法的引數列表裡,還可以宣告很多種型別的引數 controlle...