1. 程式人生 > 實用技巧 >使用者空間和核心空間

使用者空間和核心空間

使用者空間和核心空間

​ 學習Linux時,經常可以看到兩個詞:User space(使用者空間)可 Kernel space(內容空間)

簡單的鎖,Kernel space是Linux核心的執行空間,User space 是使用者程式的執行空間。為了安全,它們是隔離的。即使使用者的程式崩潰了,核心也不受影響、

​ 虛擬的記憶體被作業系統劃分成兩塊:核心空間和使用者空間,核心空間是核心程式碼執行的地方,使用者空間是使用者程式程式碼執行的地方。當進行執行在核心空間的時就處於核心狀態,大概程序執行在使用者空間時就處於使用者態。

​ Kernel space 可以執行任意命令,呼叫系統的一切資源。User space只能執行簡單的運算。不能直接呼叫系統資源。必須通過系統介面(又稱system call),才能發出指令。

​ 通過系統介面,程序可以從使用者空間切換到核心空間。

str = "m" //使用者空間
x = x + 2;
file.write(str) //切換到核心空間
y = x + 4;//切換回使用者空間

​ 上面程式碼中,第一行和第二行都是簡單的賦值運算。在User space 執行。第三行需要寫入檔案,就要切換到Kernel space ,因為使用者不能直接寫檔案,必須通過核心安排。第四行又是賦值運算,接切回User space。

​ 檢視CPU時間在User space 與 Kernel Space之間的分配情況,可以使用top命令。他的第三行輸出就是cpu的時間分配統計

​ 其中第一項3.2us 就是cpu消耗在User space 的時間百分比。第二項 3.2sy是消耗在Kernel space的時間百分比

​ ni : niceness的縮寫,CPU消耗在nice程序(低優先順序)的時間百分比

​ id :idle的縮寫,CPU消耗在閒置程序的世界百分比,這個值越低,表示CPU越忙

​ wa:wait縮寫,CPU等待外部I/O的時間百分比,這段時間CPU不能幹其他時間,但是也沒有執行運算,這個值太高就說明外部裝置有問題

​ hi:hardware interrupt 的縮寫,CPU 響應硬體中斷請求的時間百分比

​ si:software interrupt 的縮寫,CPU響應軟體中斷請求的時間百分比

​ st :stole time 的縮寫,該項指標只對虛擬機器有效,表示分配給當前虛擬機器的cpu時間之中,被同一臺物理機上的其它虛擬機器偷走的時間