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

黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

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

系統(tǒng) 3116 0

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

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

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

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

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

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

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

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

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

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

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

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

    2.表項(xiàng)格式

    頁(yè)目錄表和頁(yè)表中的表項(xiàng)都采用如下圖所示的格式。從圖中可見,最高 20 ( 12 —位31)包含物理地址空間頁(yè)的頁(yè)碼,也就是物理地址 的高20位。低12位包含頁(yè)的屬性。下圖所示的屬性中內(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)無(wú)效,此時(shí)表 項(xiàng)中的其余各位均可供軟件使用,80386不解釋P=0的表項(xiàng)中的任何其它的位。在通過(guò)頁(yè)目錄表和頁(yè)表進(jìn)行的線性地址到物理地址的轉(zhuǎn)換過(guò)程中,無(wú)論在頁(yè)目 錄表還是在頁(yè)表中遇到無(wú)效表項(xiàng),都會(huì)引起頁(yè)故障。其它屬性位的作用在下文中介紹。

    頁(yè)目錄表或頁(yè)

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

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

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

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

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

    mov eax,cr3

    mov cr3,eax

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

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

    4.不存在的頁(yè)表

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

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

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

    5.頁(yè)的共享

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

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

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

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

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

    80386 不僅提供段級(jí)保護(hù),也提供頁(yè)級(jí)保護(hù)。分頁(yè)機(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í)。在上圖所示頁(yè)目錄表和頁(yè)表的表項(xiàng)中的保護(hù)屬性位 R/W U/S 就是用于對(duì)頁(yè)進(jìn)行保護(hù)。

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

    頁(yè)級(jí)

    保護(hù)

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

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

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

    組合頁(yè)的

    保護(hù)>屬性目錄表項(xiàng)U/S 頁(yè)表項(xiàng)U/S 組合U/S 目錄表項(xiàng)R/W 頁(yè)表項(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ī)制中分頁(yè)機(jī)制在分段機(jī)制之后起作用一樣,由分頁(yè)機(jī)制支持的頁(yè)級(jí)保護(hù)也在由分段機(jī)制支持的段級(jí)保護(hù)之后起作 用。先測(cè)試有關(guān)的段級(jí)保護(hù),如果啟用分頁(yè)機(jī)制,那么在檢查通過(guò)后,再測(cè)試頁(yè)級(jí)保護(hù)。如果段的類型為讀/寫,而頁(yè)規(guī)定為只允許讀/執(zhí)行,那么不允許寫;如果 段的類型為只讀/執(zhí)行,那么不論頁(yè)保護(hù)如何,也不允許寫。

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

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

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

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

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

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

    <四>頁(yè)異常

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

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

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

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

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

    頁(yè)故障還在堆棧中提供一個(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èn)類型,W=0表示讀/執(zhí)行,W=1表示寫;P位表示異常類型,P=0表示頁(yè)不存在故障,P=1表示保護(hù)故 障。頁(yè)故障的響應(yīng)處理模式同其它故障一樣。

    出錯(cuò)碼

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

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

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


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

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

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

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

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論