嵌入式Linux熱門培訓內容之Linux進程上下文和中斷上下文內核空間和用戶空間

時間:2018-12-13 17:38:45

一、什么是內核空間和用戶空間

內核空間:針對linux操作系統而言,將最高的1G字節(從虛擬地址0xC0000000到0xFFFFFFFF),供內核使用,稱為內核空間,內核空間執行的程序一般包括驅動程序,中斷程序,內存管理程序

用戶空間:將較低的3G字節(從虛擬地址0x00000000到0xBFFFFFFF),供各個進程使用,稱為用戶空間,運行在用戶空間的程序,像我們正常的用戶程序,計算器,日歷等,但是用戶空間的程序可以通過系統調用進入內核,于是,我們從進程的角度看,進程可以享受4G的虛擬內存空間

為什么會分為內核空間和用戶空間?

1、  現代CPU,以ARM為例,擁有不同的工作模式,不同的工作模式對CPU寄存器的訪問執行權限不一樣,對用戶開放的權限肯定不能太大,分層次就是為了方便用戶和系統的不同權限。

2、  系統調用是一個非常酷的東西,分層次為了統一系統調用接口,方便管理

3、  內存管理,虛擬地址和物理地址,用戶如果直接可以訪問到物理地址,那是一件非常恐怖的事情。

二、什么是進程上下文與中斷上下文

進程上下文:

用戶進程在執行系統調用,或者發生一個異常的時候,這時這個進程就進入了內核空間,這時候對內核來說就叫做進程上下文

進程上下文,一定是進行了系統調用或者異常執行,導致CPU從用戶空間到內核空間了,簡單理解點,可以把執行在用戶空間的代碼叫做進程上文,執行在內核空間的叫做進程下文

中斷上下文:

當內核在執行一個中斷處理函數或者執行中斷下半部時,這時候,內核是處在中斷上下文

這里引入一個中斷下半部,那就應該有中斷上半部

中斷上半部:觸發中斷開始到進入中斷處理程序的那個點,都可以叫中斷上半部

中斷下半部:執行中斷處理程序的那部分代碼

? 江苏快3号码表