1. 用途
系統呼叫是呼叫作業系統提供的一組函式,比如i/o讀寫磁碟等。
由於是作業系統提供的,故只能在核心態中執行。使用者編寫的程式平時執行在使用者態,需要用系統呼叫時只能通過特定的方式來使用系統呼叫。
2. 概念
linux核心中設定了一組用於實現各種系統功能的子程式,稱為系統呼叫。使用者可以通過系統呼叫命令在自己的應用程式中呼叫它們。
解析:從某種角度來看,系統呼叫和普通的函式呼叫非常相似。區別僅僅在於,系統呼叫由作業系統核心提供,執行於核心態;而普通的函式呼叫由函式庫或使用者自己提供,執行於使用者態。
linux核心還提供了一些c語言函式庫,這些庫對系統呼叫進行了一些包裝和擴充套件,習慣上把這些函式也稱為系統呼叫。
3. 如何工作
其原理是程序先用適當的值填充暫存器,然後呼叫乙個特殊的指令,這個指令會跳到乙個事先定義的核心中的乙個位置(當然,這個位置是使用者程序可讀但是不可寫的)。
程序可以跳轉到的核心位置叫做sysem_call。這個過程檢查系統呼叫號,這個號碼告訴核心程序請求哪種服務。然後,它檢視系統呼叫表(sys_call_table)找到所呼叫的核心函式入口位址。接著,就呼叫函式,等返回後,做一些系統檢查,最後返回到程序(或到其他程序,如果這個程序時間用盡)。
4. 新增系統呼叫
1)新增到系統呼叫表中 arch/arm/kernel/calls.s
2)編寫該系統呼叫的具體實現 kernel/sys.c
3) 新增系統呼叫的函式宣告 include/linux/syscall.h
編譯核心
5. 應用層的呼叫方式:
應用程式用來與核心通訊的介面。應用程式通常通過呼叫庫函式,再由庫函式通過系統呼叫,讓核心代其完成各種不同的任務。應用程式被稱為通過系統呼叫在核心空間執行,而核心被稱為執行於程序上下文中。
linux 系統呼叫
使用者應用可以通過兩種方式使用系統呼叫。第一種方式是通過c庫函式,包括系統呼叫在c庫中的封裝函式和其他普通函式。圖5.2 使用系統呼叫的兩種方式 第二種方式是使用 syscall巨集。2.6.18版本之前的核心,在include asm i386 unistd.h檔案中定義有7個 syscall巨集...
Linux系統呼叫
一 實驗目的和要求 1.學習linux核心的配置和編譯 2.深入理解linux系統呼叫 3.理解arm和x86的cpu模式 系統模式 使用者模式 的不同 4.掌握核心模組的編寫方法。二 實驗器材 1.linux實驗板卡一塊 2.5v 1a電源乙個 3.microusb線一根 4.macos一台 5....
Linux系統呼叫
linux系統呼叫 系統呼叫 system call 是使用者空間訪問核心的唯一手段,除異常和陷入外,他們是核心唯一的合法入口。通常情況下應用程式是通過應用程式設計介面api來訪問函式,而不是直接使用系統呼叫來程式設計。作業系統通常是通過中斷從使用者態切換到核心態。中斷就是乙個硬體或軟體請求,要求c...