存儲(chǔ)器分頁管理機(jī)制在保護(hù)模式下,控制寄存器CR0中的最高位PG位控制分頁管理機(jī)制是否生效。如果PG=1,分頁機(jī)制生效,把線性地址轉(zhuǎn)換為物理地址。如果" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

80386內(nèi)存分頁機(jī)制

系統(tǒng) 2560 0

    80386開始支持存儲(chǔ)器分頁管理機(jī)制。分頁機(jī)制是存儲(chǔ)器管理機(jī)制的第3二部分。段管理機(jī)制實(shí)現(xiàn)虛擬地址(由段和偏移構(gòu)成的邏輯地址)到線性地址的轉(zhuǎn)換, 分頁管理機(jī)制實(shí)現(xiàn)線性地址到物理地址的轉(zhuǎn)換。如果不啟用分頁管理機(jī)制,那么線性地址就是物理地址。本文將介紹80386的存儲(chǔ)器分頁管理機(jī)制和線性地址如 何轉(zhuǎn)換為物理地址。

    <一>存儲(chǔ)器分頁管理機(jī)制

    在保護(hù)模式下,控制寄存器 CR0 中的最高位 PG 位控制分頁管理機(jī)制是否生效。如果 PG=1 ,分頁機(jī)制生效,把線性地址轉(zhuǎn)換為物理地址。 如果PG=0,分頁機(jī)制無效,線性地址就直接作為物理地址。必須注意,只有在保護(hù)方式下分頁機(jī)制才可能生效。只有在保證使PE位為1的前提下,才能夠使 PG位為1,否則將引起通用保護(hù)故障。

    分頁機(jī)制把線性地址空間和物理地址空間分別劃分為大小相同的塊。這樣的塊稱之為頁。通過在線性地址空間的頁與物理地址空間的頁之間建立 的映射,分頁機(jī)制實(shí)現(xiàn)線性地址到物理地址的轉(zhuǎn)換。線性地址空間的頁與物理地址空間的頁之間的映射可根據(jù)需要而確定,可根據(jù)需要而改變。線性地址空間的任何 一頁,可以映射為物理地址空間中的任何一頁。

    采用分頁管理機(jī)制實(shí)現(xiàn)線性地址到物理地址轉(zhuǎn)換映射的主要目的是便于實(shí)現(xiàn)虛擬存儲(chǔ)器。不象段的大小可變,頁的大小是相等并固定的。根據(jù)程序的邏輯劃分段,而根據(jù)實(shí)現(xiàn)虛擬存儲(chǔ)器的方便劃分頁。

    80386 中,頁的大小固定為 4K 字節(jié),每一頁的邊界地址必須是 4K 的倍數(shù)。因此, 4G 大小的地址空間被劃分為 1M 個(gè)頁,頁的開始地 址具有“XXXXX000H”的形式。為此,我們把頁開始地址的高20位XXXXXH稱為頁碼。線性地址空間頁的頁碼也就是頁開始邊界線性地址的高20 位;物理地址空間頁的頁碼也就是頁開始邊界物理地址的高20位。可見,頁碼左移12位就是頁的開始地址,所以頁碼規(guī)定了頁。

    由于頁的大小固定為 4K 字節(jié),且頁的邊界是 4K 的倍數(shù),所以在把 32 位線性地址轉(zhuǎn)換成 32 位物理地址的過程中,低 12 位地址保持不變。 也就是說,線性地址的低12位就是物理地址的低12位。假設(shè)分頁機(jī)制采用的轉(zhuǎn)換映射把線性地址空間的XXXXXH頁映射到物理地址空間的YYYYYH頁, 那么線性地址XXXXXxxxH被轉(zhuǎn)換為YYYYYxxxH。因此,線性地址到物理地址的轉(zhuǎn)換要解決的是線性地址空間的頁到物理地址空間的頁的映射,也就 是線性地址高20位到物理地址高20位的轉(zhuǎn)換。

    <二>線性地址到物理地址的轉(zhuǎn)換

    1.映射表結(jié)構(gòu)

    線性地址空間的頁到物理地址空間的頁之間的映射用表來描述。由于 4G 的地址空間劃分為 1M 個(gè)頁,因此,如果用一張表來描述這種映射,那 么該映射表就要有1M個(gè)表項(xiàng),若每個(gè)表項(xiàng)占用4個(gè)字節(jié),那么該映射表就要占用4M字節(jié)。為避免映射表占用如此巨大的存儲(chǔ)器資源,所以80386把頁映射表 分為兩級(jí)。

    頁映射表的第一級(jí)稱為頁目錄表,存儲(chǔ)在一個(gè) 4K 字節(jié)的物理頁中。頁目錄表共有 1K 個(gè)表項(xiàng),其中,每個(gè)表項(xiàng)為 4 字節(jié)長,包含對(duì)應(yīng)第二級(jí)表 所在物理地址空間頁的頁碼。頁映射表的第二級(jí)稱為頁表,每張頁表也安排在一個(gè)4K字節(jié)的頁中。每張頁表都有1K個(gè)表項(xiàng),每個(gè)表項(xiàng)為4字節(jié)長,包含對(duì)應(yīng)物理 地址空間頁的頁碼。由于頁目錄表和頁表均由1K個(gè)表項(xiàng)組成,所以使用10位的索引就能指定表項(xiàng),即用10位的索引值乘以4加基地址就得到了表項(xiàng)的物理地 址。

    下圖顯示了由頁目錄表和頁表構(gòu)成的頁映射表結(jié)構(gòu)。從圖中可見,控制寄存器 CR3 指定頁目錄表;頁目錄表可以指定 1K 個(gè)頁表,這些頁表可 以分散存放在任意的物理頁中,而不需要連續(xù)存放;每張頁表可以指定1K個(gè)物理地址空間的頁,這些物理地址空間的頁可以任意地分散在物理地址空間中。需要注 意的是,存儲(chǔ)頁目錄表和頁表的基地址是對(duì)齊在4K字節(jié)邊界上的。

    2.表項(xiàng)格式

    頁目錄表和頁表中的表項(xiàng)都采用如下圖所示的格式。從圖中可見,最高 20 ( 12 —位31)包含物理地址空間頁的頁碼,也就是物理地址 的高20位。低12位包含頁的屬性。下圖所示的屬性中內(nèi)容為0的位是Intel公司為80486等處理器所保留的位,在為80386編程使用到它們時(shí)必須 設(shè)置為0。在位9至位11的AVL字段供軟件使用。表項(xiàng)的最低位是存在屬性位,記作P。P位表示該表項(xiàng)是否有效。P=1表項(xiàng)有效;P=0表項(xiàng)無效,此時(shí)表 項(xiàng)中的其余各位均可供軟件使用,80386不解釋P=0的表項(xiàng)中的任何其它的位。在通過頁目錄表和頁表進(jìn)行的線性地址到物理地址的轉(zhuǎn)換過程中,無論在頁目 錄表還是在頁表中遇到無效表項(xiàng),都會(huì)引起頁故障。其它屬性位的作用在下文中介紹。

    頁目錄表或頁

    表的表項(xiàng)格式 BIT31—BIT12 BIT11—BIT9 BIT8 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 物理頁碼 AVL 0 0 D A 0 0 U/S R/W P

    3.線性地址到物理地址的轉(zhuǎn)換

    分頁管理機(jī)制通過上述頁目錄表和頁表實(shí)現(xiàn) 32 位線性地址到 32 位物理地址的轉(zhuǎn)換。控制寄存器 CR3 的高 20 位作為頁目錄表所在物理頁的 頁碼。首先把線性地址的最高10位(即位22至位31)作為頁目錄表的索引,對(duì)應(yīng)表項(xiàng)所包含的頁碼指定頁表;然后,再把線性地址的中間10位(即位12至 位21)作為所指定的頁目錄表中的頁表項(xiàng)的索引,對(duì)應(yīng)表項(xiàng)所包含的頁碼指定物理地址空間中的一頁;最后,把所指定的物理頁的頁碼作為高20位,把線性地址 的低12位不加改變地作為32位物理地址的低12位。

    為了避免在每次存儲(chǔ)器訪問時(shí)都要訪問內(nèi)存中的頁表,以便提高訪問內(nèi)存的速度, 80386 處理器的硬件把最近使用的線性—物理地址轉(zhuǎn)換函 數(shù)存儲(chǔ)在處理器內(nèi)部的頁轉(zhuǎn)換高速緩存中。在訪問存儲(chǔ)器頁表之前總是先查閱高速緩存,僅當(dāng)必須的轉(zhuǎn)換不在高速緩存中時(shí),才訪問存儲(chǔ)器中的兩級(jí)頁表。頁轉(zhuǎn)換高 速緩存也稱為頁轉(zhuǎn)換查找緩存,記為TLB。

    在分頁機(jī)制轉(zhuǎn)換高速緩存中的數(shù)據(jù)與頁表中數(shù)據(jù)的相關(guān)性,不是由 80386 處理器進(jìn)行維護(hù)的,而必須由操作系統(tǒng)軟件保存,也就是說,處理 器不知道軟件什么時(shí)候會(huì)修改頁表,在一個(gè)合理的系統(tǒng)中,頁表只能由操作系統(tǒng)修改,操作系統(tǒng)可以直接地在軟件修改頁表后通過刷新高速緩存來保證相關(guān)性。高速 緩存的刷新通過裝入處理器控制寄存器CR3完成,實(shí)際過程可能用如下的兩條指令實(shí)現(xiàn):

    mov eax,cr3

    mov cr3,eax

    一個(gè)重要的修改頁表項(xiàng)的特殊情況不需要對(duì)頁轉(zhuǎn)換高速緩存刷新,這種情況是指修改不存在表項(xiàng)的任一部分,即使 P 位本身從 P=0 改變?yōu)?P=1時(shí)也一樣,因?yàn)闊o效的表項(xiàng)不會(huì)存入高速緩存。因此,當(dāng)無效的表項(xiàng)被改變時(shí),不需要刷新高速緩存。這表明在從磁盤上讀入一頁使其存在時(shí),不必刷新高速 緩存。

    在一個(gè)多處理器系統(tǒng)中,必須特別注意是否在一個(gè)處理器中執(zhí)行的程序,會(huì)改變可能由另外的處理器同時(shí)訪問的頁表。在 80386 處理器中, 每當(dāng)要更新頁表項(xiàng)并設(shè)置D位和A位時(shí),通過使用不可分的讀/修改/寫周期支持多處理器的配置。對(duì)于頁表項(xiàng)的軟件更新需要借助于使用LOCK前綴,從而保證 修改頁表的指令工作在不可分的讀/修改/寫周期中。在改變一個(gè)可能由另外的處理器使用的頁表之前,最好使用一條加鎖的AND指令在一個(gè)不可分的操作中將P 位清除為0,然后,該表項(xiàng)可根據(jù)要求進(jìn)行修改,并隨后把P位置成1而使表項(xiàng)成為可用。當(dāng)修改頁表項(xiàng)時(shí)必須及時(shí)通知(通常使用中斷方式)系統(tǒng)中該表項(xiàng)已被高 速緩存的所有處理器刷新各自的頁轉(zhuǎn)換高速緩存,以撤消該表項(xiàng)的舊拷貝。在表項(xiàng)的舊拷貝被刷新之前,各處理器仍可繼續(xù)訪問舊的頁,并可以設(shè)置正被修改的表項(xiàng) 的D位。如果這樣做引起表項(xiàng)修改失敗,則分頁機(jī)制高速緩存最好在標(biāo)記為不存在之后,并在對(duì)表項(xiàng)進(jìn)行另外的修改之前進(jìn)行刷新。

    4.不存在的頁表

    采用上述頁映射表結(jié)構(gòu),存儲(chǔ)全部 1K 張頁表需要 4M 字節(jié),此外還需要 4K 字節(jié)用于存儲(chǔ)頁目錄表。這樣的兩級(jí)頁映射表似乎反而比單一的整 張頁映射表多占用4K字節(jié)。其實(shí)不然,事實(shí)上不需要在內(nèi)存中存儲(chǔ)完整的兩級(jí)頁映射表。兩級(jí)頁映射表結(jié)構(gòu)中對(duì)于線性地址空間中不存在的或未使用的部分不必分 配頁表。除必須給頁目錄表分配物理頁外,僅當(dāng)在需要時(shí)才給頁表分配物理頁,于是頁映射表的大小就對(duì)應(yīng)于實(shí)際使用的線性地址空間大小。因?yàn)槿魏我粋€(gè)實(shí)際運(yùn)行 的程序使用的線性地址空間都遠(yuǎn)小于4G字節(jié),所以用于分配給頁表的物理頁也遠(yuǎn)小于4M字節(jié)。

    頁目錄表項(xiàng)中的存在位 P 表明對(duì)應(yīng)頁表是否有效。如果 P=1 ,表明對(duì)應(yīng)頁表有效,可利用它進(jìn)行地址轉(zhuǎn)換;如果 P=0 ,表明對(duì)應(yīng)頁表無效。 如果試圖通過無效的頁表進(jìn)行線性地址到物理地址的轉(zhuǎn)換,那么將引起頁故障。因此,頁目錄表項(xiàng)中的屬性位P使得操作系統(tǒng)只需給覆蓋實(shí)際使用的線性地址范圍的 頁表分配物理頁。

    頁目錄表項(xiàng)中的屬性位 P 頁可用于把頁表存儲(chǔ)在虛擬存儲(chǔ)器中。當(dāng)發(fā)生由于所需頁表無效而引起的頁故障時(shí),頁故障處理程序再申請(qǐng)物理頁,從 磁盤上把對(duì)應(yīng)的頁表讀入,并把對(duì)應(yīng)頁目錄表項(xiàng)中的P位置1。換言之,可以當(dāng)需要時(shí)才為所要的頁表分配物理頁。這樣頁表占用的物理頁數(shù)量可降到最小。

    5.頁的共享

    由上述頁映射表結(jié)構(gòu)可見,分頁機(jī)制沒有全局頁和局部頁的規(guī)定。每一個(gè)任務(wù)可使用自己的頁映射表獨(dú)立地實(shí)現(xiàn)線性地址到物理地址的轉(zhuǎn)換。但是,如果使每一個(gè)任務(wù)所用的頁映射表具有部分相同的映射,那么也就可以實(shí)現(xiàn)部分頁的共享。

    常用的實(shí)現(xiàn)頁共享的方法是線性地址空間的共享,也就是不同任務(wù)的部分相同的線性地址空間的映射信息相同,具體表現(xiàn)為部分頁表相同或頁表 內(nèi)的部分表項(xiàng)的頁碼相同。例如,如果任務(wù)A和任務(wù)B分別使用的頁目錄表A和頁目錄表B內(nèi)的第0項(xiàng)中的頁碼相同,也就是頁表0相同,那么任務(wù)A和任務(wù)B的 00000000H至003FFFFFH線性地址空間就映射到相同的物理頁。再如,任務(wù)A和任務(wù)B使用的頁表0不同,但這兩張頁表內(nèi)第0至第0FFH項(xiàng)的 頁碼對(duì)應(yīng)相同,那么任務(wù)A和任務(wù)B的00000000H至000FFFFFH線性地址空間就映射到相同的物理頁。

    需要注意的是,共享的頁表最好由兩個(gè)頁目錄中同樣的目錄項(xiàng)所指定。這一點(diǎn)很重要,因?yàn)樗WC了在兩個(gè)任務(wù)中同樣的線性地址范圍將映射到該全局區(qū)域。

    <三>頁級(jí)保護(hù)和虛擬存儲(chǔ)器支持

    1.頁級(jí)保護(hù)

    80386 不僅提供段級(jí)保護(hù),也提供頁級(jí)保護(hù)。分頁機(jī)制只區(qū)分兩種特權(quán)級(jí)。特權(quán)級(jí) 0 1 2 統(tǒng)稱為系統(tǒng)特權(quán)級(jí),特權(quán)級(jí) 3 稱為用戶特權(quán)級(jí)。在上圖所示頁目錄表和頁表的表項(xiàng)中的保護(hù)屬性位 R/W U/S 就是用于對(duì)頁進(jìn)行保護(hù)。

    表項(xiàng)的位 1 是讀寫屬性位,記作 R/W R/W 位指示該表項(xiàng)所指定的頁是否可讀、寫或執(zhí)行。若 R/W=1 ,對(duì)表項(xiàng)所指定的頁可進(jìn)行讀、寫 或執(zhí)行;若R/W=0,對(duì)表項(xiàng)所指定的頁可讀或執(zhí)行,但不能對(duì)該指定的頁寫入。但是,R/W位對(duì)頁的寫保護(hù)只在處理器處于用戶特權(quán)級(jí)時(shí)發(fā)揮作用;當(dāng)處理器 處于系統(tǒng)特權(quán)級(jí)時(shí),R/W位被忽略,即總可以讀、寫或執(zhí)行。

    表項(xiàng)的位 2 是用戶 / 系統(tǒng)屬性位,記作 U/S U/S 位指示該表項(xiàng)所指定的頁是否是用戶級(jí)頁。若 U/S=1 ,表項(xiàng)所指定的頁是用戶級(jí)頁, 可由任何特權(quán)級(jí)下執(zhí)行的程序訪問;如果U/S=0,表項(xiàng)所指定的頁是系統(tǒng)級(jí)頁,只能由系統(tǒng)特權(quán)級(jí)下執(zhí)行的程序訪問。下表列出了上述屬性位R/W和U/S所 確定的頁級(jí)保護(hù)下,用戶級(jí)程序和系統(tǒng)級(jí)程序分別具有的對(duì)用戶級(jí)頁和系統(tǒng)級(jí)頁進(jìn)行操作的權(quán)限。

    頁級(jí)

    保護(hù)

    屬性 U/S R/W 用戶級(jí)訪問權(quán)限系統(tǒng)級(jí)訪問權(quán)限 0 0 無讀/寫/執(zhí)行 0 1 無讀/寫/執(zhí)行 1 0 讀/執(zhí)行讀/寫/執(zhí)行 1 1 讀/寫/執(zhí)行讀/寫/執(zhí)行

    由上表可見,用戶級(jí)頁可以規(guī)定為只允許讀 / 執(zhí)行或規(guī)定為讀 / / 執(zhí)行。系統(tǒng)級(jí)頁對(duì)于系統(tǒng)級(jí)程序總是可讀 / / 執(zhí)行,而對(duì)用戶級(jí)程序總是 不可訪問的。于分段機(jī)制一樣,外層用戶級(jí)執(zhí)行的程序只能訪問用戶級(jí)的頁,而內(nèi)層系統(tǒng)級(jí)執(zhí)行的程序,既可訪問系統(tǒng)級(jí)頁,也可訪問用戶級(jí)頁。與分段機(jī)制不同的 是,在內(nèi)層系統(tǒng)級(jí)執(zhí)行的程序,對(duì)任何頁都有讀/寫/執(zhí)行訪問權(quán),即使規(guī)定為只允許讀/執(zhí)行的用戶頁,內(nèi)層系統(tǒng)級(jí)程序也對(duì)該頁有寫訪問權(quán)。

    頁目錄表項(xiàng)中的保護(hù)屬性位 R/W U/S 對(duì)由該表項(xiàng)指定頁表所指定的全部 1K 各頁起到保護(hù)作用。所以,對(duì)頁訪問時(shí)引用的保護(hù)屬性位 R /W U/S 的值是組合計(jì)算頁目錄表項(xiàng)和頁表項(xiàng)中的保護(hù)屬性位的值所得。下表列出了組合計(jì)算前后的保護(hù)屬性位的值,組合計(jì)算是“與”操作。

    組合頁的

    保護(hù)>屬性目錄表項(xiàng)U/S 頁表項(xiàng)U/S 組合U/S 目錄表項(xiàng)R/W 頁表項(xiàng)R/W 組合R/W 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 1 1 1 1

    正如在 80386 地址轉(zhuǎn)換機(jī)制中分頁機(jī)制在分段機(jī)制之后起作用一樣,由分頁機(jī)制支持的頁級(jí)保護(hù)也在由分段機(jī)制支持的段級(jí)保護(hù)之后起作 用。先測(cè)試有關(guān)的段級(jí)保護(hù),如果啟用分頁機(jī)制,那么在檢查通過后,再測(cè)試頁級(jí)保護(hù)。如果段的類型為讀/寫,而頁規(guī)定為只允許讀/執(zhí)行,那么不允許寫;如果 段的類型為只讀/執(zhí)行,那么不論頁保護(hù)如何,也不允許寫。

    頁級(jí)保護(hù)的檢查是在線性地址轉(zhuǎn)換為物理地址的過程中進(jìn)行的,如果違反頁保護(hù)屬性的規(guī)定,對(duì)頁進(jìn)行訪問 ( / / 執(zhí)行 ) ,那么將引起頁異常。

    2.對(duì)虛擬存儲(chǔ)器的支持

    頁表項(xiàng)中的 P 位是支持采用分頁機(jī)制虛擬存儲(chǔ)器的關(guān)鍵。 P=1 ,表示表項(xiàng)指定的頁存在于物理存儲(chǔ)器中,并且表項(xiàng)的高 20 位是物理頁的頁 碼;P=0,表示該線性地址空間中的頁所對(duì)應(yīng)的物理地址空中的頁不在物理存儲(chǔ)器中。如果程序訪問不存在的頁,會(huì)引起頁異常,這樣操作系統(tǒng)可把該不存在的頁 從磁盤上讀入,把所在物理頁的頁碼填入對(duì)應(yīng)表項(xiàng)并把表項(xiàng)中的P位置為1,然后使引起異常的程序恢復(fù)運(yùn)行。

    此外,表項(xiàng)中的訪問位 A 和寫標(biāo)志位 D 也用于支持有效地實(shí)現(xiàn)虛擬存儲(chǔ)器。

    表項(xiàng)的位 5 是訪問屬性位,記作 A 。在為了訪問某存儲(chǔ)單元而進(jìn)行線性地址到物理地址的轉(zhuǎn)換過程中,處理器總是把頁目錄表內(nèi)的對(duì)應(yīng)表項(xiàng)和其 所指定頁表內(nèi)的對(duì)應(yīng)表項(xiàng)中的A位置1,除非頁表或頁不存在,或者訪問違反保護(hù)屬性規(guī)定。所以,A=1表示已訪問過對(duì)應(yīng)的物理頁。處理器永不清除A位。通過 周期性地檢測(cè)及清除A位,操作系統(tǒng)就可確定哪些頁在最近一段時(shí)間未被訪問過。當(dāng)存儲(chǔ)器資源緊缺時(shí),這些最近未被訪問的頁很可能就被選擇出來,將它們從內(nèi)存 換出到磁盤上去。

    表項(xiàng)的位 6 是寫標(biāo)志位,記作 D 。在為了訪問某存儲(chǔ)單元而進(jìn)行線性地址到物理地址的轉(zhuǎn)換過程中,如果是寫訪問并且可以寫訪問,處理器就把 頁表內(nèi)對(duì)應(yīng)表項(xiàng)中的D位置1,但并不把頁目錄表內(nèi)對(duì)應(yīng)表項(xiàng)中的D置1。當(dāng)某頁從磁盤上讀入內(nèi)存時(shí),頁表中對(duì)應(yīng)對(duì)應(yīng)表項(xiàng)的D位被清0。所以,D=1表示已寫 過對(duì)應(yīng)的物理頁。當(dāng)某頁需要從內(nèi)存換出到磁盤上時(shí),如果該頁的D位為1,那么必須進(jìn)行寫操作(把內(nèi)存中的頁寫入磁盤時(shí),處理器并不清除對(duì)應(yīng)頁表項(xiàng)的D 位)。但是,如果要寫到磁盤上的頁的D位為0,那么不需要實(shí)際的磁盤寫操作,而只要簡單地放棄內(nèi)存中該頁即可。因?yàn)閮?nèi)存中的頁與磁盤中的頁具有完全相同的 內(nèi)容。

    <四>頁異常

    啟用分頁機(jī)制后,線性地址不再直接等于物理地址,線性地址要經(jīng)過分頁機(jī)制轉(zhuǎn)換才成為物理地址。在轉(zhuǎn)換過程中,如果出現(xiàn)下列情況之一就會(huì)引起頁異常:

    (1) 涉及的頁目錄表內(nèi)的表項(xiàng)或頁表內(nèi)的表項(xiàng)中的 P=0 ,即涉及到頁不在內(nèi)存;

    (2) 發(fā)現(xiàn)試圖違反頁保護(hù)屬性的規(guī)定而對(duì)頁進(jìn)行訪問。

    報(bào)告頁異常的中斷向量號(hào)是 14(0EH) 。頁異常屬于故障類異常。在進(jìn)入故障處理程序時(shí),保存的指令指針 CS EIP 指向發(fā)生故障的指令。一旦引起頁故障的原因被排除后,即可從頁故障處理程序通過一條 IRET 指令,直接地重新執(zhí)行產(chǎn)生故障的指令。

    當(dāng)頁故障發(fā)生時(shí),處理器把引起頁故障的線性地址裝入 CR2 。頁故障處理程序可以利用該線性地址確定對(duì)應(yīng)的頁目錄項(xiàng)和頁表項(xiàng)。

    頁故障還在堆棧中提供一個(gè)出錯(cuò)碼,出錯(cuò)碼的格式如下圖所示。其中,U位表示引起故障程序的特權(quán)級(jí),U=1表示用戶特權(quán)級(jí)(特權(quán)級(jí)3),U=0表 示系統(tǒng)特權(quán)級(jí)(特權(quán)級(jí)0、1或2);W位表示訪問類型,W=0表示讀/執(zhí)行,W=1表示寫;P位表示異常類型,P=0表示頁不存在故障,P=1表示保護(hù)故 障。頁故障的響應(yīng)處理模式同其它故障一樣。

    出錯(cuò)碼

    的格式 BIT15—BIT3 BIT2 BIT1 BIT0 未使用 U W P

    源文檔 < http://hi.baidu.com/lovetolinux/blog/item/4b572489ceae7398a4c272d6.html >

