Linux內核分析第五週總結

系統調用在內核代碼中的工做機制和初始化

xyz()與sys_xyz()是經過系統調用號聯繫在一塊兒的
0x80與system_call是經過中斷向量聯繫起來的函數

系統調用機制的初始化
3d

用匯編代碼編寫系統調用的過程:

  • 肯定出需傳入的參數,以及函數的返回值
  • 選擇適當的寄存器存儲輸入參數值,將輸入參數值傳給相應的寄存器
  • 將系統調用號存入到eax寄存器中,並使用"int $0x80"語句,進入中斷處理程序,中斷號80表明進入系統調用

進入系統調用後:

  • 進入sys_ call函數,該函數調用涉及到的系統調用函數(sys _ xxx函數)
  • 執行sys_ xxx函數的內部細節,最終將返回值傳遞給sys_ call函數過程
  • 在sys_ call函數中iret最後的結果

實驗

在main函數中增長MenuConfig和詳細函數

Make rootfs
調試


設置斷點
blog


進行單步調試
程序

總結

系統調用就是一個函數,它須要用到內核中的代碼,但這部分代碼我沒有辦法直接訪問,因此經過系統調用這個中介,它去讓內核執行須要執行的代碼,把最後的結果告訴用戶。這時爲用戶就是什麼都不知道了,等着系統調用來告訴用戶結果。im

相關文章
相關標籤/搜索