Linux系統呼叫原理

2021-08-08 04:15:25 字數 1324 閱讀 1936

rootfs (使用者空間)

|kernel (核心空間) --- 檔案系統 裝置驅動 網路協議棧 程序管理 記憶體管理 平台** 系統呼叫 --- 七大子系統

|uboot

|

硬體

linux系統分為使用者空間和核心空間

使用者空間的特性:

包含了應用軟體, c庫,對應的cpu的工作模式為usr模式;不能直接訪問硬體裝置;

如果進行記憶體的非法訪問,應用程式會崩潰,但是系統不會崩潰! ((int )0 = 0;)

4g虛擬記憶體,使用者空間獨佔前3g;

包含了7大子系統

檔案系統,裝置驅動,網路協議棧,程序管理,記憶體管理,平台**,系統呼叫

對應的cpu的工作模式為svc模式;

可以直接對硬體進行訪問操作;

如果進行記憶體的非法訪問,作業系統直接崩潰!

(int )0 = 0;

4g虛擬記憶體,核心空間獨佔後1g;

空間的劃分的本質目的:實現作業系統的自我保護
使用者和核心如何互動 –>通過系統呼叫

應用程式呼叫系統呼叫函式
系統呼叫號:linux系統給每乙個系統呼叫函式都分配乙個唯一的號碼,類似人的身份證號;

系統呼叫表:本質上就是乙個大陣列,每個元素儲存著乙個核心函式名(函式位址),陣列元素對應的下標就是系統呼叫號;

1.應用程式呼叫系統呼叫函式,首先呼叫到c庫的對應函式的定義地方;

例如read系統呼叫函式的定義在c庫中;

2.呼叫到c庫的函式定義的地方後,將會做如下工作:

2.1首先儲存read函式對應的系統呼叫號到r7暫存器

2.2呼叫svc指令觸發軟中斷異常

老arm體系結構:swi

新arm體系結構:svc

軟中斷:實現cpu的工作模式由usr切換到svc

此時:使用者程式由使用者空間「陷入」核心空間

3.一旦觸發異常,cpu跳轉到異常向量表軟中斷的處理入口,至此進入核心空間

4.進入軟中斷的處理入口以後,將會做如下事情:

1.從r7暫存器中取出系統呼叫號

2.2.以系統呼叫號為下標(索引)在系統呼叫表中找到對應的核心函式sys_read

5.找到對應的核心函式以後,呼叫這個核心函式,呼叫完畢,原路返回到使用者空間,至此應用程式的read函式呼叫完畢

Linux 系統呼叫原理

unistd.h檔案記錄著系統呼叫中斷號的資訊。syscall nr kill,sys kill security keys keyctl.c define nr add key 217 syscall nr add key,sys add key syscall define5 add key,c...

Linux系統呼叫原理

對於linux系統開發,系統呼叫是平常開發工作中算是用的比較多,那什麼是系統呼叫呢?顧名思義,系統呼叫就是由核心抽象出的一些介面 用層呼叫,從而達到應用層訪問得以訪問核心層資源,之所以需要這麼麻煩,是因為linux系統中分為核心態和使用者態,這裡簡單可以認為不同的記憶體位址所具有的許可權不一樣,核心...

Linux系統呼叫 syscall 原理

linux體系結構 核心空間與使用者空間是程式執行的兩種不同狀態,通過系統呼叫和硬體中斷能夠完成從使用者空間到核心空間的轉移。如下圖所示 linux 體系結構圖 從上圖得知,linux由使用者空間和核心空間 一般情況下,使用者程序是不能訪問核心的。它既不能訪問核心所在的記憶體空間,也不能呼叫核心中的...