⑴ 操作系統頁式存儲管理的問題
邏輯頁面表示這是一個虛擬的儲存空間,一個邏輯頁面對應一個物理內存的頁框,這個頁框才是真正的物理存儲所在。
⑵ 操作系統頁式存儲管理的問題
存儲管理的基本原理內存管理方法
內存管理主要包括內存分配和回收、地址變換、內存擴充、內存共享和保護等功能。
下面主要介紹連續分配存儲管理、覆蓋與交換技術以及頁式與段式存儲管理等基本概念和原理。
1. 連續分配存儲管理方式
連續分配是指為一個用戶程序分配連續的內存空間。連續分配有單一連續存儲管理和分區式儲管理兩種方式。
(1)單一連續存儲管理
在這種管理方式中,內存被分為兩個區域:系統區和用戶區。應用程序裝入到用戶區,可使用用戶區全部空間。其特點是,最簡單,適用於單用戶、單任務的操作系統。CP/M和DOS 2.0以下就是採用此種方式。這種方式的最大優點就是易於管理。但也存在著一些問題和不足之處,例如對要求內存空間少的程序,造成內存浪費;程序全部裝入,使得很少使用的程序部分也佔用—定數量的內存。
(2)分區式存儲管理
為了支持多道程序系統和分時系統,支持多個程序並發執行,引入了分區式存儲管理。分區式存儲管理是把內存分為一些大小相等或不等的分區,操作系統佔用其中一個分區,其餘的分區由應用程序使用,每個應用程序佔用一個或幾個分區。分區式存儲管理雖然可以支持並發,但難以進行內存分區的共享。
分區式存儲管理引人了兩個新的問題:內碎片和外碎片。前者是佔用分區內未被利用的空間,後者是佔用分區之間難以利用的空閑分區(通常是小空閑分區)。為實現分區式存儲管理,操作系統應維護的數據結構為分區表或分區鏈表。表中各表項一般包括每個分區的起始地址、大小及狀態(是否已分配)。
分區式存儲管理常採用的一項技術就是內存緊縮(compaction):將各個佔用分區向內存一端移動,然後將各個空閑分區合並成為一個空閑分區。這種技術在提供了某種程度上的靈活性的同時,也存在著一些弊端,例如:對佔用分區進行內存數據搬移佔用CPU~t寸間;如果對佔用分區中的程序進行「浮動」,則其重定位需要硬體支持。
1)固定分區(nxedpartitioning)。
固定式分區的特點是把內存劃分為若干個固定大小的連續分區。分區大小可以相等:這種作法只適合於多個相同程序的並發執行(處理多個類型相同的對象)。分區大小也可以不等:有多個小分區、適量的中等分區以及少量的大分區。根據程序的大小,分配當前空閑的、適當大小的分區。這種技術的優點在於,易於實現,開銷小。缺點主要有兩個:內碎片造成浪費;分區總數固定,限制了並發執行的程序數目。
2)動態分區(dynamic partitioning)。
動態分區的特點是動態創建分區:在裝入程序時按其初始要求分配,或在其執行過程中通過系統調用進行分配或改變分區大小。與固定分區相比較其優點是:沒有內碎片。但它卻引入了另一種碎片——外碎片。動態分區的分區分配就是尋找某個空閑分區,其大小需大於或等於程序的要求。若是大於要求,則將該分區分割成兩個分區,其中一個分區為要求的大小並標記為「佔用」,而另一個分區為餘下部分並標記為「空閑」。分區分配的先後次序通常是從內存低端到高端。動態分區的分區釋放過程中有一個要注意的問題是,將相鄰的空閑分區合並成一個大的空閑分區。
下面列出了幾種常用的分區分配演算法:
首先適配法(nrst-fit):按分區在內存的先後次序從頭查找,找到符合要求的第一個分區進行分配。該演算法的分配和釋放的時間性能較好,較大的空閑分區可以被保留在內存高端。但隨著低端分區不斷劃分會產生較多小分區,每次分配時查找時間開銷便會增大。
下次適配法(next-fit):按分區在內存的先後次序,從上次分配的分區起查找(到最後{區時再從頭開始},找到符合要求的第一個分區進行分配。該演算法的分配和釋放的時間性能較好,使空閑分區分布得更均勻,但較大空閑分區不易保留。
最佳適配法(best-fit):按分區在內存的先後次序從頭查找,找到其大小與要求相差最小的空閑分區進行分配。從個別來看,外碎片較小;但從整體來看,會形成較多外碎片優點是較大的空閑分區可以被保留。
最壞適配法(worst- fit):按分區在內存的先後次序從頭查找,找到最大的空閑分區進行分配。基本不留下小空閑分區,不易形成外碎片。但由於較大的空閑分區不被保留,當對內存需求較大的進程需要運行時,其要求不易被滿足。
2.覆蓋和交換技術
引入覆蓋(overlay)技術的目標是在較小的可用內存中運行較大的程序。這種技術常用於多道程序系統之中,與分區式存儲管理配合使用。覆蓋技術的原理很簡單,一個程序的幾個代碼段或數據段,按照時間先後來佔用公共的內存空間。將程序必要部分(常用功能)的代碼和數據常駐內存;可選部分(不常用功能)平時存放在外存(覆蓋文件)中,在需要時才裝入內存。不存在調用關系的模塊不必同時裝入到內存,從而可以相互覆蓋。覆蓋技術的缺點是編程時必須劃分程序模塊和確定程序模塊之間的覆蓋關系,增加編程復雜度;從外存裝入覆蓋文件,以時間延長換取空間節省。覆蓋的實現方式有兩種:以函數庫方式實現或操作系統支持。
交換(swapping)技術在多個程序並發執行時,可以將暫時不能執行的程序送到外存中,從而獲得空閑內存空間來裝入新程序,或讀人保存在外存中而處於就緒狀態的程序。交換單位為整個進程的地址空間。交換技術常用於多道程序系統或小型分時系統中,與分區式存儲管理配合使用又稱作「對換」或「滾進/滾出」(roll-in/roll-out)。其優點之一是增加並發運行的程序數目,並給用戶提供適當的響應時間;與覆蓋技術相比交換技術另一個顯著的優點是不影響程序結構。交換技術本身也存在著不足,例如:對換人和換出的控制增加處理器開銷;程序整個地址空間都進行對換,沒有考慮執行過程中地址訪問的統計特性。
3.頁式和段式存儲管理
在前面的幾種存儲管理方法中,為進程分配的空間是連續的,使用的地址都是物理地址。如果允許將一個進程分散到許多不連續的空間,就可以避免內存緊縮,減少碎片。基於這一思想,通過引入進程的邏輯地址,把進程地址空間與實際存儲空間分離,增加存儲管理的靈活性。地址空間和存儲空間兩個基本概念的定義如下:
地址空間:將源程序經過編譯後得到的目標程序,存在於它所限定的地址范圍內,這個范圍稱為地址空間。地址空間是邏輯地址的集合。
存儲空間:指主存中一系列存儲信息的物理單元的集合,這些單元的編號稱為物理地址存儲空間是物理地址的集合。
根據分配時所採用的基本單位不同,可將離散分配的管理方式分為以下三種
段式存儲管理和段頁式存儲管理。其中段頁式存儲管理是前兩種結合的產物。
(1)頁式存儲管理
1)基本原理。將程序的邏輯地址空間劃分為固定大小的頁(page),而物理內存劃分為同樣大小的頁框(pageframe)。程序載入時,可將任意一頁放人內存中任意一個頁框,這些頁框不必連續,從而實現了離散分配。該方法需要CPU的硬體支持,來實現邏輯地址和物理地址之間的映射。在頁式存儲管理方式中地址結構由兩部構成,前一部分是頁號,後一部分為頁內地址,如圖4-2所示。
這種管理方式的優點是,沒有外碎片,每個內碎片不超過頁大比前面所討論的幾種管理方式的最大進步是,一個程序不必連續存放。這樣就便於改變程序佔用空間的大小(主要指隨著程序運行,動態生成的數據增多,所要求的地址空間相應增長)。缺點是仍舊要求程序全部裝入內存,沒有足夠的內存,程序就不能執行。
2)頁式管理的數據結構。在頁式系統中進程建立時,操作系統為進程中所有的頁分配頁框。當進程撤銷時收回所有分配給它的頁框。在程序的運行期間,如果允許進程動態地申請空間,操作系統還要為進程申請的空間分配物理頁框。操作系統為了完成這些功能,必須記錄系統內存中
實際的頁框使用情況。操作系統還要在進程切換時,正確地切換兩個不同的進程地址空間到物理內存空間的映射。這就要求操作系統要記錄每個進程頁表的相關信息。為了完成上述的功能,—個頁式系統中,一般要採用如下的數據結構。
進程頁表:完成邏輯頁號(本進程的地址空間)到物理頁面號(實際內存空間)的映射。
每個進程有一個頁表,描述該進程佔用的物理頁面及邏輯排列順序。
物理頁面表:整個系統有一個物理頁面表,描述物理內存空間的分配使用狀況,其數據結構可採用位示圖和空閑頁鏈表。
請求表:整個系統有一個請求表,描述系統內各個進程頁表的位置和大小,用於地址轉換也可以結合到各進程的PCB(進程式控制制塊)里。
3)頁式管理地址變換
在頁式系統中,指令所給出的地址分為兩部分:邏輯頁號和頁內地址。CPU中的內存管理單元(MMU)按邏輯頁號通過查進程頁表得到物理頁框號,將物理頁框號與頁內地址相加形成物理地址(見圖4-3)。上述過程通常由處理器的硬體直接完成,不需要軟體參與。通常,操作系統只需在進程切換時,把進程頁表的首地址裝入處理器特定的寄存器中即可。一般來說,頁表存儲在主存之中。這樣處理器每訪問一個在內存中的操作數,就要訪問兩次內存。第一次用來查找頁表將操作數的邏輯地址變換為物理地址;第二次完成真正的讀寫操作。這樣做時間上耗費嚴重。為縮短查找時間,可以將頁表從內存裝入CPU內部的關聯存儲器(例如,快表)中,實現按內容查找。此時的地址變換過程是:在CPU給出有效地址後,由地址變換機構自動將頁號送人快表,並將此頁號與快表中的所有頁號進行比較,而且這種比較是同時進行的。若其中有與此相匹配的頁號,表示要訪問的頁的頁表項在快表中。於是可直接讀出該頁所對應的物理頁號,這樣就無需訪問內存中的頁表。由於關聯存儲器的訪問速度比內存的訪問速度快得多。
(2)段式存儲管理
1)基本原理。
在段式存儲管理中,將程序的地址空間劃分為若干個段(segment),這樣每個進程有一個二維的地址空間。在前面所介紹的動態分區分配方式中,系統為整個進程分配一個連續的內存空間。而在段式存儲管理系統中,則為每個段分配一個連續的分區,而進程中的各個段可以不連續地存放在內存的不同分區中。程序載入時,操作系統為所有段分配其所需內存,這些段不必連續,物理內存的管理採用動態分區的管理方法。在為某個段分配物理內存時,可以採用首先適配法、下次適配法、最佳適配法等方法。在回收某個段所佔用的空間時,要注意將收回的空間與其相鄰的空間合並。段式存儲管理也需要硬體支持,實現邏輯地址到物理地址的映射。程序通過分段劃分為多個模塊,如代碼段、數據段、共享段。這樣做的優點是:可以分別編寫和編譯源程序的一個文件,並且可以針對不同類型的段採取不同的保護,也可以按段為單位來進行共享。總的來說,段式存儲管理的優點是:沒有內碎片,外碎片可以通過內存緊縮來消除;便於實現內存共享。缺點與頁式存儲管理的缺點相同,進程必須全部裝入內存。
2)段式管理的數據結構。
為了實現段式管理,操作系統需要如下的數據結構來實現進程的地址空間到物理內存空間的映射,並跟蹤物理內存的使用情況,以便在裝入新的段的時候,合理地分配內存空間。
·進程段表:描述組成進程地址空間的各段,可以是指向系統段表中表項的索引。每段有段基址(baseaddress)。
·系統段表:系統所有佔用段。
·空閑段表:內存中所有空閑段,可以結合到系統段表中。
3)段式管理的地址變換。
在段式管理系統中,整個進程的地址空間是二維的,即其邏輯地址由段號和段內地址兩部分組成。為了完成進程邏輯地址到物理地址的映射,處理器會查找內存中的段表,由段號得到段的首地址,加上段內地址,得到實際的物理地址(見圖4—4)。這個過程也是由處理器的硬體直接完成的,操作系統只需在進程切換時,將進程段表的首地址裝入處理器的特定寄存器當中。這個寄存器一般被稱作段表地址寄存器。
4.頁式和段式系統的區別
頁式和段式系統有許多相似之處。比如,兩者都採用離散分配方式,且都通過地址映射機構來實現地址變換。但概念上兩者也有很多區別,主要表現在:
·頁是信息的物理單位,分頁是為了實現離散分配方式,以減少內存的外零頭,提高內存的利用率。或者說,分頁僅僅是由於系統管理的需要,而不是用戶的需要。段是信息的邏輯單位,它含有一組其意義相對完整的信息。分段的目的是為了更好地滿足用戶的需要。
·頁的大小固定且由系統決定,把邏輯地址劃分為頁號和頁內地址兩部分,是由機器硬體實現的。段的長度不固定,且決定於用戶所編寫的程序,通常由編譯系統在對源程序進行編譯時根據信息的性質來劃分。
·頁式系統地址空間是一維的,即單一的線性地址空間,程序員只需利用一個標識符,即可表示一個地址。分段的作業地址空間是二維的,程序員在標識一個地址時,既需給出段名,又需給出段內地址。
原理作業10. 頁式存儲管理和段式存儲管理的工作原理特點、特點
及優劣。
答:頁式管理的基本思想是:為了更好地利用分區存儲管理中
所產生的"零頭"問題,允許把一個作業存放在不連續的內存塊中,
又可以連續運行,它允許只調入用戶作業中常用部分,不常用部分
不長期駐留內存,有效提高了內存的利用率。
頁式存儲管理的工作原理:
A、劃分實頁:將物理內存劃分成位置固定、大小相同的"塊"(實頁
面)。
B、劃分虛頁:將用戶邏輯地址空間也分成同樣大小的頁面,成為虛
擬空間的虛頁面。
C、建立頁表:有時稱為頁面表或頁面映射表(PMT)。每個作業一
張,按虛頁號進行登記,其基本的內容有特徵位(表示該頁是否
在內存、實頁號以及對應外存的地址。
D、地址變換:將虛頁面的邏輯地址轉化為實頁面的物理地址,在程
序執行時改變為物理地址,屬於作業的動態重定位,一般由地址
轉換機構(硬體)完成。
特點:
允許一個作業存放在不連續的內存塊中而又能保證作業連續得以運行
,既不需要移動內存中的信息,又可較好地解決零頭。
優點:
a、不要求作業存放在連續的內存塊中,有效地解決零頭。
b、允許用戶作業不是一次集中裝入內存而是根據需要調入,作業中
不常用部分不長期駐留內存,而本次運行的不用部分根本就不裝
入內存。
c、提供了虛存,使用戶作業地址空間不再受內存可用空間大小的限
制。
缺點:
a、頁式管理在內存的共享和保護方面還欠完善。
b、頁面大小相同,位置不能動態增加。
c、往往需要多次缺頁中斷才能把所需的信息完整地調入內存。
段式存儲管理的基本思想是:把程序按內容或過程(函數)關系
分成段,每段有自己的名字。一個用戶作業或進程所包含的段對應於
一個二維線性虛擬空間,也就是一個二維虛擬存儲器。段式管理程序
以段為單位分配內存,然後通過地址映射機構把段式虛擬存儲地址轉
化為內存中的實際地址。和頁式管理一樣,段式管理也採用只把那些
經常訪問的段駐留內存,而把那些在將來一段時間內不被訪問的段放
在外存,待需要時自動調入內存的方法實現二維虛擬存儲器。按照作
業的邏輯單位--段,來分配內存,適合程序的邏輯結構,方便用戶設
計程序。
段式存儲管理的工作原理:
A、採用二維地址空間,如段號(S)、頁號(P)和頁內單元號(D);
B、系統建兩張表格每一作業一張段表,每一段建立一張頁表,段表
指出該段的頁表在內存中的位置;
C、地址變換機構類似頁式機制,只是前面增加一項段號。
特點:
a、每一段分成若干頁,再按頁式管理,頁間不要求連續;
b、用分段方法分配管理作業,用分頁方法分配管理內存;
優點:
便於段的共享和保護、段的動態增長以及動態連接。
缺點:
為了消除零頭和允許段的動態增長,需要花費CPU的大量時間在內存
中移動作業的分段,而且段的大小也給外存管理帶來困難。
⑶ 在一個虛擬存儲器中,主存容量400B,劃分為4頁,採用LRU 頁面置換演算法
(1)0 ,2,1,6,2,4,4,1,0,1
(2)LRU演算法
0 ,2,1,6,2,4,4,1,0,1
0: 0, 0, 0,0,0 ,4,4,4,4,4
1: 2,2,2, 2, 2,2,2, 2,2
2: 1,1,1, 1,1, 1 ,1, 1
3 : 6,6, 6, 6, 6, 0, 0
(3)由上可知:虛地址流對應的實頁面依次為:0,1,2,3,1,0,0,2,3,2
則實地址為:0*100+22=22,1*100+14=114,2*100+46=246,3*100+18=318,等等
(4)命中率:1-6/10=0.4
(5)書上有詳解
⑷ 現有一請求分頁的虛擬存儲器,內存最多容納4個頁面,對於下面的引用串:1、2、3、4、5、3、4、1、6、7、8
答案 14 10 8
⑸ 為什麼80C51單片機存儲器在物理結構上可分4個空間,在邏輯上只有3個
所謂的四個空間是:片內程序存儲區、片外程序存儲區、片內數據存儲區、片外數據存儲區。
片內程序存儲區和片外程序存儲區是統一編址的,所以在邏輯上只有三個:
片內數據存儲區、片外數據存儲區和片內外統一編址的程序存儲區。
⑹ 請教下,操作系統里分頁存儲的頁框和頁號有什麼區別啊
假設你要運行一個4MB的游戲,為了方便易懂,不妨把這個游戲叫做掃雷。
現在是2021年,早已是大內存時代,16GB的內存已經司空見慣。
但是現在我們假設我們的內存並不大,只有16MB。
你的游戲本來存儲在硬碟中,操作系統劃分了一部分硬碟中的區域,假設是16MB,和內存構成了一個看起來比較大的存儲器,總共32MB。
但其實你沒這么大的空間。
操作系統按照事先定好的頁面大小(這里假設是1MB)把你的游戲分割成了4MB/1MB=4頁。
未調入內存中運行,在虛擬存儲系統中,你總共有4頁,這4頁,就叫頁號。
操作系統把真正的內存空間,16MB,也按頁劃分,總共有16頁,現在可以分給你的掃雷用的,有2頁。
你的掃雷運行時,並不是時時刻刻都需要4MB的完整數據,假如你正在玩第一關,你就只需要前面的數據。
按照這樣的思想,就可以先調入你剛剛分好的4頁中的前2頁,進入內存,這樣你的掃雷就可以跑了,也不需要佔據太多空間,導致別的程序用不了。
而被調入的2頁,佔了真正內存中的2頁,內存中的頁,就叫頁框。
當你需要用到本來4頁中的第2頁中的某個數據時,他已經在內存中了,你可以隨時用。
但如果你要用第3頁的里的某個數據,他不在內存,只能先從硬碟中調入第3頁到內存中分配給你的2個頁框中的某一個,再訪問這個數據。
這個就叫缺頁。
為了區分說的頁是內存中的頁,還是虛擬存儲系統中的頁,就有了兩個叫法。
那為什麼要這么干呢?因為你需要同時做很多事情。
你需要玩掃雷,還要掛著迅雷,同時上著QQ聊天,可能還用著網易雲聽歌。
如果掃雷、迅雷、QQ、網易雲全部調入主存,很多數據是用不著的。
比如你在玩掃雷第三關,你並不需要第一關的數據。
那全都調入,就很浪費內存。需要調入,不需要調出,這樣,你的程序能跑,而且還能跑很多個。
你的存儲器看起來比原來大了,因為你本來的內存是無法同時跑這4個程序,現在靠著這個假的存儲器就可以了,這個所謂假的存儲器就叫虛擬存儲器。
⑺ 分頁式存儲器的地址分成頁號和頁內地址兩部分,但它仍是線性地址.為什麼
分頁式存儲管理的基本原理:採用分頁存儲器允許把一個作業存放到若干不相鄰的分區中,既可免去移動信息的工作,又可盡量減少主存的碎片。分頁式存儲管理的基本原理如下: 1、 頁框:物理地址分成大小相等的許多區,每個區稱為一塊
⑻ 計算機組成原理——虛擬存儲器
(1)程序員在比實際主存大得多的邏輯地址空間中編寫程序
(2)程序執行時,把當前需要的程序段和數據塊掉入主存,其他暫不使用的放在磁碟上
(3)執行指令時,通過硬體將邏輯地址轉化為物理地址。虛擬地址高位為虛頁號,低位為頁內偏移地址
(4)當程序發生數據訪問或程序訪問失效(缺頁時),由操作系統把信息從磁碟調入主存中
(1)基本思想:
內存被分成固定長度且長度較小的存儲塊(頁框,實頁,物理頁)
每個進程也被劃分為固定長度的程序塊(頁,虛頁,邏輯頁)
通過頁表,實現邏輯地址想物理地址的轉化
(2)邏輯地址
程序中指令所使用的地址(進程所在地址空間)
(3)物理地址
存放指令或數據的實際內存地址
(1)與「cache-主存」層次相比,頁大小遠比cache的行大小要大(windows中的頁位4k)
(2)採用全相聯映射方式:磁碟中的任意一個頁能用射到內存中的任意一個頁
因為缺頁導致中斷時,操作系統從磁碟拿數據通常要耗費幾百萬個時鍾周期。增大頁大小,可以減少缺頁中斷
(3)為什麼讓軟體處理「缺頁」
因為訪問磁碟需要好粉幾百萬個時鍾周期,硬體即使能立刻把地址打給磁碟,磁碟也不能立即響應
(4)為什麼地址轉換用硬體實現
硬體實現地址轉換可以加快指令的執行速度
(5)為什麼頁寫會策略採用write back
避免頻繁的慢速磁碟訪問
頁表的首地址放在基址寄存器。採用基址定址方式
每個頁表項前面有一個虛頁號:從0開始遞增的序號。頁表項又分為幾個結構:
(1)裝入位:該頁是否在內存中
(2)修改位:該也在內存中是否被修改
(3)替換控制位:用於clock演算法
(4)其他
(5)實頁號(8進制)
(1)一次磁碟引用需要訪問幾次主存?2次,一次查頁表,一次查物理地址。於是,把經常查的頁表放到cache中。這種在cache頁表項組成的頁表稱為TLB(Translation Lookside Buffer)
(2)TLB的頁表結構:tag + 主存中的頁表項
當採用全相連映射時,tag為頁表項前面的虛頁號。需要把tag和虛頁號一一比較
當採用組相聯映射時,tag被分為tag+index,虛頁號的高位為tag,虛頁號的低位為index,做組內索引(屬於組內第幾行)
1.段式存儲是根據程序邏輯,給程序分段。使得每段大小不同。這種虛擬地址劃分方法適合程序設計
2.段式存儲的虛擬地址由段號和段內偏移地址組成。段式虛擬存儲器到物理地址的映射通過段表實現
3.段式虛擬存儲會造成空頁
1.段頁式虛擬存儲,先把程序按照邏輯分成段,再把每段分成固定大小的頁。
2.程序對主存的調入調出是按照頁面進行的;但他有可以根據段實現共享和保護
3.缺點是段頁式虛擬地址轉換成物理地址需要查詢2個表:段表和頁表。段表找到相應頁表的位置,頁表找到想也頁的位置
4.段頁式細膩地址的結構可以為以下形式:
程序地址: 用戶號(進程pid) | 段號 | 頁號 | 頁內偏移地址
(1)某計算機的cache塊工16塊,採用二路組相聯映射方式,每個主存塊大小為32位元組,按照位元組編制。則主存129號單元的主存塊硬裝如刀cache的組號是:(C)A、0 B、2 C、4 D、6
解:二路組相聯,所以每組2塊,共有16/2=8組,所以組號佔3位。
每塊32位元組,所以塊內地址佔5位。
129轉化為二進制:1000 0001:前3位為組號,100:=4
(2)假設用若干個2K4位的晶元組成一個8K8位的存儲器,則地址0B1FH所在晶元的最小地址為:
解:用2片組成一行,共4行,所以片選地址佔2位。片內地址有2k=211,所以佔11位
0B1FH:000|0 1|011 0001 1111 這三段為前綴,片選地址,片內地址。
該片晶元的最小地址是片內地址全0:000|0 1|000 0000 0000 = 0800H
(3)某計算機的主存地址空間大小為256MB,按位元組編址,指令cache和數據cache分離,均有8個cache行,每行大小為64B,數據cache採用直接映射方式,現有兩個程序A,B對數組int a[256][256]進行遍歷,程序A按行遍歷,程序B按列遍歷。假定int類型數據用32位補碼表示,數組a按行優先方式存儲,其地址為320(十進制)。
問:(1) 若不考慮cache一致性維護和替換演算法所需的控制位,則數據cache的總容量佔多少?
(2) 數組元素a[0][31]和a[1][1]各自所在主存塊對應的cache行號分別為多少(cache從0行開始)?
(3)程序A和B的數據訪問命中率各自為多少?哪個程序的執行時間更短?
解:(1) 因為cache的總容量是cache每行的數據存儲大小+tag位+數據是否有效位+其他一致性控制位。
主存地址空間256MB,佔28位。直接映射方式,8行,行號佔3位。每行64B,所以塊內地址佔6位,因此,tag佔28-3-6=19位
每行有一個數據有效位。因此,cache共(19+1+648)8 = 532位元組
(2) 因為int類型佔32位,所以一個int佔4B。a[0][31] = 320 + 314 = 444 a1 = 320 + 4(256+1) = 1348。
塊內地址佔6位,直接映射下行號佔3位,因此444 = 110 | 111100,所以行號為6
1348 = 10 | 101 | 000100,所以行號為5
(3) 因為1行cache佔64B,每個int數佔4B,所以一行有16個數。第一個數會因cache缺失而不命中,然後調入cache。,使得後面的15個int訪問全部命中。所以命中率為1516 對於程序B,每次調入16個數,小於數組每行的128個元素,因此每次都不會命中,命中率為0
⑼ 基本分頁存儲管理
閱讀前請先閱讀 內存管理基礎 。從本文開始就介紹不連續分配的幾種方式,本文主要介紹基本分頁存儲管理。
假設進程A的大小為23MB,但是每個分區的大小隻有10MB,如果進程只能佔用一個分區,顯然是放不下的。
解決思路:如果允許進程佔用多個分區,那麼可以把進程拆分成 10MB + 10MB + 3MB三個部分 ,再把這三個部分別放在三個分區中(這些分區不要求連續).....
將內存空間分為一個個大小相等的分區(如每個分區4KB,每個分區就是一個 「頁框」 ,或稱 「內存塊」 、 「物理塊」 。每個頁框有一個編號,即 「頁框號」 ,或 「內存塊號」 、 「物理塊號」 ,頁框號 從0開始 )。將用戶進程的地址空間也分為與頁框大小相等的一個個區域,稱為 頁面 或 頁 。頁框的大小不能太大,否則可能會產生過大的內存碎片。
操作系統 以頁框為單位為各個進程分配內存空間。 進程的每個頁面分別放入一個頁框中,即進程的 頁面和內存的頁框 有 一一對應 的關系。
進程分頁後,進程的各個頁面可以放在不連續的頁框中,所以如何實現邏輯地址到物理的地址的轉換?
如下圖,將下面的進程分頁,假設每頁大小為50B,那麼就分為4個頁面。
手動計算方法:
頁號 = 邏輯地址 / 頁面長度(取整數部分)。
頁內偏移量 = 邏輯地址 % 頁面長度
頁面在內存中的起始位置 :操作系統需要用某種數據結構記錄進程各個頁面的起始位置。
對於計算機,通常將 頁面的大小劃分為2的整數次冪 。假設用32個二進制位表示邏輯地址,頁面大小為取2 12 B = 4096B = 4KB。
如邏輯地址2,用二進製表示00000000 00000000 0000 0000 00000010 ,前24位二進制對應的十進制值就是邏輯地址2對應的頁號,即0號頁,而後12二進制位對應的十進制值就是偏移量。如果0號頁在內存中的起始地址為X,那麼邏輯地址2對應的物理地址就是 X + 2.
同理,邏輯地址4097,用二進製表示00000000 00000000 0001 0000 00000001 ,前24位二進制對應的十進制值就是邏輯地址4097對應的頁號,即1號頁,而後12二進制位對應的十進制值就是偏移量。如果0號頁在內存中的起始地址為Y,那麼邏輯地址4097對應的物理地址就是 Y + 1.
結論: 如果每個頁面的大小為2 k B,用二進製表示邏輯地址,則末尾的K位表示頁內偏移量,其餘部分就是頁號。
因此,如果讓 每個頁面的大小為2的整數次冪, 計算機就可以很方便的得出一個邏輯地址對應的頁號和頁內偏移量。
如果一個頁面的大小為2KB,那分頁存儲管理的邏輯地址結構為:
地址結構包括兩個部分:前一個部分表示頁號,後一個部分表示頁內偏移量W。
在知道如何計算頁號和偏移量後,要計算實際的物理地址,還需要知道頁號在內存中的起始地址,如何知道每個頁面在內存中存放的位置——操作系統要為 每個進程建立一張頁表。
按照之前的方法計算出邏輯地址所對應的頁號N,然後根據頁表區查詢實際的內存塊號M,由於每個內存塊號的大小都是相等的,所以實際地址 = M * 內存塊大小 + 偏移量。
在實際上,頁表中是沒有頁號的,那怎麼找到實際對應的內存塊號呢?
假設某系統物理內存大小為4GB,頁面大小為4KB,則每個頁表項至少應該佔用多少位元組?
各頁表項會 按順序連續地 存放在內存中,如果該頁表在內存中存放的地址為X,則M號頁對應的頁表項存放的地址為:X + M * 3B
因此,頁表的頁號可以是隱含的。只需要知道 頁表存放的起始地址 和 頁表項長度 ,即可找到各個頁號對應的頁表項存放的位置,找到位置後就可以讀取該位置的值,即實際內存塊號。
舉個例子,如果按照邏輯地址計算出了偏移量為20,頁號為1,頁表中的頁號是隱藏的,那麼根據頁表在內存中的起始地址20(假設的值),以及頁表項長度3B,那麼頁號為1所對應的實際內存塊號的值所在的地址就是:20 + 3 * 1 = 23的位置,然後在該位置的值,該值就是實際內存塊號,如果是4的話,那麼實際地址就是: 4 * 頁面大小(4096B) + 20 = 16404。
基本地址變換結構可以藉助進程的頁表將邏輯地址轉換為物理地址。
通常在系統中設置一個 頁表寄存器(PTR Page-Table Register) ,存放 頁表在內存中起始地址F 和 頁表長度M 。
進程在未執行時,頁表的起址和頁表長度放在 進程式控制制塊(PCB)中 ,當進程被調度時,操作系統內核會把它們放在頁表寄存器中。
邏輯地址到物理地址變換的過程:
比較頁表長度,頁表項長度和頁面大小三個概念:
在分頁存儲管理(頁式管理)系統中,只要確定了每個頁面的大小,邏輯地址結構就確定了。因此, 頁式管理中地址是一維的。 即只要給出一個邏輯地址,系統就可以自動算出頁號、頁內偏移量兩個部分,並不需要顯示告系統這個邏輯地址中,頁內偏移量佔多少位。
基本地址變換結構需要訪問兩次內存: 第一次訪問內存查找頁表;第二次訪問物理內存對應的內存單元。
對於上圖,會很頻繁地訪問10號塊中的指令、23號塊。
時間局部性 :如果執行了程序中的某條指令,那麼不久後這條指令很有可能再次執行:如果某個數據被訪問過,不久之後該數據很有可能再次被訪問。(因此程序中存在大量循環)。
空間局限性 :一旦程序訪問了某個存儲單元,在不久之後,其附近的存儲單元也很有可能被訪問。(因為很多數據在內存中都是連續存放的。如上面的數組,每次循環一次都會訪問鄰近的下一個元素地址)。
在基本地址變換機構中,每次訪問一個邏輯地址,都需要查詢內幕才能中的頁表。由於局部性原理,可能連續很多次查找到的都是一個頁表項。既然如此,就可以利用這個特性減少訪問頁表的次數——快表。
快表 ,又稱 聯想寄存器(TLB) ,是一種 訪問速度比內存快很多 的高速緩沖存儲器,用來存儲當前訪問的若干頁表項,以加速地址變換的過程。與此對應,內存中的頁表常稱為 慢表。
快表的地址包換過程:
(1) CPU給出邏輯地址,由某個硬體算得頁號、頁內偏移量,將頁號與快表中的所有頁號進行比較。
(2) 如果找到匹配的頁號,說明要訪問的頁表項在快表中有副本,則直接從中取出該頁對應的內存塊號,再根據內存塊號中與頁內偏移量算地物理地址。最後訪問該物理地址對應的內存單元。因此如果快表命中,則訪問某個邏輯地址只需 一次 訪問內存即可。
(3) 如果沒有找到匹配的頁號,則就需要訪問頁表,需要兩次訪問內存,在第一次訪問內存查詢得到頁號後,需要將頁號添加到快表中,以便後面再次被訪問。如果快表已滿,則必須按照一定的演算法對舊的頁表項進行替換。
由於查詢快表比查詢頁表的速度快很多,因此只要快表命中,就可以節省很多時間。因為局部性原理,一般來說快表的命中率可以達到90%以上。
⑽ 2010年微機原理與介面技術試題及答案
微型計算機原理與介面技術2006年考試題及答案B
一. 選擇(每題1分)
下列各題四個選擇項中,只有一個選項是正確的。請將正確選項號寫在相應空位置上。
1.系統匯流排又稱為_______,這是指模塊式微處理機機箱內的底版匯流排。
1)主板匯流排 2)內匯流排 3)片內匯流排 4)局部匯流排
2.目前市場上出售的台式PC機中Pentium 4微處理器的主頻一般為
1) 0.5GHz左右 2)1GHz左右 3)3GHz左右 4)5GHz以上
3. .按諾依曼結構理論,下面哪個不是計算機組成部分:
1) 運算器2)控制器3)列印機4)復印機
4.程序設計人員不能直接使用的寄存器是__________
1) 通用寄存器2)指令指針寄存器3)標志寄存器4)段寄存器
5. Pentium微處理器的結構之所以稱為超標量結構,是因為下面哪一種原因?
1)Pentium微處理器不僅能進行32位運算,也能進行64位運算
2)Pentium微處理器內部含有多條指令流水線和多個執行部件
3)數據傳輸速度很快,每個匯流排周期最高能傳送4個64位數據
4)微處理器晶元內部集成的晶體管數超過100萬個,功耗很大
6.在任何時刻,存儲器中會有一個程序是現役的,每一個現役程序最多可以使用___________
① 3個段② 4個段③ 5個段④ 6個段
7.Pentium微處理機配備了5個控制寄存器。其中沒有定義,而供將來使用的是__________
1)CR1 2) CR2 3)CR3 4)CR4
8.Pentium地址匯流排是32位的,它的內部數據匯流排的寬度是:
1)16位 2)32位 3)64位 4)36位
9.Pentium的寄存器可分為浮點寄存器、系統級寄存器等___大類。
1) 2 2) 3 3) 4 4) 5
10.屬於系統級寄存器的是________。
1) 系統地址寄存器和控制寄存器2) 通用寄存器和系統地址寄存器
3) 通用寄存器和控制寄存器4) 系統地址寄存器和段寄存器
11. 下面是關於CPU與 Cache 之間關系的描述,其中正確的一條描述是:
1)Cache中存放的是主存儲器中一部分信息的映像
2)用戶可以直接訪問Cache
3)片內Cache要比二級Cache的容量大得多
4)二級Cache要比片內Cache的速度快得多
12. 在保護方式下,段寄存器內存放的是_________。
1) 段基址 2) 段選擇符 3) 段描述符 4) 段描述符表基址
13. 通常,人們把用符號表示計算機指令的語言稱為——————。
1) 機器語言 2) 匯編語言 3) 模擬語言 4) 模擬語言
14. Pentium系統之所以為超標量計算機是因為採用了___________。
1) 並行流水線結構 2) 數據與指令分離的Cache結構
3) 轉移預測技術 4 ) 提高了時鍾頻率
15.Pentium系統內約定,一個字的寬度是___。
1) 1位元組 2) 2位元組 3) 4位元組 4) 8位元組
16.Pentium用來作為堆棧指針的寄存器是:
1)EIP寄存器 2)EBP 寄存器 3)ESP寄存器 4)EDI寄存器
17.Pentium微處理機可訪問的物理存儲器的范圍是__________。
1) 4GB 2) 64TB 3) 4MB 4) 16GB
18.存儲管理是由分段存儲管理和__________組成。
1)分段部件 2)分頁部件 3)分頁存儲管理 4)虛擬管理
19. Pentium微處理機的分頁存儲管理系統把頁的大小定義成__________。
1) 16KB 2) 4MB 3)4KB 4) 4GB
20.經分段存儲管理部件分段之後生成的線性地址由__________與12位偏移量組成。
1) 段地址寄存器和10位頁目錄索引 2) 段描述符表和10位頁表索引
3) 10位頁目錄索引和10位頁表索引 4) 10位頁表索引和虛擬地址
21.段選擇符(段寄存器)中請求特權級欄位共__________位。
1)1位 2) 2位 3) 3位 4) 4位
22.多段存儲管理方式中,每一個程序都擁有它自己的__________,以及多種屬於它自己的存儲器段。
1) 段描述符 2) 段選擇符 3) 段選擇符和段描述符 4) 段描述符寄存器
23.符合匯編語言變數命名規則的變數名是__________。
1) MOV 2) CX 3)DATA 4)LPT1
24. Pentium微處理機是———微處理機
1)16位。2)32位。3)64位。4)准64位。
25.Pentium 微處理機配置的超標量執行機構允許————以並行方式執行。
1)一條指令 2)兩條指令 3)三條指令 4)四條指令
26.Pentium標志寄存器上各標志位信息反映的是———。
1)寄存器堆棧中每一寄存器中的內容。
2)Pentium微處理機的狀態信息。
3)Cache操作信息。
4)存儲器狀態信息。
27.當前,在Pentium機中,常用來在系統中的各部件之間進行高速數據傳輸操作的系統匯流排是:
1)ISA 2)EISA 3)PCI 4)VESA
28.下面關於微處理器的敘述中,錯誤的是
1)微處理器是用單片超大規模集成電路製成的具有運算和控制功能的處理器
2)一台計算機的CPU可能由1個、2個或多個微處理器組成
3)日常使用的PC機只有一個微處理器,它就是中央處理器
4)目前巨型計算機的CPU也由微處理器組成
29.Pentium機中的寄存器、Cache、主存儲器及輔存儲器,其存取速度從高到低的順序是:
1) 主存儲器, Cache,寄存器,輔存 2)快存,主存儲器,寄存器,輔存
3) 寄存器, Cache,主存儲器,輔存 4)寄存器,主存儲器,Cache,輔存
30.用MB(兆位元組)作為PC機主存容量的計量單位,這里1MB等於多少位元組?
1) 210 2) 220 3) 230 4) 240
31.Pentium 微處理器在保護模式下對存儲器進行訪問時,段寄存器提供的是
1) 段選擇符 2) 段基址
3) 段描述符 4) 偏移地址
32.下面是關於PCI匯流排的敘述,其中錯誤的是
1) PCI支持即插即用功能
2) PCI的地址線與數據線是復用的
3) PCI匯流排是一個16位寬的匯流排
4) PCI是一種獨立於處理器的匯流排標准,可以支持多種處理器
33.Pentium微處理器在實施分頁存儲管理時,其最小頁面的大小是
1) 256B 2) 4KB 3) 1MB 4) 4MB
34.下面關於匯流排的敘述中,錯誤的是
1) 匯流排的位寬指的是匯流排能同時傳送的數據位數
2)匯流排標準是指匯流排傳送信息時應遵守的一些協議與規范
3) Pentium機中的PCI匯流排不支持成組傳送方式
4) 匯流排的寬頻是指每秒鍾匯流排上可傳送的數據量
二.選擇填空(每空1分)
1.Pentium微處理機的段寄存器(也稱段選擇符)是———位的寄存器,用它可選擇
----------------個段的邏輯地址。
(1)32位(2)16位(3)8位(4)64位
(5)16KB(6)64TB(7)4GB (8)3.2GB
2.. Pentium 微處理機實現的是———和———兩級存儲管理。
(1)主存儲器(2)磁碟(3)分段管理(4)Cache
(5)分頁管理(6)二級Cache
3. 在保護方式下,Pentium微處理機可以訪問———位元組虛擬存儲器地址空間和
———————位元組實地址存儲器空間。
(1)256KB(2)512KB(3)1MB(4)512MB(5)1GB
(6)4GB(7)21GB(8)32GB(9) 1TB(10) 32TB
(11) 64TB(12) 16TB 註:GB = 千兆TB = 兆兆
4.Pentium 微處理機段的轉換過程是,由系統給出的地址以及程序給出的地址都是————,它是
由————和————組成。
(1)實地址(2)邏輯地址(3)一個32位的基地址(4)一個16位的
段選擇符(5)一個只能在段內使用的32位的偏移量(6)20位的段的界限
5.Pentium 微處理機共配備有————段寄存器,它們都是————的寄存器,它們的作用是用來——。
(1) 8個(2) 16個(3)6個(4) 32位的(5)16位
(6)從寄存器中選出所需的地址(7)從段描述符表中選出所需的段描述符
(8)從段描述符中選出32位的基地址(9)從段描述符中選出段的界限。
6.Pentium 微處理機浮點部件寄存器堆棧是由————個、————位的寄存器構成。
(1) 16個(2)32個(3)8個(4)3個(5)16位
(6)32位(7)64位(8)80位
7.Pentium 微處理機浮點部件的狀態字寄存器內容反映的是————。
(1)浮點部件的全部狀態和環境(2)浮點部件的數值(3)浮點部件的總
線狀態(4)Pentium 微處理機的狀態和環境
8.匯流排是一種————,是由系統中各部件所共享,在————的控制之下將信息准確地傳
送給————。
(1)公共信號(2)數據通道(3)專用地信號連線(4)主控設備
(5)中斷源(6)從屬設備(7)信號源(8)存儲器
(9)寄存器
三. 填空題:(每空1.分)
1.目前微型計算機的基本工作原理是__________的原理,其基本結構屬於馮·諾依曼結構。
2.Pentium的指令指針寄存器EIP中存放的是____________________。
3.運算器中進行的各種算術運算操作歸結為__________兩種最基本的操作。
4.Pentium微處理機規定了4個寄存器用於控制分段存儲器管理中的數據結構位置。其中GDTR和IDTR稱為___寄存器,LDTR和TR稱為__________寄存器。
5.中斷包括__________INTR和__________NMI。
6. 指出下列指令語句中源操作數是__________;目的操作數是__________。
MOV AX,0CFH
7.假設BX寄存器上的內容為0100H,下列指令執行後AX寄存器的內容分別是什麼?
MOV AX, 1200H;(AX)=________
MOV AX, BX;(AX)=__________
ADD AX, BX;(AX)=__________
8.匯流排操作周期的4個操作階段分別是————,————,——————,————。
四 . 判斷題(對:√;錯:×)(每題1分)
Pentium系統屬於RISC類微處理機。
RISC類的微處理機,為了減少訪問內存的次數而增加寄存器的數目。
Pentium數據寄存器可以存放8、16、32位二進制數據。
Pentium系統的段寄存器為32位寄存器。
Pentium的V流水線和U流水線都可執行任何指令。
對一個段進行訪問,必須將這個段的描述符裝入到段寄存器中。
Pentium段描述符是由8個位元組共64個二進制位組成。
Pentium分段用於程序保護,分頁用於把程序映射到大小固定的虛擬頁上。
Pentium在進行分頁轉換中,頁目錄項的高20位頁框地址是與物理存儲器中的物理頁是相對應的。
線性地址是同一標準的不分段的地址空間內的32位地址。
利用索引欄位可以從擁有210個段描述符的段描述符表中選出任何一個段描述符。
Cache的命中率是指命中Cache的次數與訪問Cache的次數之比。
當程序有高度的順序性時,Cache更為有效。
Pentium處理機是32位微處理機,因此其內部數據匯流排是32位的。
RISC類微處理機採用大量通用寄存器,從根本上提高了CPU的運算速度,尤其適於在多任務處理的環境。
系統地址寄存器只能在保護方式下使用,所以又稱其為保護方式寄存器。
異常是指微處理機檢測到的異常情況,異常又進一步地劃分為故障,自陷和異常終止三種。
運算器是存儲信息的部件,是寄存器的一種。
通常,微處理機的控制部件是由程序計數器、指令寄存器、指令解碼器、時序部件等組成。
Pentium微處理機配備有5個32位的控制寄存器:CR0、CR1、CR2、CR3、CR4。保存著跟任務有關的適合於所有任務的機器狀態。
在Pentium微處理機的指令指針寄存器EIP內存放著下一條要執行的指令
在全局描述符表 GDT(Global Descriptor Table)中存放供所有程序共用的段描述符。
五.簡答題
1.什麼是超標量技術?試說明超標量技術在Pentium上是怎樣實現的?(3分)
2.試簡單說明Pentium將邏輯地址轉換成物理地址的過程。(3分)
3.試簡單說明Pentium浮點部件的流水線操作8個操作步驟及操作過程。(4分)
一.答案:
1.(2)2 .(3)3. (4)4. (3)5. (2)
6.(4)7. (1)8.(3) 9 .3) 10 .1)
11 .(1) 12.2) 13.2) 14.1) 15.2)
16.3) 17 .1) 18. 3) 19.3) 20.3)
21.2) 22.1) 23.4) 24.2) 25.2)
26.2) 27.3) 28.1) 29.3) 30.2)
31 1) 32 3) 33 2) 34 3)
二.答案:
1. 2) ,5) 2.3), 5) 順序可以換
3.11) ,6) 4. 2),4) ,5)
5.3) 5) 7) 6. 3),8)
7. 1) 8.2),4),6)
三.答案
存儲程序控制
當前代碼段內下一條要執行指令的偏移量
相加和移位
全局描述符表和中斷描述符表局部描述符表和任務狀態
可屏蔽、不可屏蔽中斷
AX 0CFH
1200H 0100H 0200H
匯流排請求和仲裁階段 定址階段 數據傳送階段 結束階段
四.答案:
1. 錯2. 對3. 對4. 錯5. 錯
6. 錯7. 對8. 錯9. 錯10對
11錯 12 對 13錯 14錯 15錯
16對 17對 18錯 19對 20錯
21錯 22對
五.答案
1.什麼是超標量技術?試說明超標量技術在Pentium上是怎樣實現的?(3分)
在一個時鍾周期內同時執行一條以上的指令(或在一個時鍾周期內同時執行2條指令)的技術,稱為超標量技術。
在Pentium上,採用了U流水線和V流水線,從而實現了超標量操作運行。
2.試簡單說明Pentium將邏輯地址轉換成物理地址的過程。(3分)
系統或程序給出的地址都是邏輯地址,經由分段部件,將邏輯地址轉換成線性地址,若不分頁,這個線性地址就是物理地址。
若需要分頁,則再由分頁部件,將線性地址轉換成物理地址。
3.試簡單說明Pentium浮點部件的流水線操作8個操作步驟及操作過程。(4分)
Pentium的浮點部件也採用了流水線操作技術,流水線操作由8個操作步驟組成:
預取PF,首次解碼D1,二次解碼D2,存儲器和寄存器的讀操作EX,
首次執行X1,二次執行X2,寫浮點數WF和出錯報告ER。
其中,預取PF和首次解碼D1與整數流水線中的前兩個操作步驟共用,浮點部件的第3
個操作步驟開始激活浮點指令的執行邏輯,然後執行後5個操作步驟。