歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> Unix基礎知識

kernel學習之系統調用在用戶空間的訪問

這篇文章是對上篇的一個補充。

如何使用系統調用

1、通過c庫來使用系統調用

2、在2.6.18之前的內核使用_syscall宏來使用系統調用。

3、在2.6.19開始廢除了_syscall,而使用syscall()通過向函數提供調用號和參數實現調用

c語言中系統調用

#include <unistd.h>  
      
#include <stdio.h>  
      
#include <sys/syscall.h>  
      
#include <sys/types.h>  
      
int main()  
      
{  
      
     pid_tpid;  
      
     printf("%d\n",syscall(224));  
      
     return0;  
      
}

查看本欄目更多精彩內容:http://www.bianceng.cn/OS/unix/

若是用匯編實現系統調用,沒有參數時init $0x80即可,若有參數還要把參數壓棧。匯編和你使用的平台有關。

為什麼要用系統調用:

1、系統調用可以提供給用戶空間訪問硬件資源的接口,從而應用程序不用關心具體的硬件細節。如在讀寫文件時,用戶空間不會關心磁盤的類型和哪種文件類型。

2、系統調用可以對系統進行保護,使系統更穩健和安全。系統調用的存在規定了用戶進程進入內核的具體方式,即用戶訪問內核的路徑是事先規定好的。

出處:http://blog.csdn.net/muge0913/article/details/7518556

Copyright © Linux教程網 All Rights Reserved