① (操作系統)已知頁號怎麼求塊號(怎麼對應快表,看不懂,求大神了)
物理地址 (physical address): 放在定址匯流排上的地址。放在定址匯流排上,如果是讀,電路根據這個地址每位的值就將相應地址的物理內存中的數據放到數據匯流排中傳輸。如果是寫,電路根據這個 地址每位的值就將相應地址的物理內存中放入數據匯流排上的內容。物理內存是以位元組(8位)為單位編址的。
虛擬地址 (virtual address): 4G虛擬地址空間中的地址,程序中使用的都是虛擬地址。
如果CPU寄存器中的分頁標志位被設置,那麼執行內存操作的機器指令時,CPU會自動根據頁目錄和頁表中的信息,把虛擬地址轉換成物理地址,完成該指令。 比如 mov eax,004227b8h ,這是把地址004227b8h處的值賦給寄存器的匯編代碼,004227b8這個地址就是虛擬址。CPU在執行這行代碼時,發現寄存器中的分頁標志位已 經被設定,就自動完成虛擬地址到物理地址的轉換,使用物理地址取出值,完成指令。對於Intel CPU 來說,分頁標志位是寄存器CR0的第31位,為1表示使用分頁,為0表示不使用分頁。對於初始化之後的 Win2k 我們觀察 CR0 ,發現第31位為1。表明Win2k是使用分頁的。
使用了分頁機制之後,4G的地址空間被分成了固定大小的頁,每一頁或者被映射到物理內存,或者被映射到硬碟上的交換文件中,或者沒有映射任何東西。對於一 般程序來說,4G的地址空間,只有一小部分映射了物理內存,大片大片的部分是沒有映射任何東西。物理內存也被分頁,來映射地址空間。對於32bit的 Win2k,頁的大小是4K位元組。CPU用來把虛擬地址轉換成物理地址的信息存放在叫做頁目錄和頁表的結構里。
物理內存分頁,一個物理頁的大小為4K位元組,第0個物理頁從物理地址 0x00000000 處開始。由於頁的大小為4KB,就是0x1000位元組,所以第1頁從物理地址 0x00001000 處開始。第2頁從物理地址 0x00002000 處開始。可以看到由於頁的大小是4KB,所以只需要32bit的地址中高20bit來定址物理頁。
頁表,一個頁表的大小為4K位元組,放在一個物理頁中。由1024個4位元組的頁表項組成。頁表項的大小為4個位元組(32bit),所以一個頁表中有1024 個頁表項。頁表中的每一項的內容(每項4個位元組,32bit)高20bit用來放一個物理頁的物理地址,低12bit放著一些標志。
頁目錄,一個頁目錄大小為4K位元組,放在一個物理頁中。由1024個4位元組的頁目錄項組成。頁目錄項的大小為4個位元組(32bit),所以一個頁目錄中有 1024個頁目錄項。頁目錄中的每一項的內容(每項4個位元組)高20bit用來放一個頁表(頁表放在一個物理頁中)的物理地址,低12bit放著一些標 志。
對於x86系統,頁目錄的物理地址放在CPU的CR3寄存器中。
CPU把虛擬地址轉換成物理地址:
一個虛擬地址,大小4個位元組(32bit),包含著找到物理地址的信息,分為3個部分:第22位到第31位這10位(最高10位)是頁目錄中的索引,第 12位到第21位這10位是頁表中的索引,第0位到第11位這12位(低12位)是頁內偏移。對於一個要轉換成物理地址的虛擬地址,CPU首先根據CR3 中的值,找到頁目錄所在的物理頁。然後根據虛擬地址的第22位到第31位這10位(最高的10bit)的值作為索引,找到相應的頁目錄項 (PDE,page directory entry),頁目錄項中有這個虛擬地址所對應頁表的物理地址。有了頁表的物理地址,根據虛擬地址的第12位到第21位這10位的值作為索引,找到該頁表 中相應的頁表項(PTE,page table entry),頁表項中就有這個虛擬地址所對應物理頁的物理地址。最後用虛擬地址的最低12位,也就是頁內偏移,加上這個物理頁的物理地址,就得到了該虛 擬地址所對應的物理地址。
一個頁目錄有1024項,虛擬地址最高的10bit剛好可以索引1024項(2的10次方等於1024)。一個頁表也有1024項,虛擬地址中間部分的 10bit,剛好索引1024項。虛擬地址最低的12bit(2的12次方等於4096),作為頁內偏移,剛好可以索引4KB,也就是一個物理頁中的每個 位元組。
一個虛擬地址轉換成物理地址的計算過程就是,處理器通過CR3找到當前頁目錄所在物理頁,取虛擬地址的高10bit,然後把這10bit右移2bit(因 為每個頁目錄項4個位元組長,右移2bit相當於乘4)得到在該頁中的地址,取出該地址處PDE(4個位元組),就找到了該虛擬地址對應頁表所在物理頁,取虛 擬地址第12位到第21位這10位,然後把這10bit右移2bit(因為每個頁表項4個位元組長,右移2bit相當於乘4)得到在該頁中的地址,取出該地 址處的PTE(4個位元組),就找到了該虛擬地址對應物理頁的地址,最後加上12bit的頁內偏移得到了物理地址。
② 頁式存儲計算
地址寄存器24位,頁號14位,那麼頁面大小就用10位來描述(24-14)。2的14次冥就是16K,即主存可劃分為16K個頁。2的10次冥就是1K,即每個頁面大小為1K。
③ 計算機操作系統 分頁存儲 用十六進制怎麼解這道題啊分析不大懂
每個頁面大小為1kB,也就是400h B。
首攔好帆先計算塊號:0A5Dh / 400h = 2,因此邏輯頁號為2,對應的物理塊號為4,相應的起始地址為4 * 400h = 1000h。
其次計算塊襪悔內簡雹偏移:0A5Dh % 400h = 25Dh,因此相對偏移為25Dh。
1000h + 25Dh = 125Dh
網路嫌我字數不夠
④ 問一道操作系統某請求分頁存儲管理系統題
頁的大小為2K —> 1 0000 0000 0000(對應的二鬧雹進制),則頁內地址為11位
5678 —> 10 11000101110(對應的二進制),則後11位為頁內地址1582(11000101110對應的十進制)。前兩位(10)為頁號(2)對應的塊號為4,塊內地址為塊號*塊大小+ 頁內地址,即4*1024+1582,其中1024為塊大小巧宏2K。
不知道你明液寬帆白了沒?
⑤ 操作系統,頁號,頁面號和塊號怎麼區別 頁面號是不是就是塊號
頁號是進程的每頁的標號,從0到n順序排列。頁面號是操作系統分配的,每個頁號對應一個頁面號。
⑥ 頁儲存管理中,已知一個邏輯地址長度為16位,頁面大小為4096B,地址為2F6AH,怎麼知道這個地址的頁號啊
頁面大小4096B,那頁內需要12位才能表示,邏輯地址16位,也就是4位頁地址加12位頁內偏移地址組成,那16位邏輯地址中前面的4位就是頁號。
想要求出物理地址,那還需要頁表,根據頁號查找對應的頁表,頁表存放是的頁號對應的物理頁地址,物理地址就是物理頁地址加上頁內偏移。
⑦ 操作系統問題(頁式存儲管理問題)
1.5000B約等於4.88KB 每個頁面有2KB 所以佔用3個頁面
頁表
頁號 塊號
0
3
1
7
2
9
2.頁內地址為11位【塊內地址(也叫塊內位移)長度與頁內地址相等 也是11位】 則每頁大小為2^11=2KB 邏輯地址長16位 所以頁號有16-11=5位 那麼最多有2^5=32頁
你給的邏輯地址4500應該是十進制數 轉換成二進制即
1000110010100 (數一下 總共13位)
後面11位是頁內地址 那麼頁號就是前面的兩位了 是10 也就是二進制的2
那麼根據頁表 對應的塊號是9 轉換成二進制即1001 即塊號是1001 而塊內地址是邏輯地址的頁內地址(4500的後11位)
那麼物理地址是1001+00110010100(這里+表示連接 而不是邏輯加)
即100100110010100 轉換成十進制就是18836 十六進制就是4994
多加點分
⑧ 基本分頁存儲管理
閱讀前請先閱讀 內存管理基礎 。從本文開始就介紹不連續分配的幾種方式,本文主要介紹基本分頁存儲管理。
假設進程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%以上。
⑨ (存儲管理)01.分頁式存儲管理
將內存劃分為若干個大小相等的分區,叫做塊;將邏輯空間劃分出與塊大小一致的分區,叫做頁。作業運行時,通過地址重定位技術,實現頁與塊的對應。這樣就以頁的方式來管理存儲塊,就叫分頁式存儲管理。
在分配存儲塊時,會根據作業的邏輯地址的大小計算所需要多少個存儲塊,然後查找空閑塊並更新空閑塊的狀態為佔用;回收存儲塊時,會將作業關聯的所有空閑塊的狀態設置為空閑。記錄空閑塊狀態的方法有兩種:點陣圖法和鏈表法。
在分配存儲塊之後,就在頁表中,增加頁和塊對應關系的記錄;同理,回收存儲塊時,就會刪除對應記錄。
訪問存儲塊時,就會根據邏輯地址的頁號,在頁表找到對應的塊號,然後再通過塊號計算出物理地址,找到對應的存儲塊。如下圖:
補充
頁表:記錄頁號與塊號對應關系的表,包含頁號和塊號兩個欄位。
邏輯地址:由 「頁號」 和 「頁內地址」 組成。其中頁內地址是通過頁大小來決定。
例如:邏輯地址長度為 16 位,頁大小是 1kb (二的十次冪),那麼頁內地址占低十位,高六位是頁號。如下:
在重定位存儲塊時,需要訪問頁表。為了加快重定位,就會通過快表(聯想存儲器,記錄常用的頁號和塊號的對應關系)來快速通過頁號找到對應的塊號。但是如果不能通過快表找到對應的塊號,那麼就會按照查找頁表的方式來完成重定位。
⑩ 操作系統,頁號,頁面號和塊號怎麼區別 頁面號是不是就是塊號
1、頁和塊的對象不同:頁是對邏輯地址進行分頁存儲,塊是對實際地址進行分塊存儲。
2、頁號是虛擬地址的劃分,敬巧指向程序中的某一頁,每個頁號對應一個亮嘩鍵頁面號。
3、塊號是實際地址的劃分,指向內存空間中某一個物理塊。
4、頁面號不是塊號。
(10)知道頁號怎麼算存儲塊號擴展閱讀
分頁存儲
1、分頁存儲管理是將一個進程的邏輯地址空間分成若干個大小相等的片,稱為頁面或頁,並為各頁加以編號,從0開始,如第0頁、第1頁等。
2、相應地,也把內存空間分成與頁面相同大小的若干個存儲塊,稱為(物理)塊或頁框(frame),也同樣為它們加以編號,如0#塊、1#塊等等。
3、在為進程分配內存時,以塊為單位將進程中的若干個頁分別裝入到多個可以不相鄰接的物理塊中。由於進程的最後一頁經常裝不滿一塊而形成了不可利用的碎片,稱之為「頁內碎片」。
分段存儲
1、在分段存儲管理方式中,作業的地址空間被劃分為若干個段,每個段定義了一組邏輯信息。例如,有主程序段MAIN、子程序段X、數據段D及棧段S等。
2、每個段都有自己的名字。為了實現簡單起見,通常可用一個段號來代替段名,每個段都從0開始編址,並採用一段連續的地址空間。
3、段的長度由相應的邏輯信息組的長度決定,因而各段長度不等。整個作業的地址空間由於是分成多個段,因而是二維的,亦即,其邏輯地址由段號(段名)和段內地址所組成。
參考蘆培文獻:網路-存儲管理