當前位置:首頁 » 文件傳輸 » 缺頁中斷需要訪問幾次主存
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

缺頁中斷需要訪問幾次主存

發布時間: 2022-11-18 19:42:07

❶ 假定有4,5個頁塊,應用下面的頁面替換演算法,計算機會出現多少次缺頁中斷

<pre t="code" l="cpp">(1) FIFO
1 2 3 4 1 2 5 1 2 3 4 5
----------------------------------------
1 2 3 4 1 2 5 5 5 3 4 4
1 2 3 4 1 2 2 2 5 3 3 該行是怎麼算出來的?
1 2 3 4 1 1 1 2 5 5 該行是怎麼算出來的?
----------------------------------------
缺頁中斷次數=9
FIFO是這樣的:3個內存塊構成一個隊列,前3個頁面依次入隊(3個缺頁),內存中為3-2-1;
接著要訪問4號頁面,內存中沒有(1個缺頁),按FIFO,1號頁面淘汰,內存中為4-3-2;
接著要訪問1號頁面,內存中沒有(1個缺頁),按FIFO,2號頁面淘汰,內存中為1-4-3;
接著要訪問2號頁面,內存中沒有(1個缺頁),按FIFO,3號頁面淘汰,內存中為2-1-4;
接著要訪問5號頁面,內存中沒有(1個缺頁),按FIFO,4號頁面淘汰,內存中為5-2-1;
接著要訪問1號頁面,內存中有(命中),內存中為5-2-1;
接著要訪問2號頁面,內存中有(命中),內存中為5-2-1;
接著要訪問3號頁面,內存中沒有(1個缺頁),按FIFO,1號頁面淘汰,內存中為3-5-2;
接著要訪問4號頁面,內存中沒有(1個缺頁),按FIFO,2號頁面淘汰,內存中為4-3-5;
接著要訪問5號頁面,內存中有(命中),內存中為4-3-5;
缺頁中斷次數=9 (12次訪問,只有三次命中)
LRU不同於FIFO的地方是,FIFO是先進先出,LRU是最近最少用,如果1個頁面使用了,要調整內存中頁面的順序,如上面的FIFO中:
接著要訪問1號頁面,內存中有(命中),內存中為5-2-1;
在LRU中,則為
接著要訪問1號頁面,內存中有(命中),內存中為1-5-2;

❷ 計算機組成原理——虛擬存儲

(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

❸ 敘述缺頁中斷的處理步驟 以及和一般中斷的區別

一般中斷只需要保護現場然後就直接跳到需及時處理的地方。
缺頁中斷就是要訪問的頁不在主存,需要操作系統將其調入主存後再進行訪問。故缺頁中斷除了保護現場之外,還要判斷內存中是否有足夠的空間存儲所需的頁或段,然後再把所需頁調進來再使用。

❹ 缺頁中斷

malloc()和mmap()等內存分配函數,在分配時 只是建立了進程虛擬地址空間,並沒有分配虛擬內存對應的物理內存。 當進程訪問這些沒有建立映射關系的虛擬內存時,處理器自動觸發一個缺頁異常。

缺頁中斷:在請求分頁系統中,可以通過查詢頁表中的狀態位來確定所要訪問的頁面是否存在於內存中。每當 所要訪問的頁面不在內存時 ,會產生一次缺頁中斷,此時操作系統會根據頁表中的外存地址在外存中找到所缺的一頁,將其調入內存。

缺頁本身是一種中斷,與一般的中斷一樣,需要經過4個處理步驟:

1、保護CPU現場

2、分析中斷原因

3、轉入缺頁中斷處理程序進行處理

4、恢復CPU現場,繼續執行

但是缺頁中斷是由於所要訪問的頁面不存在於內存時,由硬體所產生的一種特殊的中斷,因此,與一般的中斷存在區別:

1、在指令執行期間產生和處理缺頁中斷信號

2、一條指令在執行期間,可能產生多次缺頁中斷

3、缺頁中斷返回是,執行產生中斷的一條指令,而一般的中斷返回是,執行下一條指令。

當訪問一個內存中不存在的頁,並且內存已滿 ,則需要從內存中調出一個頁或將數據送至磁碟對換區,替換一個頁,這種現象叫做缺頁置換。當前操作系統最常採用的缺頁置換演算法如下:

當前最常採用的就是LRU演算法。

do_page_fault是缺頁中斷的核心函數,主要工作交給__do_page_fault處理,然後進行一些異常處理__do_kernel_fault和__do_user_fault。
__do_page_fault查找合適的vma,然後主要工作交給handle_mm_fault;handle_mm_fault的核心又是handle_pte_fault。

handle_pte_fault中根據也是否存在分為兩類:do_fault( 文件映射缺頁中斷 )、do_anonymous_page( 匿名頁面缺頁中斷 )、do_swap_page()和do_wp_page( 寫時復制 )。

❺ 一個計算機操作系統題 有關頁面置換演算法和缺頁中斷的 知道答案但有一句不太明白

100字=2^2 就代表頁內地址是後2位 字地址3位 那麼頁號就是剩下的1位 我是這么理解的 和邏輯地址轉化物理地址的頁號計算一樣

❻ 在頁式存儲管理系統中,當訪問主存中的一條指令或數據時,需要訪問多少次主存段式存儲呢

1)頁式存儲管理中,訪問指令或數據時,首先要訪問內存中的頁表,查找到指令或數據所在頁面對應的頁表項,然後再根據頁表項查找訪問指令或數據所在的內存頁面。需要訪問內存兩次。
段式存儲管理同理,需要訪問內存兩次。
段頁式存儲管理,首先要訪問內存中的段表,然後再訪問內存中的頁表,最後訪問指令或數據所在的內存頁面。需要訪問內存三次。
對於比較復雜的情況,如多級頁表,若頁表劃分為N級,則需要訪問內存N+1次。若系統中有快表,則在快表命中時,只需要一次訪問內存即可。

