Linux核心分析。4
扒開系統呼叫的三層皮
使用者態,核心態和中斷
1,核心態:在高執行級別下,程式碼可以執行特權指令,訪問任意的實體地址。
2,使用者態
-Intel x86 CPU有四種不同的執行級別0~3,Linux只用其中的0和3來表示核心態和使用者態
-區分核心態和使用者態:CPU每條指令的讀取都是通過cs:eip,cs暫存器最低兩位表明了當前程式碼的特權級。
-核心態下可訪問所有地址空間
-0xc0000000(邏輯地址)以上的空間只能在核心態下訪問
-0x00000000 ~ 0xbfffffff 核心態和使用者態均可訪問
使用者態轉換為核心態的主要方式:中斷
3,使用者態到核心態的切換:必須儲存使用者態的暫存器上下文,包括使用者態棧頂地址、當時的狀態字、cs:eip的值,以及核心態的棧頂地址、當時的狀態字、中斷處理程式入口。
-中斷髮生後的第一件事:儲存現場(SAVE_ALL:儲存需要用到的暫存器資料)。
-中斷處理結束前的最後一件事:恢復現場(RESTORE_ALL:退出中斷程式,恢復儲存暫存器的資料)。
系統呼叫概述
意義:作業系統為使用者態程式與硬體裝置進行互動提供了一組介面。
API:應用程式程式設計介面,是一個函式定義。
系統呼叫:通過軟中斷向核心發出一個明確的請求。
API與系統呼叫不是一一對應的
系統呼叫“三層皮:(1)API(2)中斷向量(3)中斷服務程式。
系統呼叫的引數傳遞:
-函式呼叫——壓棧
-使用者態到核心態——暫存器傳遞。
每個引數長度不能超過32位,個數不能超過6個。
超過的話?
使某個暫存器中儲存指標,指向記憶體,記憶體中儲存引數。
使用庫函式API和C程式碼中嵌入彙編程式碼觸發同一系統呼叫
使用庫函式API獲取系統當前的時間
結果:
使用C程式碼中嵌入彙編程式碼觸發系統呼叫獲取系統當前時間
執行結果:
實踐
24號getuid
總結
通過本週學習,我們簡單瞭解了系統呼叫,並將其“扒皮”老師視訊中所講解的三層皮:API,中斷向量以及中斷服務程式,分別所對應視訊中的XYZ,system_call和sys_xyz.系統呼叫返回的值長度不能超過32位而且個數不能超過6個。在實驗中關於彙編程式碼的理解還不是很透徹,在以後學習中還需多學習。
轉自朱國慶+原創作品轉載請註明出處 + 《Linux核心分析》MOOC課程http://mooc.study.163.com/course/USTC-1000029000
相關文章
- Linux核心分析。3Linux
- Linux核心分析。5Linux
- LINUX核心分析。6Linux
- LINUX核心分析。7Linux
- LINUX核心分析。8Linux
- Linux 4.x MTD原始碼分析-核心資料結構Linux原始碼資料結構
- Linux核心技術分析Linux
- Linux核心分析方法(轉)Linux
- 戴文的Linux核心專題:08 配置核心(4)Linux
- Linux核心排程分析(程式排程)Linux
- Linux程式排程核心實現分析Linux
- 深入分析LInux核心連結串列Linux
- Linux核心分析--系統呼叫實現程式碼分析(轉)Linux
- 《Linux核心分析》筆記與課件整理Linux筆記
- Linux核心記憶體管子系統分析Linux記憶體
- Linux核心原始碼分析之setup_arch (四)Linux原始碼
- Linux核心原始碼分析之setup_arch (二)Linux原始碼
- Linux核心原始碼分析之set_arch (一)Linux原始碼
- Linux核心原始碼分析之setup_arch (三)Linux原始碼
- Linux核心建立一個程式的過程分析Linux
- [轉帖]Linux核心原始碼分析分享專題Linux原始碼
- linux下找出核心符號資訊的4種方法Linux符號
- Linux 核心排程器原始碼分析 - 初始化Linux原始碼
- Linux4.1.15核心啟動流程簡單分析Linux
- Linux核心之 核心同步Linux
- 認識linux核心(linux核心的作用)Linux
- Linux2.6 核心的 Initrd 機制解析(4)(轉貼好文)Linux
- 《Linux核心分析》 之 計算機是如何工作的。1Linux計算機
- 4、spring核心AOPSpring
- 4、核心函式 (轉)函式
- toa 核心模組分析
- Android核心分析Android
- 【linux】驅動-4-LED晶片手冊分析Linux晶片
- rhel 4 update4 的核心版本號
- win4lin在Gentoo Linux 2.6核心下的安裝(轉)Linux
- 初識Linux核心-DIY核心模組Linux
- 《Linux核心分析》 之 作業系統是如何工作的。2Linux作業系統
- linux核心檔案IO的系統呼叫實現分析(open)Linux