自考《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)》第7章精講

字號(hào):

第七章 存儲(chǔ)體系
    本章重點(diǎn)是頁(yè)式虛擬存儲(chǔ)器映象及地址變換過程;LRU,F(xiàn)IFO的替換算法;LRU的堆棧分析過程;Cache組相聯(lián)地址映象和LRU塊替換;虛存,Cache的性能分析,要求達(dá)到綜合應(yīng)用的水平。本章是重點(diǎn)章。要求掌握的基本概念有:LRU,F(xiàn)IFO ,全相聯(lián)、直接映象,組相聯(lián),快表、命中率,地址變換,頁(yè)式,段式,段頁(yè)式管理,虛擬存儲(chǔ)器,高速緩存等等。
    一、訪存的局部性原理(識(shí)記)
    計(jì)算機(jī)對(duì)存儲(chǔ)器的要求是高速度、大容量、低價(jià)格。
    從大量的統(tǒng)計(jì)中得到的一個(gè)規(guī)律是,程序中對(duì)于存儲(chǔ)空間90%的訪問局限于存儲(chǔ)空間的10%的區(qū)域中,而另外10%的訪問則分布在存儲(chǔ)空間的其余90%的區(qū)域中。這就是通常說的局部性原理。訪存的局部性規(guī)律包括兩個(gè)方面:
    1、時(shí)間局部性:如果一個(gè)存儲(chǔ)項(xiàng)被訪問,則可能該項(xiàng)會(huì)很快被再次訪問。
    2、空間局部性:如果一個(gè)存儲(chǔ)項(xiàng)被訪問,則該項(xiàng)及其鄰近的項(xiàng)也可能很快被訪問。
    人們?yōu)榱私鉀Q存儲(chǔ)器容量和速度的矛盾,應(yīng)用了訪問局部性原理,把存儲(chǔ)體系設(shè)計(jì)成為層次化的結(jié)構(gòu)以滿足使用要求。在這個(gè)層次化存儲(chǔ)系統(tǒng)中,一般由寄存器、高速緩存(Cache)、主存(內(nèi)存)、外存(硬盤等)組成。其中寄存器是高層次的存儲(chǔ)部件,容量小,速度快。寄存器對(duì)程序員是不透明的,對(duì)它的訪問需按寄存器名訪問而不是按地址。
    二、存儲(chǔ)體系構(gòu)成的基本原理(簡(jiǎn)單應(yīng)用)
    由于存儲(chǔ)體系采用了分層的結(jié)構(gòu),因此存儲(chǔ)體系中各層次之間的數(shù)據(jù)訪問如何的管理就顯得相當(dāng)重要。一般都把管理功能分布在各個(gè)層次上,每個(gè)層次的存儲(chǔ)管理控制器控制這一層和與之相關(guān)一層的數(shù)據(jù)訪問。層間傳遞數(shù)據(jù)的單位稱為塊或頁(yè)。
    命中率指命中的訪問次數(shù)和總訪問次數(shù)之比、失效率是失效的訪問次數(shù)和總訪問次數(shù)之比。命中時(shí)間包括判斷是否命中所需時(shí)間和對(duì)上層存儲(chǔ)器訪存所需時(shí)間,失效時(shí)間則包括對(duì)下層存儲(chǔ)器的訪問時(shí)間和將下層存儲(chǔ)器中數(shù)據(jù)調(diào)入上層存儲(chǔ)器所需時(shí)間(傳輸時(shí)間)
    存儲(chǔ)器設(shè)計(jì)的目標(biāo)是降低平均訪問時(shí)間而不是單單提高命中率。也就是說層次化存儲(chǔ)器的速度性能指標(biāo)是訪存的平均時(shí)間。另外還有帶寬(頻寬)、存儲(chǔ)周期等指標(biāo)。
    平均訪問時(shí)間=命中時(shí)間+失效時(shí)間×失效率
    層次化存儲(chǔ)體系必須解決的三個(gè)問題:
    1.定位問題:數(shù)據(jù)塊在較高層存儲(chǔ)器中存放在哪個(gè)位置?怎樣確定并且找到該塊?這是塊的標(biāo)識(shí)和尋址問題。一般用查表法來映象塊或頁(yè)的定位、標(biāo)識(shí)和尋址。
    2.替換問題:不命中時(shí),要從下層調(diào)入上層數(shù)據(jù)塊,若上層滿,則此時(shí)如何將上層中的數(shù)據(jù)置換出去?什么方法好。這就是替換策略的問題。
    3.更新問題:在需要寫訪問時(shí),何時(shí)將上層中得到的結(jié)果寫到下層存儲(chǔ)器中? 因?yàn)樯蠈訑?shù)據(jù)在經(jīng)過運(yùn)算后比下層的數(shù)據(jù)新,則這種寫的方式就是為了解決上下層數(shù)據(jù)一致性的問題。
    本章的內(nèi)容就是圍繞著這三個(gè)問題的解決而展開的。解決好這三個(gè)問題,層次化存儲(chǔ)體系管理的主要問題也就解決了。
    三、高速緩沖存儲(chǔ)器(Cache)(綜合應(yīng)用)
    這一節(jié)的內(nèi)容就是講述關(guān)于Cache高速緩存如何解決上述三個(gè)問題展開的內(nèi)容,其他各層的管理基本上與它的解決辦法類似。
    高速緩存是位于CPU和主存之間的高層存儲(chǔ)子系統(tǒng)。采用高速緩存的主要目的是提高存儲(chǔ)器的平均訪問速度,從而使存儲(chǔ)器的速度也CPU的速度相匹配。
    1、Cache的基本工作原理和結(jié)構(gòu)
    Cache通常由兩部分組成,塊表和快速存儲(chǔ)器。Cache的基本結(jié)構(gòu)可見教材圖7.4,其工作原理是:處理機(jī)按主存地址訪問存儲(chǔ)器,存儲(chǔ)器地址的高段通過主存-Cache地址映象機(jī)構(gòu)借助查表判定該地址的存儲(chǔ)單元是否在Cache中,如果在,則Cache命中,按Cache地址訪問Cache.否則,Cache不命中,則需要訪問主存,并從主存中調(diào)入相應(yīng)數(shù)據(jù)塊到Cache中,若Cache中已寫滿,則要按某種算法將Cache中的某一塊替換出去,并修改有關(guān)的地址映象關(guān)系。
    從這個(gè)工作原理我們可以看出,它已經(jīng)涉及到了兩個(gè)問題。首先是定位、然后是替換的問題。
    Cache的存在對(duì)程序員是透明的。其地址變換和數(shù)據(jù)塊的替換算法均由硬件實(shí)現(xiàn)。通常Cache被集成到CPU內(nèi)以提高訪問速度。
    2.下面就要展開來講述Cache中是如何進(jìn)行地址映象和變換的。(綜合應(yīng)用)
    因?yàn)樘幚頇C(jī)訪問都是按主存地址訪問的,而Cache的空間遠(yuǎn)小于主存,如何知道這的訪問內(nèi)容是不是在Cache中,在Cache中的哪一個(gè)位置呢? 這就需要地址映象,即把主存中的地址映射成Cache中的地址。讓Cache中一個(gè)存儲(chǔ)塊(空間)與主存中若干塊相對(duì)應(yīng),如此,訪問一個(gè)主存地址時(shí),就可以對(duì)應(yīng)地知道在cache中哪一個(gè)地址了。地址映象的方法有三種:直接映象、全相聯(lián)映象和組相聯(lián)映象。
    直接映象就是將主存地址映象到Cache中的一個(gè)指定地址。任何時(shí)候,主存中存儲(chǔ)單元的數(shù)據(jù)只能調(diào)入到Cache中的一個(gè)位置,這是固定的,若這個(gè)位置已有數(shù)據(jù),則產(chǎn)生沖突,原來的塊將無條件地被替換出去。
    全相聯(lián)映象就是任何主存地址可映象到任何Cache地址的方式。在這種方式下,主存中存儲(chǔ)單元的數(shù)據(jù)可調(diào)入到Cache中的任意位置。只有在Cache中的塊全部裝滿后才會(huì)出現(xiàn)塊沖突。
    組相聯(lián)映象指的是將存儲(chǔ)空間的頁(yè)面分成若干組,各組之間的直接映象,而組內(nèi)各塊之間則是全相聯(lián)映象。
    下面將三種地址映象方式進(jìn)行對(duì)比。
     直接映象 全相聯(lián)映象 組相聯(lián)映象
    過程 (1)主存地址分成區(qū)號(hào)、塊號(hào)、塊內(nèi)地址
    (2)在主存地址中截取與Cache地址對(duì)就部分作為Cache地址
    (3)以塊號(hào)為地址訪問目錄表讀出區(qū)號(hào)與主存地址中區(qū)號(hào)比較
    (4)若相等,命中
    (5)若不相等,塊失效,停止Cache訪問。訪主存,并調(diào)塊 (1)主存地址分成主存塊號(hào)和塊內(nèi)地址
    (2)用主存塊號(hào)同目錄表相聯(lián)比較
    (3)若相同,則取出Cache塊號(hào),Cache塊號(hào)與塊內(nèi)地址拼接成Cache地址,訪問Cache
    (4)若無相同的,則產(chǎn)生缺塊、調(diào)塊 (1)主存地址分區(qū)號(hào)、組號(hào)、塊號(hào)、塊內(nèi)地址
    (2)用組號(hào)選出一組
    (3)對(duì)該組用區(qū)號(hào)+塊號(hào)全相聯(lián)比較
    (4)或找不到,則塊失效
    (5)若找到一樣,則將讀出的Cache塊號(hào)與組號(hào)和塊內(nèi)地址拼接形成Cache地址。
    目錄表 長(zhǎng):Cache大小
    寬:主存地址位-Cache地址位 長(zhǎng):Cache 大小
    寬:(主存塊號(hào)+Cache塊號(hào))位
    主存塊號(hào)位參與比較 長(zhǎng):2ncbCache大小
    寬:(區(qū)號(hào)+2塊號(hào))位
    (區(qū)號(hào)+塊號(hào))位參與與比較
    優(yōu)點(diǎn) (1)硬件省,目錄表小,成本低
    (2)訪問Cache與訪問區(qū)號(hào)表同時(shí)進(jìn)行 (1)塊沖突低
    (2)Cache空間利用率高 集中全相聯(lián)和直接映象的優(yōu)點(diǎn)彌補(bǔ)他們的缺點(diǎn)
    缺點(diǎn) (1)塊沖突概率很大
    (2)Cache空間利用率很低 (1)映象表太長(zhǎng)
    (2)查表速度慢 塊沖突仍大于全相聯(lián)
    利用率低于全相聯(lián)
    目錄表大于直接方式
    3.替換策略及更新主存策略
    Cache從主存讀取數(shù)據(jù)塊時(shí)有三種方式:需要時(shí)讀取、預(yù)讀取和選擇讀取。這三種方式各有優(yōu)缺點(diǎn),請(qǐng)注意比較。課本中提到"共享的數(shù)據(jù)放在主存中比放在Cache中合適,特別是在多處理機(jī)系統(tǒng)中",因?yàn)楣蚕淼臄?shù)據(jù)經(jīng)常由別的處理過程改寫,若放到cache中,則經(jīng)常涉及到數(shù)據(jù)的一致性問題,因此放在主存中可保證其單一性,不致發(fā)生數(shù)據(jù)一致性錯(cuò)誤的問題。
    在層次式的存儲(chǔ)體系中,訪問某層存儲(chǔ)器的內(nèi)容時(shí)將從該層取數(shù)據(jù)塊層層復(fù)制到上層存儲(chǔ)器中,而上層的存儲(chǔ)器容量總比下層的少,則在復(fù)制到上層時(shí),就會(huì)發(fā)生替換掉原有數(shù)據(jù)塊的問題。若被替換的塊中有新寫入的數(shù)據(jù)(如計(jì)算結(jié)果)則這些數(shù)據(jù)還得先寫到下層存儲(chǔ)器的相應(yīng)塊中,這就涉及更新策略。
    在直接映象方式下,不存在塊替換的算法,因?yàn)槊恳粔K的位置映象是固定的,需要哪一塊數(shù)據(jù)就可直接確定地將該塊數(shù)據(jù)調(diào)入上層確定位置。而其他兩種映象就存在替換策略的問題,就是要選擇替換到哪一個(gè)Cache塊。即替換算法。
    選擇替換算法的依據(jù)是存儲(chǔ)器總體性能,主要是上層存儲(chǔ)器的訪問命中率。下面將常用的幾種替換算法作一比較:
     思想 優(yōu)點(diǎn) 缺點(diǎn)
    隨機(jī)算法RAND 用軟的或硬的隨機(jī)數(shù)產(chǎn)生器產(chǎn)生上層中要被替換的頁(yè)號(hào) 簡(jiǎn)單、易于實(shí)現(xiàn) 沒有利用上層存儲(chǔ)器使用的"歷史信息",沒有反映等程序局部性,命中率低。
    先進(jìn)先出FIFO 選擇早裝入上層的頁(yè)作為被替換的頁(yè) 實(shí)現(xiàn)方便,利用了主存歷史的信息 不能正確反映程序局部性原理,命中率不高,可能出現(xiàn)一種異?,F(xiàn)象。
    近期少使用法LRU 選擇近期少訪問的頁(yè)作為被替換的頁(yè) 比較正確反映程序局部性,利用訪存的歷史信息,命中率較高 實(shí)現(xiàn)較復(fù)雜
    優(yōu)化替換算法OPT 將未來近期不用的頁(yè)換出去 命中率高,可作為衡量其他替換算法的標(biāo)準(zhǔn) 不現(xiàn)實(shí),只是一種理想算法
    為了保持Cache中數(shù)據(jù)和主存中數(shù)據(jù)的一致性,就要對(duì)Cache和主存的數(shù)據(jù)進(jìn)寫操作,一般的更新策略有兩種:
    更新策略 思想 優(yōu)點(diǎn) 缺點(diǎn)
    寫回法 是指在CPU執(zhí)行寫操作時(shí),信息只寫入Cache中,僅當(dāng)需要替換時(shí),才將改寫過的Cache塊先送回主存(寫回),然后再調(diào)塊 有利于省去許多將中間結(jié)果寫入主存的無謂開銷。 需設(shè)修改位增加Cache的復(fù)雜性
    全寫法(寫直達(dá)法) 在寫操作時(shí),將數(shù)據(jù)同時(shí)寫入Cache和主存 實(shí)現(xiàn)開銷小、簡(jiǎn)單 為了寫中間結(jié)果浪費(fèi)了不少時(shí)間
    另外,當(dāng)寫不命中時(shí)(也就是寫Cache塊時(shí),這塊早被人替換出去而在Cache中找不到時(shí))是不是要把這塊再取回Cache中,有兩個(gè)解決方法:一是不按寫分配法,就是直接寫到主存里,不再把該地址對(duì)應(yīng)的塊調(diào)回Cache中。二是按寫分配法,就是寫到主存,而且把這一塊從主存中調(diào)入到Cache.一般寫回法用按寫分配法,全寫法則采用不按寫分配。
    4.數(shù)據(jù)Cache、指令Cache和一體化Cache
    將Cache分別用來存放數(shù)據(jù)和指令,則可分成上面兩種Cache,一體化Cache則既存放數(shù)據(jù)又存放指令。一般來說,分離后的Cache命中率有所提高。
    5.Cache的性能分析(簡(jiǎn)單應(yīng)用)
    Cache的命中率對(duì)計(jì)算機(jī)速度的影響很大。實(shí)踐證明,Cache的尺寸越小,地址映象方法和替換策略對(duì)命中率的影響越大。
    在組的大小一定情況下,Cache的容量越大則命中率越高。
    當(dāng)Cache的大小確定時(shí),組的大小或塊的大小將影響不命中率,由于塊的內(nèi)部是全相聯(lián)的,因此塊越大則命中率越高。
    我們知道,衡量存儲(chǔ)系統(tǒng)的速度性能要以平均訪存時(shí)間為指標(biāo),計(jì)算平均讀訪存時(shí)間的公式為:
    Ta=HcTc+(1-Hc)Tm其中Hc是指命中率,Tc是命中時(shí)訪問時(shí)間,Tm為訪主存時(shí)間。若是多層Cache也可按此公式推出計(jì)算方法。即上層的存儲(chǔ)器命中時(shí)間加上不命中時(shí)訪問下層存儲(chǔ)器的時(shí)間。
    四、主存儲(chǔ)器帶寬拓寬方法
    前面我們學(xué)了層次存儲(chǔ)體系中的高層存儲(chǔ)器Cache,現(xiàn)在討論主存。
    存儲(chǔ)器的主要性能指標(biāo)是容量、速度和價(jià)格。存儲(chǔ)器的速度指標(biāo)包括訪問時(shí)間、訪存周期時(shí)間和帶寬。提高主存帶寬的措施主要有:
    1.增加存儲(chǔ)器的數(shù)據(jù)寬度。(也就是增加數(shù)據(jù)位數(shù))
    2.采用存儲(chǔ)器的多體交叉技術(shù)。
    存儲(chǔ)器的多體交叉是提高其數(shù)據(jù)帶寬的有效方法。這里用我自己的理解解釋一下高位交叉存儲(chǔ)器和低位交叉存儲(chǔ)器:
    我們知道,存儲(chǔ)器的每個(gè)存儲(chǔ)單元都要給定一個(gè)地址才能被訪問到。并行存儲(chǔ)器是由多個(gè)存儲(chǔ)體組成,并行存取可以加快存取速度,但是這和編址方法有關(guān)。
    比如主存空間有8個(gè)存儲(chǔ)單元(2的3次方,設(shè)得小一些好懂些,實(shí)際上的單元數(shù)比這大得多),那么整個(gè)存儲(chǔ)空間地址就由一組3位二進(jìn)制數(shù)組成:從000到111,如果這個(gè)空間用兩個(gè)存儲(chǔ)體實(shí)現(xiàn),有兩種編址方法。
    一種是"高位交叉"編址,就是把地址的碼的前一位數(shù)分配給兩個(gè)存儲(chǔ)體,第一個(gè)為0,第二個(gè)為1(如果有四個(gè)存儲(chǔ)體的話,就要分給前面的兩位數(shù),依次類推)第一個(gè)存儲(chǔ)體里面的單元就是以這個(gè)碼開始的編碼:000,001,010,011 (看到第一位數(shù)都是0了嗎);第二個(gè)存儲(chǔ)體的存儲(chǔ)單元的四個(gè)地址是:100,101,110,111.這樣,當(dāng)訪問兩個(gè)地址相鄰存儲(chǔ)單元的數(shù)據(jù)時(shí),比如110和111兩個(gè)單元的數(shù)據(jù),都放在第二個(gè)存儲(chǔ)體中,只能在這個(gè)體中存取,而第一個(gè)存儲(chǔ)體就閑著沒人訪問了。而一般在存放數(shù)據(jù)時(shí),多是將數(shù)據(jù)存放在地址連續(xù)的內(nèi)存區(qū)域中的?,F(xiàn)在可以知道了,為什么高位交叉編址的存儲(chǔ)器適合于多機(jī)系統(tǒng),就是說,因?yàn)楦魈幚頇C(jī)通常訪問各自所需的數(shù)據(jù),這些數(shù)據(jù)放在不同的存儲(chǔ)體中時(shí),兩個(gè)存儲(chǔ)器可以同時(shí)工作,也就加快了速度。
    另一種方法就是低位交叉編址。如上的例子,地址碼的后一位就是分配給存儲(chǔ)體的地址碼,第一個(gè)存儲(chǔ)器里的存儲(chǔ)單元就是000,010,100,110(后一位總是0),第二個(gè)存儲(chǔ)器里的存儲(chǔ)單元就是001,011,101,111,這種方法使得相鄰地址的存儲(chǔ)單元分布在不同的存儲(chǔ)體中,所以在訪問相鄰單元的數(shù)據(jù)時(shí),多個(gè)并行存儲(chǔ)體可以同時(shí)工作進(jìn)行存取,因此比較適于單處理機(jī)內(nèi)的高速數(shù)據(jù)存取。
    增加存儲(chǔ)器數(shù)據(jù)寬度的方法也是拓寬帶寬的方法,一般采用單體多字方法。多體交叉的存儲(chǔ)器的實(shí)際帶寬比單體多字的高。
    五、虛擬存儲(chǔ)器(簡(jiǎn)單應(yīng)用)
    虛擬存儲(chǔ)器是主存的擴(kuò)展,虛擬存儲(chǔ)器的空間大小取決于計(jì)算機(jī)的訪存能力而不是實(shí)際外存的大小,實(shí)際存儲(chǔ)空間可以小于虛擬地址空間。從程序員的角度看,外存被看作邏輯存儲(chǔ)空間,訪問的地址是一個(gè)邏輯地址(虛地址),虛擬存儲(chǔ)器使存儲(chǔ)系統(tǒng)既具有相當(dāng)于外存的容量又有接近于主存的訪問速度。
    虛擬存儲(chǔ)器的訪問也涉及到虛地址與實(shí)地址的映象、替換算法等,這與Cache中的類似,前面我們講的地址映象以塊為單位,而在虛擬存儲(chǔ)器中,地址映象以頁(yè)為單位。設(shè)計(jì)虛擬存儲(chǔ)系統(tǒng)需考慮的指標(biāo)是主存空間利用率和主存的命中率。
    虛擬存儲(chǔ)器與Cache存儲(chǔ)器的管理方法有許多相同之處,它們都需要地址映象表和地址變換機(jī)構(gòu)。但是二者也是不同的,請(qǐng)注意比較。
    虛擬存儲(chǔ)器的三種不同管理方式:按存儲(chǔ)映象算法,分為段式、頁(yè)式和段頁(yè)式等,這些管理方式的基本原理是類似的。
    段式管理:把主存按段分配的存儲(chǔ)管理方式。它是一種模塊化的存儲(chǔ)管理方式,每個(gè)用戶程序模塊可分到一個(gè)段,該程序模塊只能訪問分配給該模塊的段所對(duì)應(yīng)的主存空間。段長(zhǎng)可以任意設(shè)定,并可放大和縮小。
    系統(tǒng)中通過一個(gè)段表指明各段在主存中的位置。段表中包括段名(段號(hào))、段起點(diǎn)、裝入位和段長(zhǎng)等。段表本身也是一個(gè)段。段一般是按程序模塊分的。
    頁(yè)式管理:是把虛擬存儲(chǔ)空間和實(shí)際空間等分成固定大小的頁(yè),各虛擬頁(yè)可裝入主存中的不同實(shí)際頁(yè)面位置。頁(yè)式存儲(chǔ)中,處理機(jī)邏輯地址由虛頁(yè)號(hào)和頁(yè)內(nèi)地址兩部分組成,實(shí)際地址也分為頁(yè)號(hào)和頁(yè)內(nèi)地址兩部分,由地址映象機(jī)構(gòu)將虛頁(yè)號(hào)轉(zhuǎn)換成主存的實(shí)際頁(yè)號(hào)。
    頁(yè)式管理用一個(gè)頁(yè)表,包括頁(yè)號(hào)、每頁(yè)在主存中起始位置、裝入位等。頁(yè)表是虛擬頁(yè)號(hào)與物理頁(yè)號(hào)的映射表。頁(yè)式管理由操作系統(tǒng)進(jìn)行,對(duì)應(yīng)用程序員的透明的。
    段頁(yè)式管理:是上述兩種方法的結(jié)合,它將存儲(chǔ)空間按邏輯模塊分成段,每段又分成若干個(gè)頁(yè),訪存通過一個(gè)段表和若干個(gè)頁(yè)表進(jìn)行。段的長(zhǎng)度必須是頁(yè)長(zhǎng)的整數(shù)倍,段的起點(diǎn)必須是某一頁(yè)的起點(diǎn)。
    目前操作系統(tǒng)一般都采用段頁(yè)式管理。下面將三種管理方式作一比較:
     段式管理 優(yōu)點(diǎn) 缺點(diǎn)
    地址變換過程 多用戶(模塊)地址可分成:程序號(hào)、段號(hào)、段內(nèi)偏移量三部分,地址變換過程如下:
    (1)由程序號(hào)找到相應(yīng)的段表基址寄存器,其中存有段表始址和段表長(zhǎng)度。
    (2)由段表長(zhǎng)度與段號(hào)相比較,檢查是否越界。正常轉(zhuǎn)(3)
    (3)段表始址和段號(hào)找到其段表中相應(yīng)表項(xiàng),其中存有主存地址,裝入位,訪問位、段長(zhǎng)、輔存地址等。
    (4)檢查裝入位是否為"1"(在主存),為"1"轉(zhuǎn)(5),否則產(chǎn)生缺段中斷,從輔存中調(diào)入一段到主存。
    (5)由主存地址+段內(nèi)偏移形成真正物理地址。 (1)多個(gè)程序分段編制,多個(gè)程序或并行編程,縮段編程時(shí)間;
    (2)各段相對(duì)獨(dú)立,其修改、擴(kuò)充都不會(huì)影響其他段;
    (3)實(shí)現(xiàn)虛擬存儲(chǔ);
    (4)便于共享和保護(hù)。 (1)分段管理主存,主存利用率不是很高,大量零頭;
    (2)為形成有效地址,需多次訪存,降低了訪存速度;
    (3)分配和回收空閑區(qū)比較復(fù)雜;
    (4)段表中地址字段和段長(zhǎng)字段較長(zhǎng),降低查表速度。
    頁(yè)式管理 用戶邏輯地址分成:用戶標(biāo)志、用戶虛頁(yè)號(hào)、頁(yè)內(nèi)偏移三部分。過程如下:
    (1)由用戶標(biāo)志找到相應(yīng)頁(yè)表基址寄存器,其中有頁(yè)表地址。
    (2)由頁(yè)表始址和頁(yè)號(hào)找到頁(yè)表中相應(yīng)表項(xiàng)。
    (3)檢查裝入位是否"1"(在主存),為''1''轉(zhuǎn)(4)否則產(chǎn)生缺頁(yè)中斷。
    (4)由主存塊號(hào)和頁(yè)內(nèi)偏移形成有效地址。 (1)頁(yè)表表項(xiàng)短,減少訪表時(shí)間。
    (2)零頭較少。
    (3)調(diào)入速度快。 (1)強(qiáng)制分頁(yè),頁(yè)無邏輯意義,不利于存儲(chǔ)保護(hù)和擴(kuò)充。
    (2)有效地址生成需多次訪存,訪存速度下降。
    段頁(yè)式管理 用戶邏輯地址被分成:用戶標(biāo)志、段號(hào)、頁(yè)號(hào)、頁(yè)內(nèi)偏移四部分。過程如下:
    (1)由用戶標(biāo)志找到段表基址寄存器。
    (2)段表長(zhǎng)與段號(hào)作是否越界檢查。
    (3)段表始址+段號(hào)找到段表中相應(yīng)表項(xiàng)。
    (4)做裝入位、段長(zhǎng)的檢查。
    (5)由頁(yè)表始址+頁(yè)號(hào)找到頁(yè)表中相應(yīng)表項(xiàng)。
    (6)作裝入位等檢查。
    (7)實(shí)頁(yè)號(hào)+頁(yè)內(nèi)偏移形成有效地址。 具有段式、頁(yè)式的優(yōu)點(diǎn) 有效地址形成需3次訪存,速度較慢。
    請(qǐng)注意對(duì)照課本上各管理方法示意圖進(jìn)行理解。
    頁(yè)式虛擬存儲(chǔ)器結(jié)構(gòu)及其實(shí)現(xiàn):主要要解決的問題是頁(yè)面失效的處理及虛地址到實(shí)地址的變換速度。另外還有虛擬存儲(chǔ)器的保護(hù)問題。
    虛擬存儲(chǔ)器中進(jìn)行地址變換時(shí),需要虛頁(yè)號(hào)變換成主存中實(shí)頁(yè)號(hào)的內(nèi)部地址變換,這一般通過查內(nèi)頁(yè)表實(shí)現(xiàn),若頁(yè)頁(yè)失效,還需通過查外頁(yè)表變換地址再?gòu)耐獯嬲{(diào)入頁(yè)面。所以提高頁(yè)表的訪問速度是提高地址變換速度的關(guān)鍵。根據(jù)訪存的局部性原理,將一部分使用概率高頁(yè)表項(xiàng)放在快速硬件構(gòu)成的表格中,而將整個(gè)表格放在主存中,這就引出了快表和慢表的概念。查表時(shí),快表和慢表同時(shí)進(jìn)行查找??毂淼拇嬖趯?duì)所有的程序員都是透明的。
    。對(duì)于多道程序系統(tǒng)和多用戶系統(tǒng),虛存的保護(hù)是必不可少的。存儲(chǔ)系統(tǒng)的保護(hù)分存儲(chǔ)區(qū)域的保護(hù)和訪問方式的保護(hù)。對(duì)虛擬存儲(chǔ)器的保護(hù)方式有映象表保護(hù)法、鍵保護(hù)法和環(huán)式保護(hù)法等。