站長資訊網
最全最豐富的資訊網站

linux中什么是系統調用

在linux中,系統調用是指操作系統提供給用戶程序調用的一組特殊接口,用戶程序可以根據這組接口獲得操作系統內核的服務;系統調用規定了用戶進程陷入內核的具體位置,或者說規劃了用戶訪問內核的路徑,只能從固定位置進入內核。

linux中什么是系統調用

本教程操作環境:linux7.3系統、Dell G3電腦。

linux中什么是系統調用

1.什么是系統調用

系統調用,指的是操作系統提供給用戶程序調用的一組特殊接口,用戶程序可以根據這組接口獲得操作系統內核的服務。它規定了用戶進程陷入內核的具體位置,或者說規劃了用戶訪問內核的路徑,只能從固定位置進入內核。

2.linux的系統調用

對于現代操作系統來說,系統調用是用戶空間和內核通訊的普遍手段,linux也不例外。按照功能區域,linux系統調用大致分為進程控制,文件訪問,系統控制,存儲管理,網絡管理,進程通訊等,詳細說明可以通過man 2 syscalls命令查看manpage說明。

系統調用,僅僅通過軟中斷機制向內核提交請求,進入系統調用對應服務。linux提供的用戶編程接口遵循了POSIX標準,這套標準除了定義一些標準的C函數外,提供了一套封裝例程將系統調用封裝供用戶編程使用。不過封裝并非必須的,如果你愿意直接調用,linux內核也提供了一個syscall()函數來實現調用。通過下面一個例子了解C庫調用和直接調用的區別。

/* **  file: demo.c **  author: eric.xu **  date:   2016-02-25 */ #include <syscall.h> #include <unistd.h> #include <sys/types.h> #include <stdio.h> int main(void) {     long id1, id2;          /* system call no 20, __NR_getpid equal to SYS_getpid  */     id1 = syscall(__NR_getpid);     printf("sys_call getpid %ldn", id1);     /* libc getpid */     id2 = getpid();     printf("libc getpid %ldn", id2);     return 0; }

編譯運行,可以看到兩者結果一致。

sys_call getpid 2899 libc getpid 2899

3.linux系統調用實現

當用戶態的進程調用一個系統調用時,CPU切換到內核態并開始執行內核函數。因為內核中每個系統調用都有唯一的標號,所以用戶態調用必須傳遞一個系統調用號的參數來確定具體的系統調用函數。所有的系統調用函數都是整數,在內核中,整數和0表示系統調用成功結束,負數則表示出錯條件,而這個錯誤值會存放在errno變量中作為出錯碼返回給應用程序。

linux系統調用使用軟中斷實現,在x86架構中調用int $0x80匯編指令,這條指令會產生向量為128的異常。而在arm架構中通過SWI指令進入內核空間,下面看下這條指令的格式:

SWI {cond} immed24;其中immed24表示24位立即數

SWI異常中斷處理程序需要通過讀取引起軟件中斷的SWI指令,取得24位立即數。基本步驟是在SWI異常產生后,訪問SPSR寄存器判斷該指令是ARM指令還是Thumb指令,然后通過訪問LR寄存器得到整條指令地址,緊接著拿到該條指令,獲取最低24位立即數。

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
9久9久热精品视频在线观看| 日韩在线观看高清视频| 精品无码日韩一区二区三区不卡| 99re6这里只有精品| 日韩免费观看一级毛片看看| 国产精品成人无码免费| 无码国产精品一区二区免费I6| 精品久久亚洲中文无码| 99久久精品国产亚洲| 久久久国产精品一区二区18禁 | 中文字幕九七精品乱码| 精品无码久久久久久久久| 国产精品免费精品自在线观看| 精品亚洲A∨无码一区二区三区| 久久久久青草大香线综合精品| 国产精品无码A∨精品影院| 99国产精品一区二区| 久草热久草热线频97精品| 国产成人精品亚洲精品| 亚洲国产精品碰碰| 日韩a在线观看免费观看| 日韩国产欧美亚洲v片| 亚洲日韩国产AV无码无码精品 | 久久国产精品久久久久久久久久| 精品免费tv久久久久久久| 一色屋精品视频在线观看| 一本一本久久aa综合精品| 国产午夜无码精品免费看| 亚洲国产一二三精品无码| 国产亚洲一区二区精品| 精品国产一区二区三区免费| 久久久久夜夜夜精品国产| 久久这里只有精品66re99| 无码国产精品一区二区免费3p | 国产成人精品日本亚洲专| 99re这里只有精品6| 久久99精品国产麻豆婷婷| 国产午夜精品一区二区三区不卡 | 一色屋成人免费精品网站| 四虎永久在线精品波多野结衣| 国产精品1024|