系統呼叫的原理與好處

2021-08-15 09:26:43 字數 498 閱讀 7515

我們呼叫乙個c語言庫中的api,這個api中有乙個指令int 0x80,這是乙個由指令發出的系統中斷,叫軟中斷。這個中斷使系統由使用者態陷入核心態,並跳轉到核心中位址為sys_call的函式首部。sys_call是系統呼叫引導程式,會通過系統呼叫號查詢系統呼叫表,取出表中記錄的系統呼叫函式的位址並跳轉執行。當中斷指令int 0x80執行的時候,先將系統呼叫號存入暫存器eax,sys_call函式將其乘以4作為偏移量,再加上sys_call_table的初始位址得到系統呼叫服務函式的位址,最後跳轉執行。

還有一點,有一些系統呼叫有引數,api需要將引數先存在暫存器中,然後在呼叫指令int 0x80.然後在sys_call函式呼叫時,將這些暫存器中的值壓入堆疊,真正的系統呼叫服務函式從堆疊中獲取引數。

系統呼叫大的好處:提供了統一的介面,比如讀取資料,api就不必理會資料儲存的物理介質。保護了os的穩定,因為系統呼叫、異常和中斷是外界進入核心的僅有通道,這就保證了不同程序對核心空間的操作是可知並可控的,這為os多任務排程和虛擬記憶體實現提供了基礎。

系統呼叫的原理

原始的系統呼叫是通過中斷向量80所代表的的中斷來實現 把系統呼叫號存到乙個暫存器 中,然後發出int 0x80。已經註冊號的中斷處理程式會檢測暫存器的內容,根據不同的系 統呼叫號,提供具體的服務。中斷的處理過程分三步 a 保持暫存器的內容 b 呼叫中斷 處理程式進行處理 c 重新載入之前暫存器的內容...

系統呼叫原理

系統呼叫 系統呼叫是應用程式和作業系統核心的介面,無論程式是直接進行系統呼叫還是通過執行庫,最終還是會到達系統呼叫層面上。之所以要系統呼叫,是因為現在作業系統都將可能產生衝突的系統資源給保護起來,組織應用程式直接訪問。這些系統資源包括檔案 網路 io 各種裝置等。所有的這些操作都必須經由作業系統所規...

系統呼叫原理

以fork 為例 int main fork fork 是乙個對系統呼叫fork的封裝,可用下列巨集來定義 syscall0 pit t,fork syscall0是乙個巨集函式,i386版本定義如下 define syscall0 type,name type name void long res...