1. 虛擬存儲器的基本概念
分析常規(guī)存儲器管理不足的原因:
1)常規(guī)存儲器管理方式的特征
????一次性:作業(yè)在運行前一次性地全部裝入內存
????駐留性:作業(yè)裝入內存后奴愉,便一直駐留在內存中贪婉,直至作業(yè)運行結束。
????????一次性及駐留性在程序運行時是否是必須的?
????????????NO缕陕。程序運行有局部性本鸣。
2)局部性原理
????1968年,Denning.P提出
????程序在執(zhí)行時將呈現出局部性規(guī)律:
????????在一較短的時間內
????????程序的執(zhí)行僅局限于某個部分壮莹;
????????相應地翅帜,所訪問的存儲空間也局限于某個區(qū)域。
程序執(zhí)行的特點:
????多數情況下仍是順序執(zhí)行命满。
????少部分的轉移和過程調用指令會使程序執(zhí)行由一部分區(qū)域轉至另一部分區(qū)域(但研究表明調用深度多數情況下不超過5)
????許多由少數指令構成的循環(huán)結構會多次執(zhí)行涝滴。
????對許多數據結構的處理(如數組)往往局限于很小的范圍內。
所有上述情況都表現出程序執(zhí)行的局部性:
????時間局部性(temporal locality)
????????被引用過一次的存儲器位置很可能在不遠的將來再被多次引用胶台。
????空間局部性(spatial locality)
????????如果一個存儲器位置被引用了一次歼疮,那么程序很可能在不遠的將來引用附近的一個存儲器位置。
關于局部性的討論
????有良好局部性的程序運行速度更快诈唬;
????計算機系統的各個層次都利用了局部性:
????????Cache韩脏;
????????主存:緩存磁盤文件系統最近使用的磁盤塊;
????????Web瀏覽器將最近被引用的文檔放在本地磁盤上讯榕;
????????Web服務器將最近被請求的文檔放在前端磁盤高速緩存中骤素。
????重復引用同一個變量的程序有良好的時間局部性;
????對于使用數組等數據結構的程序愚屁,a[1],a[2]……數據的使用可看做具有步長k=1的引用模式济竹,步長越小,空間局部性越好霎槐;數組按行訪問和按列訪問其局部性不同送浊。
????對于取指令來說,循環(huán)有好的時間和空間局部性丘跌;
????循環(huán)體越小袭景,循環(huán)迭代次數越多唁桩,局部性越好。
基于局部性原理
????程序運行前耸棒,不需全部裝入內存(打破一次性)
????????僅裝入當前要運行的部分頁面或段即可運行荒澡,其余部分暫留在外存上。
????????缺頁/段的情況:要訪問的頁(段) 尚未調入內存与殃。程序應利用OS所提供的請求調頁(段)功能单山,將它們調入內存,使程序繼續(xù)執(zhí)行幅疼。
????調入需要的頁/段時米奸,如果內存已滿,無法再裝入新頁(段)爽篷,通過置換功能將內存中暫時不用的頁(段)調至外存悴晰,騰出足夠的內存空間。(不總駐留)
交換技術與虛存使用的調入調出技術有何相同和不同之處逐工?
主要相同點是都要在內存與外存之間交換信息铡溪;
主要區(qū)別在于交換技術換出換進一般是整個進程(proc結構和共享正文段除外),因此一個進程的大小受物理存儲器的限制钻弄;
而虛存中使用的調入調出技術在內存與外存之間來回傳遞的是存儲頁或存儲段佃却,而不是整個進程,從而使得進程映射具有了更大的靈活性窘俺,且允許進程的大小比可用的物理存儲空間大的多 饲帅。
總之:
????為了用小的內存實現在大的虛空間中程序的運行目的
????基于局部性原理
????虛擬存儲器管理——由操作系統提供一個比實際內存大的,假想的特大存儲器瘤泪。
3)虛擬存儲器的定義
所謂“虛擬存儲器”灶泵,是指具有請求調入功能和置換功能,能從邏輯上對內存容量加以擴充的一種存儲器系統对途。
虛擬存儲管理下
????內存邏輯容量由內存容量和外存容量之和所決定
????運行速度接近于內存速度
????每位的成本卻接近于外存赦邻。
4)虛擬存儲器的實現
虛擬存儲管理:
允許將一個作業(yè)分多次調入內存。
????若采用連續(xù)分配方式实檀,需申請足夠空間惶洲,再分多次裝入,造成內存資源浪費膳犹,并不能從邏輯上擴大內存容量恬吕。
????虛擬的實現建立在離散分配存儲管理基礎上
????????方式:請求分頁/請求分段系統
????????細節(jié):分頁/段機構、中斷機構须床、地址變換機構铐料、軟件支持
5)虛擬存儲器的特征
離散分配方式是基礎
????多次性:一個作業(yè)被分成多次調入內存運行
????對換性:允許在作業(yè)的運行過程中進行換進、換出。(進程整體對換不算虛擬)
????最終體現虛擬性:能夠從邏輯上擴充內存容量钠惩,使用戶所看到的內存容量遠大于實際內存容量柒凉。
2. 請求分頁存儲管理方式
????基本分頁 + “請求調頁”和“頁面置換”功能。
????換入和換出基本單位都是長度固定的頁面
1)硬件支持
一臺具有一定容量的內/外存的計算機+ 頁表機制+ 缺頁中斷機構+ 地址轉換機構
①頁表基本功能不變:邏輯地址映射為物理地址
增加虛擬功能后需記錄的頁表項信息有變化:
(1) 狀態(tài)位P :指示該頁是否已調入內存篓跛。
(2) 訪問字段A :用于記錄本頁在一段時間內被訪問的次數膝捞,或記錄本頁最近已有多長時間未被訪問。(置換時考量的參數)
(3) 修改位M :該頁在調入內存后是否被修改過愧沟。(關系到置換時調出的具體操作)
(4) 外存地址:用于指出該頁在外存上的地址绑警。
②缺頁中斷機構
每當要訪問的頁面不在內存時,便產生一缺頁中斷通知OS央渣,OS則將所缺之頁調入內存。作為中斷渴频,需經歷幾個步驟:
????“保護CPU環(huán)境”
????“分析中斷原因”
????“轉入缺頁中斷處理程序”
????“恢復CPU環(huán)境”等芽丹。
作為一種特殊中斷,與一般中斷有明顯區(qū)別:
????(1) 在指令執(zhí)行期間產生和處理中斷信號卜朗。
????(2) 一條指令在執(zhí)行期間拔第,可能產生多次缺頁中斷。
Copy A to B可能產生6次缺頁中斷场钉。
系統應能記錄每次中斷的狀態(tài)蚊俺。
③地址變換機構
分頁系統地址變換機構的基礎上增加
產生和處理缺頁中斷(請求調入)
從內存中換出一頁的功能(置換)
2)內存分配
作業(yè)不一次裝入,部分裝入的情況下如何為進程分配內存逛万,涉及三個問題:
? ? ①最小物理塊數的確定
????????少于此數量進程將不能運行
????????與計算機的硬件結構有關泳猬,取決于指令的格式、功能和尋址方式
? ? ②物理塊的分配策略
????????考慮:固定OR可變分配宇植、全局OR局部置換得封。
????????組合出三種適合的策略。
????????????固定分配指郁、局部置換
????????????????為每個進程分配一定數目的物理塊忙上,在整個運行期間不再改變(基于進程的類型,或根據程序員闲坎、程序管理員的建議)
????????????????運行中缺頁時疫粥,只能從該進程內存中n個頁面中選出一頁換出,然后再調入一頁腰懂。
????????困難:難以把握為每個進程分配“適量”物理塊數
可變分配梗逮、全局置換
先為每個進程分配一定數目的物理塊
OS管理一個空閑物理塊隊列,發(fā)生缺頁時悯恍,系統從隊列中取出一塊分配給該進程库糠,將欲調入的頁裝入(動態(tài)增長型,全局空閑空間都可分配使用)
空閑空間不足時,可與其他任何進程頁面置換瞬欧〈海“會使其他進程缺頁率提高,影響運行”
最易實現
可變分配艘虎、局部置換
為每個進程分配一定數目的物理塊
缺頁時唉侄,只允許換出該進程在內存的頁面,不影響其他進程執(zhí)行野建。
根據缺頁率增減進程的物理塊數:若頻繁缺頁中斷属划,則系統再為進程分配若干物理快;若缺頁率特別低候生,則適當減少分配給該進程的物理塊同眯。
③物理塊的分配算法
固定分配策略時,分配物理塊可采用以下幾種算法:
????平均分配算法
????????將所有可供分配的物理塊平均分配給各進程唯鸭。
????????缺點:未考慮各進程本身的大小须蜗,利用率不均。
????按比例分配算法
????????根據進程的大小按比例分配物理塊目溉。
????????設系統中共有n個進程
則明肮,每個進程能分到的物理塊數:
Si:進程i頁面數為; S:n個進程頁面數總和缭付; m:可用物理塊總數?
????考慮優(yōu)先權的分配算法
? ? 實際應用中柿估,要照顧重要、急迫的作業(yè)盡快完成陷猫,為它分配較多的內存空間秫舌。
所有可用物理塊分兩部分:
????????一部分按比例分配給各進程;
????????另一部分根據各進程優(yōu)先權烙丛,適當地為其增加份額舅巷,分配給各進程。
3)調頁策略
① 何時調入頁面
1.預調頁策略
????以預測為基礎河咽,將預計不久后便會被訪問的若干頁面钠右,預先調入內存。
????優(yōu)點:一次調入若干頁忘蟹,效率較好
????缺點:預測不一定準確飒房,預調入的頁面可能根本不被執(zhí)行到。主要用于進程的首次調入媚值,由程序員指出應該先調入哪些頁狠毯。
2.請求調頁策略
????運行中需要的頁面不在內存,便立即提出請求褥芒,由OS將其調入內存嚼松。
????優(yōu)點:由請求調頁策略所確定調入的頁嫡良,一定會被訪問;比較容易實現献酗。
????缺點:每次僅調入一頁寝受,需花費較大的系統開銷,增加了磁盤I/O的啟動頻率罕偎。
② 從何處調入頁面
????在請求分頁系統中的外存分為:
????對換區(qū):連續(xù)存放數據很澄,讀寫速度較快
????文件區(qū):離散分配方式,I/O速度相對慢
發(fā)生缺頁時颜及,系統應從何處將缺頁調入內存甩苛,分成三種情況:
????系統擁有足夠的對換區(qū)空間:進程運行前所有頁面由文件區(qū)拷貝到對換區(qū);運行需要的頁面全部從對換區(qū)調入內存俏站,提高調頁速度讯蒲。
????系統缺少足夠的對換區(qū)空間:不會被修改的部分,在文件區(qū)操作(即:直接從文件區(qū)調入肄扎,換出時不用寫入文件爱葵,再調入時仍從文件區(qū)調入)可能被修改的部分,在對換區(qū)操作反浓。
UNIX方式:(隨運行數據逐漸從文件區(qū)轉到對換區(qū))未運行的頁面從文件區(qū)調入;曾經運行赞哗,但又被換出的頁面放在對換區(qū)雷则,下次調入應從對換區(qū)調入。進程請求的共享頁面可能已被其他進程調入肪笋,無需再從對換區(qū)調入月劈。
③ 頁面調入過程
????程序運行前需要裝入內存:上述的②步策略處理何處調入;
????開始運行:先預調入一部分頁面藤乙;
????運行中:需要的頁面不在內存時猜揪,
????????向CPU發(fā)出一缺頁中斷,“中斷處理程序”開始工作:
????????首先保留CPU環(huán)境
????????分析中斷原因后坛梁,轉入缺頁中斷處理程序而姐。
????????處理:判斷是否置換、頁表信息更新
????????恢復現場划咐,重新操作頁面拴念。
3.頁面置換算法
????進程運行過程中,訪問的頁面不在內存褐缠,調入時內存已無空閑空間政鼠,需要將內存中的一頁程序或數據調到外存。
頁面置換算法(page replacement algorithms):選擇換出哪些頁面的算法队魏,其好壞直接影響系統的性能公般。
????應具有較低的缺頁率:
1)最佳(Optimal)置換算法
????Belady,1966年提出的一種理論上的算法
????????換出以后永不再用的,或在最長(未來)時間內不再被訪問的頁面官帘。
優(yōu)點:保證獲得最低的缺頁率
不足:無法實現瞬雹,因為無法預知一進程將來的運行情況
作用:作為參照標準,評價其他算法遏佣。
例1:假設一個作業(yè)挖炬,運行中依次使用的頁面情況如下,分配給該進程的內存物理塊只有3個状婶,按最佳置換算法意敛,內存中的頁面如何變化,缺頁率是多少膛虫?
2)先進先出置換算法(FIFO)
????先進入的先淘汰草姻,即選擇內存中駐留時間最久的頁面予以淘汰。
????????優(yōu)點:實現簡單稍刀,把一進程已調入內存的頁面按先后次序組織成一個隊列撩独,并設置一個指針(替換指針),使它總是指向隊首最老的頁面账月。
????????不足:與進程實際運行規(guī)律不相適應(較早調入的頁往往是經常被訪問的頁综膀,頻繁被對換造成運行性能降低)
對例1用FIFO算法計算:
系統用隊列對先進先出的頁面次序進行記錄
隊列最長等于分配的物理塊數
始終置換隊首的最老頁面
Belady 現象
Belady現象:出現分配的頁面數增多,缺頁率反而提高的異尘殖荩現象剧劝。
描述:一個進程P要訪問M個頁,OS分配N個內存頁面給進程P抓歼;對一個訪問序列S讥此,發(fā)生缺頁次數為PE(S,N)。當N增大時谣妻,PE(S, N)時而增大萄喳,時而減小。
Belady現象的原因:FIFO算法的置換特征與進程訪問內存的動態(tài)特征矛盾蹋半,即被置換的頁面并不是進程不會訪問的他巨。
3)最近最久未使用(LRU)置換算法
無法預測將來的使用情況,只能利用“最近的過去”作為“最近的將來”的近似减江,因此闻蛀,LRU置換算法選擇最近最久未使用(least recently used)的頁面予以淘汰。
對例1用LRU算法計算:
不足:
有時頁面過去和未來的走向之間并無必然的聯系您市。
相應的需較多的硬件支持:記錄每個頁面自上次被訪問以來所經歷的時間t觉痛,淘汰時選擇頁面t值最大的;以及需要快速地知道哪一頁是最近最久未使用的頁面茵休,用寄存器或棧薪棒。
①寄存器記錄時間的原理
????一進程有8個頁面手蝎,每個頁面需配備一個8位的(移位)寄存器。
????移位寄存器表示為
? ? ? ? ? ? R=Rn-1Rn-2Rn-3…R2R1R0
????頁面被訪問后的操作:
????????將該頁對應的寄存器的Rn-1位置為1
????如何記時:
????????由系統發(fā)出定時信號俐芯,每隔一定時間將所有寄存器右移1位棵介。
????????某一時刻,比較各寄存器的值吧史,被用到的標志1逐漸往低位上積累邮辽,若高位上沒有1,就說明最近沒用過贸营。所以最近最久未使用的就是寄存器值最小的那個頁吨述。
②棧記錄時間的原理
某頁面被訪問,便將該頁面的頁面號從棧中移出钞脂,將它壓入棧頂揣云。因此:棧頂始終是最新被訪問頁面的編號,越久未使用冰啃,頁面越被壓在棧底邓夕。
練習:某程序在內存中分配三個頁面,初始為空阎毅,頁面走向為4焚刚,3,2扇调,1汪榔,4,3肃拜,5,4雌团,3燃领,2,1锦援,5猛蔽。
試分別利用OPT、FIFO及LRU算法計算缺頁次數按灶。
4)輪轉算法(clock)?又稱最近未使用算法(NRU, Not Recently Used)
????LRU(最近最久未使用算法)近似算法
????????折衷FIFO
????每個頁設一個使用標志位(use bit)芦疏,若該頁被訪問則將其置為1憔维。
????設置一個指針,從當前指針位置開始按地址先后檢查各頁毁枯,尋找use bit=0的頁面作為被置換頁。
????若指針經過的頁use bit=1叮称,修改use bit=0(暫不凋出种玛,給被用過的頁面駐留的機會 )藐鹤,指針繼續(xù)向下。到所有頁面末尾后再返回隊首檢查赂韵。
時鐘算法示例
說明:
增加了一個使用位
當一頁首次加載入內存時娱节,該位為1,當該頁被訪問時祭示,使用位也置1
當需要進行頁替換時
第一個使用位為0的幀被替換肄满,指針指向緩沖區(qū)的下一幀
循環(huán)掃描,遇到使用位為1的质涛,變成0
改進CLOCK
改進:主要考慮對沒訪問過的頁面再細分是否修改過的不同情況稠歉,減少因修改造成的頻繁I/O操作。
每頁除記錄是否用過A蹂窖,還記錄是否修改的標志M轧抗。置換時根據兩個標志的值有4種不同情況的處理。
算法性能比較
5)其他置換算法
? ? ①最少使用 (LFU, Least Frequently Used)
????????關鍵在次數記錄上
????????每頁設置訪問計數器瞬测,每當頁面被訪問時横媚,該頁面的訪問計數器加1;缺頁中斷時月趟,淘汰計數值最小的頁面灯蝴,并將所有計數清零;
????????計數的實現類似LRU孝宗,用移位寄存器穷躁,但比較時不是簡單比較寄存器的值,而是比較寄存器每位的和∑Ri因妇。
????????LRU與LFU
????????1000101
????????0001111
????????????LFU置換次數少的问潭。程序局部性會導致一個頁面在一段時間內使用次數很多。但使用次數多并不能說明將來被用到的可能性大
????????????而LRU置換最近最久未用的婚被,對未來的預計一般會更好些狡忙。
????????所有,LRU相對得到較好的應用址芯。
? ? ②頁面緩沖算法PBA(page buffering algorithm)
????????對FIFO算法的發(fā)展灾茁,彌補了FIFO可能造成的I/O開銷,又不需要LRU等算法的硬件支持谷炸。
????????????仍用FIFO算法選擇被置換頁
????????????但并不將其馬上換入外存北专。
????????????系統將頁面放入兩個鏈表之一:如果頁面未被修改,就將其歸入到空閑頁面鏈表的末尾旬陡;否則將其歸入到已修改頁面鏈表拓颓。
????????????需要調入新的物理頁面時,將新頁面內容讀入到空閑頁面鏈表的第一項所指的頁面描孟,然后將第一項刪除(從空閑鏈表摘下)录粱。
????????????空閑頁面和已修改頁面腻格,仍停留在內存中一段時間,如果這些頁面被再次訪問啥繁,只需較小開銷菜职,而被訪問的頁面可以返還作為進程的內存頁。
????????????當已修改頁面達到一定數目后旗闽,再將它們一起調出到外存酬核,然后將它們歸入空閑頁面鏈表,這樣能大大減少I/O操作的次數适室。
常用防抖動方法:
局部置換策略嫡意;
頁面調入內存前檢查各進程工作集,為缺頁率高的增加有限物理塊捣辆;
L缺頁間的平均時間=S置換一個頁面所需時間蔬螟,可使磁盤和cpu達到最大利用率;
抖動發(fā)生時選擇暫停一些進程汽畴,調節(jié)多道程序度旧巾。
缺頁率與物理塊數有關聯,基于程序局部性原理忍些,若能預知程序在某段時間要訪問的頁面并全部調入他們鲁猩,將大大降低缺頁率。
Denning提出工作集概念:
某段時間間隔中罢坝,進程實際要訪問的頁面的集合廓握。可以用一個二元函數W(t, ?)來表示嘁酿, t是當前的執(zhí)行時刻隙券,? 稱為工作集窗口(working-set window )。
工作集大小的變化
進程開始執(zhí)行后闹司,隨著訪問新頁面逐步建立較穩(wěn)定的工作集娱仔。
當內存訪問的局部性區(qū)域的位置大致穩(wěn)定時,工作集大小也大致穩(wěn)定开仰;
局部性區(qū)域的位置改變時,工作集快速擴張和收縮過渡到下一個穩(wěn)定值薪铜。
實現工作集模型的困難是怎樣跟蹤工作集的軌跡众弓!
工作集模型的原理:
????操作系統跟蹤每個進程的工作集,并為進程分配大于其工作集的物理塊隔箍。
????如果還有空閑物理塊谓娃,則可以再調一個進程到內存以增加多道程序數。
????如果所有工作集之和增加以至于超過了可用物理塊的總數蜒滩,那么操作系統會暫停一個進程滨达,將其頁面調出并且將其物理塊分配給其他進程奶稠,防止出現抖動現象。
正確選擇工作集的大小捡遍,對存儲器的利用率和系統吞吐量的提嵩锌订,都將產生重要影響。
W(t,△) 表示該進程在過去的△個虛擬時間單位中被訪問到的頁的集合画株。
駐留集
駐留(常駐)集是指在當前時刻辆飘,進程實際駐留在內存當中的頁面集合。
工作集是進程在運行過程中固有的性質谓传,而駐留集取決于系統分配給進程的物理頁面數目蜈项,以及所采用的頁面置換算法;
如果一個進程的整個工作集都在內存當中续挟,即駐留集 ? 工作集紧卒,那么進程將很順利地運行,而不會造成太多的缺頁中斷(直到工作集發(fā)生劇烈變動诗祸,從而過渡到另一個狀態(tài))跑芳;
當駐留集達到某個數目之后,再給它分配更多的物理頁面贬媒,缺頁率也不會明顯下降聋亡。
4.請求分段存儲管理方式
在請求分段系統中,程序運行之前际乘,只需先調入若干個分段(不必調入所有的分段)坡倔,便可啟動運行。當所訪問的段不在內存中時脖含,可請求OS將所缺的段調入內存罪塔。
1)請求分段中的硬件支持
①段表機制
(1) 存取方式 :用于標識本分段的存取屬性。R,R/W,W
(2) 訪問字段A :用于記錄本段被訪問的頻繁程度养葵。
(3) 修改位M :表示該段在調入內存后是否被修改過征堪。
(4) 存在狀態(tài)位P :指示該段是否已調入內存。
(5) 增補位 :特有字段关拒,表示該段運行中是否做過動態(tài)增長
(6) 外存地址:用于指出該段在外存上的起始地址(盤塊號)佃蚜。
②缺段中斷機構
發(fā)現運行進程所訪問段尚未調入內存
????由缺段中斷機構產生一缺段中斷信號
????進入OS,由缺段中斷處理程序將所需的段調入內存着绊。
????缺段中斷同樣在一條指令的執(zhí)行期間產生和處理中斷谐算,一條指令執(zhí)行可能產生多次缺段中斷。但不會出現一條指令被分割在兩個分段中或一組信息被分割在兩個分段中的情況归露。
③ 地址變換機構
基于分段系統地址變換機構的基礎
????段調入內存
????修改段表
????再利用段表進行地址變換洲脂。
????總之:就是增加了缺段中斷的請求及處理等功能。
2)分段的共享和保護
分段在邏輯意義上劃分剧包,實現共享和保護都較方便恐锦。以下討論具體實現:
①實現共享:共享段表
在內存中配置一張共享段表往果,每個共享段都占有一表項,記錄如下內容:
共享計數count:
????共享段為多個進程所需要一铅,當某進程不再需要它而釋放它時陕贮,系統并不回收該段所占內存區(qū),僅當所有共享該段的進程全都不再需要它時馅闽,才由系統回收該段所占內存區(qū)飘蚯。設置count用于記錄有多少個進程需要共享該分段。
存取控制字段:一個共享段給不同的進程以不同的存取權限福也。
段號:對一個共享段局骤,不同的進程可用不同的段號。
② 共享段如何分享與回收
共享段的分配
????第一個請求使用該共享段的進程A:系統為該共享段分配一物理區(qū)暴凑,再把共享段裝入該區(qū)峦甩;
????將該區(qū)的始址填入A的段表相應項;
????共享段表中增加一表項现喳,填寫有關數據凯傲,count置1;
????其他進程B也調用該共享段時嗦篱,無需再為該段分配內存冰单,只需在B的段表中增加一表項,填寫該共享段的物理地址灸促;在共享段的段表中诫欠,填上調用進程的進程名、存取控制等浴栽,再執(zhí)行count:=count+1操作荒叼。
共享段的回收
????包括撤消在進程段表中共享段所對應的表項,執(zhí)行count:=count-1典鸡。
????如果count為0被廓,則由系統回收該共享段的物理內存,并取消共享段表中該段所對應的表項萝玷。
③ 分段保護
越界檢查
????段表寄存器存放了段表長度嫁乘;段表中存放了每個段的段長。
????在進行存儲訪問時球碉,將段號與段表長度比較蜓斧,段內地址與段長比較。
存取控制檢查
????尤其表現在不同進程對共享段的不同使用上汁尺。段表每個表項都設置“存取控制”字段法精,規(guī)定該段的訪問方式:只讀多律,只執(zhí)行痴突,讀/寫
環(huán)保護機構
????規(guī)定:低編號的環(huán)具有高優(yōu)先權
遵循的原則:一個程序可以訪問駐留在相同環(huán)或較低特權環(huán)中的數據搂蜓。一個程序可以調用駐留????在相同環(huán)或較高特權環(huán)中的服務