Linux核心分析 實驗四

2021-07-10 14:22:11 字數 445 閱讀 8190

當我們使用某些庫函式的api時,實際上該庫函式啥都沒乾,它只是乙個系統呼叫的封裝。x86為例,系統呼叫會執行int 0x80指令,也就是陷入。作業系統會變為核心態,查詢系統呼叫表,跳轉到相應的系統呼叫。每個系統呼叫都對應乙個唯一的系統呼叫號,系統呼叫之前,會從eax暫存器讀系統呼叫號,系統呼叫的返回值也會儲存在eax中。

下面我們在c**中嵌入彙編,實現乙個getpid的系統呼叫。該系統呼叫獲取當前程序的pid號。

首先,看**:

編譯執行:

通過這次實驗,更加熟練使用嵌入彙編,對系統呼叫有了更深的理解。

linux核心分析四

使用庫函式api和c 中嵌入彙編 兩種方式使用同乙個系統呼叫,理解系統呼叫的工作機制。api 第一層是指libc中定義的api,這些api封裝了系統呼叫,使用int 0x80觸發乙個系統呼叫中斷 當然,並非所有的api都使用了系統呼叫,如完成數學加減運算的api就沒有使用系統呼叫 也有可能某個api...

Linux核心分析 實驗二

該實驗要求完成乙個簡單的時間片輪轉多道程式核心 首先我們看看mykernel裡面的mypcb.h define max task num 10 max num of task in system define kernel stack size 1024 8struct thread typedef...

Linux核心分析實驗三

使用gdb 跟蹤除錯核心從 start kernel 到init 程序啟動 使用gdb 跟蹤除錯核心 開啟 shell 終端,執行以下命令 cdlinuxkernel qemu kernellinux 3.18.6 arch x86 boot bzimage initrd rootfs.img s ...