linux0 11記憶體管理之page s檔案

2021-07-31 12:22:49 字數 1149 閱讀 9418

!page.s包括頁異常處理程式,(中斷14),主要分兩種情況處理.一是由於缺頁引起的

!頁異常中斷,通過呼叫do_no_page(err_code,address)來處理,二是由頁寫保護引起

!的頁異常,此時通過呼叫頁寫保護處理函式do_wp_page(err_code,address)處理哦

!其中出錯碼(err_code)由cpu自動產生並壓入堆疊,出現異常時訪問的線性位址是從控制

!暫存器cr2獲得的

!.globl _page_fault

_page_fault:

xchgl %eax,(%esp) !取出錯碼

pushl %ecx !

pushl %edx !

push %ds !

push %es !

push %fs !

movl $0x10,%edx !置核心資料段選擇符

mov %dx,%ds !

mov %dx,%es !

mov %dx,%fs !

movl %cr2,%edx !取異常頁面異常的線性位址

pushl %edx !將該線性位址和出錯碼壓入堆疊,作為呼叫函式的引數

pushl %eax !

testl $1,%eax !測試標誌p,如果不是缺頁引起的異常則跳轉

jne 1f !

call _do_no_page !呼叫缺頁處理函式

jmp 2f !

1: call _do_wp_page !呼叫寫保護處理函式

2: addl $8,%esp !丟棄壓入堆疊的兩個引數

pop %fs !

pop %es !

pop %ds !

popl %edx !

popl %ecx !

popl %eax !

iret !

linux0 11之記憶體管理

其實我覺得作業系統的記憶體管理很神秘,且不說在寫應用程式時呼叫的malloc,在寫linux驅動時get free page,get free pages,kmalloc,就相當頭疼。看完linux0.11之後小有感觸,就此記下。先說核心使用的get free page吧,其實get free pa...

linux 0 11 之訊號管理

1 概述 在 unix 系統中,訊號是一種 軟體中斷 處理機制。有許多較為複雜的程式會使用到訊號。訊號機制提供了一種處理非同步事件的方法。在核心 中通常使用乙個無符號長整數 32位 中的位元位來表示各種不同的訊號,因此最多可表示 32個不同的訊號。2 程序對訊號的三種處理或操作方式 a 忽略該訊號。...

linux0 11 記憶體結構

linux0.11,記憶體最多支援16m,其中0 1m是核心區,核心模組大約為520k,即end位址,即實際核心使用是從0 到end,之後到640k是高速緩衝區,從640k開始的區域,分別是視訊記憶體,bios區域,高速緩衝區,高速緩衝區之後是是主記憶體區域。在記憶體核心區域當中,從0開始,首先存放...