linux學習筆記(四)系統呼叫

2021-07-27 02:18:52 字數 581 閱讀 4824

posix : ieee標準

c庫:

系統呼叫:系統核心層面使用,應用層需要syscall

asmlinkage 限定詞 通知編譯器僅從棧中提取該函式引數

系統通過呼叫號來進行系統呼叫,在編譯的時候已經確定

系統呼叫表,例如x86-64就在 arch/i386/kernel/syscall_64.c

應用程式通過軟中斷方式通知核心,通過乙個異常導致系統切換到核心

指標必須保證:

記憶體區域屬於使用者空間

在程序的位址空間裡

讀寫可執行等許可權要說明

使用copy_to_user() 和copy_from_user()來進行核心使用者層交換資料,它們的引數類似memcpy

使用capable() 來判斷是否有許可權,

_syscalln() n為0~6,代表需要傳遞的引數個數

例如open 進行系統呼叫: _syscall3(long,open,const char*,filename,int,flags,int,mode);原型:long open(const char* filename,int flags,int mode);

Linux核心學習筆記四 系統呼叫

一 使用者空間和核心空間 linux核心將這4g位元組虛擬位址空間的空間分為兩部分 l 將最高的1g位元組 從虛擬位址0xc0000000到0xffffffff 供核心使用,稱為 核心空間 l 將較低的3g位元組 從虛擬位址 0x00000000到0xbfffffff 供各個程序使用,稱為 使用者空...

Linux核心學習筆記四 系統呼叫

一 使用者空間和核心空間 linux核心將這4g位元組虛擬位址空間的空間分為兩部分 l 將最高的1g位元組 從虛擬位址0xc0000000到0xffffffff 供核心使用,稱為 核心空間 l 將較低的3g位元組 從虛擬位址 0x00000000到0xbfffffff 供各個程序使用,稱為 使用者空...

Linux核心分析四 系統呼叫

linux核心分析四 系統呼叫 本文是 linux核心分析 課程的第四次作業,作者劉洋為您奉上。本次課程分別通過c語言和組合語言實現同乙個系統呼叫,來理解linux系統呼叫。作業系統為在使用者態執行的程序與硬體設別之間進行互動提供了一組介面,這種分層的設計能夠帶來很多優點。首先,把使用者從底層硬體開...