80386內(nèi)存分頁機(jī)制


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 成人亚洲欧美综合 | 美国成人a免费毛片 | 日韩免费中文字幕 | 欧美精品免费在线 | 亚洲国产精品网站久久 | 91精品论坛| 久久91这里精品国产2020 | 精品一久久香蕉国产线看播放 | 天天干天天射综合网 | 国产精品久久久香蕉 | 天天看片天天爽 | 久久久综合九色合综 | 麻豆狠色伊人亚洲综合网站 | 日本aⅴ永久免费网站www | jizzjizzjizz中国 | 91中文字幕视频 | 天天躁日日躁aaaaxxxx | 欧美一区二区在线观看 | 亚洲国产九九精品一区二区 | 99这里只有精品66视频 | 日本一级大毛片a一 | 亚洲国产最新在线一区二区 | 波多野吉衣一区二区三区在线观看 | 国产免费专区 | 国产伦精品一区二区三区四区 | 五月婷婷欧美 | 97久久久亚洲综合久久88 | 久久国产精品自线拍免费 | 全免费午夜一级毛片一级毛 | 久久国产亚洲偷自 | 成年性午夜免费视频网站不卡 | 美女视频黄的免费视频网页 | 欧美日韩视频一区二区 | 国产成人精品s8p视频 | 欧美在线一级视频 | a欧美在线 | 中文字幕视频不卡 | 天天爽夜夜爽人人爽 | 曰本性l交片视频视频 | 国产a毛片清高视频 | 综合伊人久久在一二三区 |