❼ 什麼是缺頁中斷

缺頁中斷就是要訪問的頁不在主存,需要操作系統將其調入主存後再進行訪問。 缺頁率:在進行內存訪問時,若所訪問的頁已在主存,則稱此次訪問成功;若所訪問的頁不在主存,則稱此次訪問失敗,並產生缺頁中斷。若程序P在運行過程中訪問頁面的總次數為S,其中產生缺頁中斷的訪問次數為F,則其缺頁率為:F/s. 解:根據所給頁面走向,採用FIFO淘汰演算法的頁面置換情況如下:這里的頁面走向,即為系統要調用的頁號。 頁面走向 1 2 1 3 1 2 4 2 1 3 4 物理塊1 1 1 3 3 2 2 1 1 4 物理塊2 2 2 1 1 4 4 3 3 缺頁 缺 缺 缺 缺 缺缺 缺 缺 缺 從上述頁面置換圖可以看出:頁面引用次數為11次,缺頁次數為9次,所以缺頁率為9/11。 若採用後一種頁面淘汰策略,其頁面置換情況如下: 頁面走向 1 2 1 3 1 2 4 2 1 3 4 物理塊1 1 1 3 1 1 1 3 4 物理塊2 2 2 2 4 2 2 2 缺頁: 缺 缺 缺 缺缺 缺缺 缺 從上述頁面置換圖可以看出:頁面引用次數為11次,缺頁次數為8次,所以缺頁率為8/11。

❽ 缺頁是什麼什麼是缺頁中斷

缺頁指的是當軟體試圖訪問已映射在虛擬地址空間中,但是並未被載入在物理內存中的一個分頁時,由中央處理器的內存管理單元所發出的中斷。

缺頁中斷就是要訪問的頁不在主存,需要操作系統將其調入主存後再進行訪問。在這個時候,被內存映射的文件實際上成了一個分頁交換文件。

(8)缺頁中斷需要訪問幾次主存擴展閱讀:

通常情況下,用於處理此中斷的程序是操作系統的一部分。如果操作系統判斷此次訪問是有效的,那麼操作系統會嘗試將相關的分頁從硬碟上的虛擬內存文件中調入內存。而如果訪問是不被允許的,那麼操作系統通常會結束相關的進程。

雖然其名為「頁缺失」錯誤,但實際上這並不一定是一種錯誤。而且這一機制對於利用虛擬內存來增加程序可用內存空間的操作系統(比如Microsoft Windows和各種類Unix系統)中都是常見且有必要的。

微軟在較新版Windows的資源監視器中使用「硬錯誤」(Windows Vista及以上)、「硬中斷」(Windows 8及以上)這一術語來指代「頁缺失」。

❾ 怎麼用LRU和FIFO演算法計算「缺頁中斷」

四塊主存空間 FIFO:先入先出,應用隊列概念
裝入0 1 2 3
之後的2132四個序列無需出入隊。

執行到5
0出隊,5入隊:1235
執行到6
1出隊,6入隊:2356
執行到1
2出隊,1入隊:3561

執行到4
3出隊,4入隊:5614
執行到最後的2
5出隊,2入隊:6142

兩塊主存空間的 LRU:
0.裝入0
1.裝入1
2.0出2入 12

3.1出3入 23
2.使用2 32

1.3出1入 21(2最近被使用過)
3.2出3入 13
2.1出2入 32

5.3出5入 25

2.使用2 52
3.5出3入 23

6.2出6入 36

2.3出2入 62

1.6出1入 21

4.2出4入 14

2.1出2入 42
到此結束
最右邊的序號是當前作業標號
然後是執行的換頁操作
最後2位是當前內存中的作業標號,其中靠左邊的是下一次要被換出去的。