內存管理之7:情景分析之越界訪問

date: 2014-09-24 19:09函數

注:本文展現的代碼來自2.4.0版本的內核,入口函數do_page_fault定義在<arch/mm/fault.c>中。指針

整體處理流程:blog

越界訪問

備註:進程

  1. 讀取CR2寄存器獲取出錯地址? CPU在發出頁面異常時,會將對應的地址存到CR2寄存器中,在頁面異常的處理程序中就能夠從CR2中讀取到出錯地址。由於要讀取CR2寄存器,C語言沒法作到,只能經過嵌入式彙編實現。it

  2. 當前進程的用戶空間還沒有創建? 前面講過,每一個進程都對應一個mm_struct結構,該結構是對進程整個用戶空間的抽象。在每一個進程的進程控制塊即task_struct結構體中,有一個指針(mm)指向該進程的mm_struct結構。若是該指針爲NULL,即表示當前進程的用戶空間還沒有創建(在後面講進程調度與切換時,咱們還會看到另外一個狀況:內核進程的mm指針也爲NULL)。date

相關文章
相關標籤/搜索