linux內核分析-week4

0.筆記linux

本週進行了linux內核分析的第四周學習,對系統調用過程有了初步瞭解。撰寫此文,記錄學習同時也是爲了完成做業。
0.1 系統調用
系統調用是操做系統留給用戶態和硬件設備進行交互的接口,讓用戶從繁瑣的底層編程中解放出來,提升了系統的安全性和可移植性。編程

層次關係api

clipboard.png
經過int 0x80進行系統調用,經過eax傳遞系統調用號,用來指明須要調用的系統調用。安全

1.實驗代碼函數

本實驗分別使用庫函數封裝好的getpid()函數和彙編編寫的程序獲取當前進程號,分別測試兩種狀況下結果是否相同來驗證明驗效果。
getpid系統調用號是0x14,進行int 0x80以前須要將該系統調用號裝入eax寄存器中去。學習

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main(){
    int pid = 0;
    //使用庫函數封裝好的getpid()函數
    pid = getpid();
    printf("use api,pid = %d\n",pid);
    //使用系統調用得到當前進程號
    asm volatile(
    "mov $0x14,%%eax\n\t"
    "int $0x80\n\t"
    "mov %%eax,%0\n\t"
    :"=m"(pid)
    );
    printf("use sys-call,pid = %d\n",pid);
    return 0;

}

2.實驗截圖測試

clipboard.png

使用不一樣方式,獲取的當前進程號是一致的:spa

clipboard.png

3.實驗總結操作系統

經過本次實驗,對系統調用有了初步瞭解,理解了應用程序、封裝例程、系統調用處理程序和系統調用服務例程之間的關係。對系統調用過程當中的過程有了初步瞭解。code

相關文章
相關標籤/搜索