1. 程式人生 > >系統調用軟中斷處理程序system_call分析

系統調用軟中斷處理程序system_call分析

entry eight TE 總結 一個 tpi 更換 分享 進程

最近學習了系統調用的整個流程,這裏總結並記錄。同時作為學習孟寧老師的linux內核課程的作業。

唐建,《Linux內核分析》MOOC課程http://mooc.study.163.com/course/USTC-1000029000

1、概述

  系統調用整個過程為:API——封裝例程——system_call——系統調用程序。

上一篇博客分析了用戶空間部分:API——封裝例程。本文主要分析system_call 的主要邏輯。

2、系統調用例子

  上一篇文件我們測試了read和open 系統調用。本節我更換了一個簡單的系統調用getpid(sys_getpid)。

技術分享圖片技術分享圖片技術分享圖片技術分享圖片

可以看到,我們將系統調用處理函數斷住後,當使用系統調用,就會斷住。

3、system_call分析:D:\學習資料\linux\linux-3.18.6\linux-3.18.6\arch\x86\kernel\entry_32.S

system_call 是系統內核中的一段匯編代碼,我們無法打斷點跟蹤,所以這裏直接上代碼:

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

4、總結

  system_call主要流程:save_all——系統調用應用程序——restore_all

系統調用會引起進程上下文切換

系統調用軟中斷處理程序system_call分析