頁式存儲物理地址分配
❶ 操作系統問題(頁式存儲管理問題)
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
多加點分
❷ 分頁存儲管理的實現原理
採用分頁存儲器允許把一個作業存放到若干不相鄰的分區中,既可免去移動信息的工作,又可盡量減少主存的碎片。分頁式存儲管理的基本原理如下:
1、 頁框:物理地址分成大小相等的許多區,每個區稱為一塊;
2、址分成大小相等的區,區的大小與塊的大小相等,每個稱一個頁面。
3、 邏輯地址形式:與此對應,分頁存儲器的邏輯地址由兩部分組成,頁號和單元號。邏輯地址格式為 頁號 單元號(頁內地址) 採用分頁式存儲管理時,邏輯地址是連續的。所以,用戶在編製程序時仍只須使用順序的地址,而不必考慮如何去分頁。
4、頁表和地址轉換:如何保證程序正確執行呢?
採用的辦法是動態重定位技術,讓程序的指令執行時作地址變換,由於程序段以頁為單位,所以,我們給每個頁設立一個重定位寄存器,這些重定位寄存器的集合便稱頁表。頁表是操作系統為每個用戶作業建立的,用來記錄程序頁面和主存對應頁框的對照表,頁表中的每一欄指明了程序中的一個頁面和分得的頁框的對應關系。絕對地址=塊號*塊長+單元號 以上從拓撲結構角度分析了對稱式與非對稱式虛擬存儲方案的異同,實際從虛擬化存儲的實現原理來講也有兩種方式;即數據塊虛擬與虛擬文件系統. 數據塊虛擬存儲方案著重解決數據傳輸過程中的沖突和延時問題.在多交換機組成的大型Fabric結構的SAN中,由於多台主機通過多個交換機埠訪問存儲設備,延時和數據塊沖突問題非常嚴重.數據塊虛擬存儲方案利用虛擬的多埠並行技術,為多台客戶機提供了極高的帶寬,最大限度上減少了延時與沖突的發生,在實際應用中,數據塊虛擬存儲方案以對稱式拓撲結構為表現形式. 虛擬文件系統存儲方案著重解決大規模網路中文件共享的安全機制問題.通過對不同的站點指定不同的訪問許可權,保證網路文件的安全.在實際應用中,虛擬文件系統存儲方案以非對稱式拓撲結構為表現形式. 虛擬存儲技術,實際上是虛擬存儲技術的一個方面,特指以CPU時間和外存空間換取昂貴內存空間的操作系統中的資源轉換技術 基本思想:程序,數據,堆棧的大小可以超過內存的大小,操作系統把程序當前使用的部分保留在內存,而把其他部分保存在磁碟上,並在需要時在內存和磁碟之間動態交換,虛擬存儲器支持多道程序設計技術 目的:提高內存利用率 管理方式
A 請求式分頁存儲管理 在進程開始運行之前,不是裝入全部頁面,而是裝入一個或零個頁面,之後根據進程運行的需要,動態裝入其他頁面;當內存空間已滿,而又需要裝入新的頁面時,則根據某種演算法淘汰某個頁面,以便裝入新的頁面
B 請求式分段存儲管理 為了能實現虛擬存儲,段式邏輯地址空間中的程序段在運行時並不全部裝入內存,而是如同請求式分頁存儲管理,首先調入一個或若干個程序段運行,在運行過程中調用到哪段時,就根據該段長度在內存分配一個連續的分區給它使用.若內存中沒有足夠大的空閑分區,則考慮進行段的緊湊或將某段或某些段淘汰出去,這種存儲管理技術稱為請求式分段存儲管理
❸ 頁式存儲管理方案中的內存分配
#include<iostream.h>
#include<fstream.h>
#include<stdio.h>
#include<string.h>
#include<iomanip.h>
#include<stdlib.h>
const max=40;
const page_quantity=3;
typedef struct node
{
int number;
int timer;
}nodes;
nodes queues[max];//待替換的文件
int queue_quantity;
int pages[page_quantity];//物理頁面
void inital()
{
for(int i=0;i<max;i++)
{
queues[i].number=0;
queues[i].timer=i;
}
queue_quantity=0;
for(int j=0;i<page_quantity;j++)
{
pages[i]=0;
}
}
void readData()
{
cout<<"輸入進程A的頁面訪問序列文件(例:f1.txt)"<<endl;
char fname[20];
cin>>fname;
ifstream inf(fname,ios::nocreate);
if(!inf)
{
cout<<"文件不可讀,請稍後再試"<<endl;
}
while(!inf.eof())
{
inf>>queues[queue_quantity].number;
queue_quantity++;
}
cout<<"欲調用頁面流:"<<endl;
for(int i=0;i<queue_quantity;i++)
{
cout<<queues[i].number<<" ";
}
cout<<endl;
}
//最佳頁面調度演算法
void excellent()
{
cout<<"最佳頁面調度演算法"<<endl;
int absences=0;//缺頁次數
for(int i=0;i<page_quantity;i++)
{
pages[i]=queues[i].number;
absences++;
}
int qs=queue_quantity-3;
cout<<"命中以及置換出的頁面順序:"<<endl;
while(--qs)
{
int a[page_quantity]={0,0,0},x=0,tmp,tmps;
int flag=0;
for(int j=0;j<page_quantity;j++)
{
if(queues[i].number==pages[j])
{
cout<<"命中 ";
flag=1;
}
}
if(!flag)//沒有命中
{
for(int k=0;k<page_quantity;k++)
{
int p=0;
for(int l=i;l<queue_quantity;l++)
{
if((a[x]==0) && (pages[k]==queues[l].number))
{
a[x]=l;
p=1;
}
}
if(!p)
{
a[x]=1000;
}
x++;
}
int q1=0;
for(int x1=0;x1<page_quantity;x1++)
{
if(a[x1]==1000)
{
cout<<pages[x1]<<" ";
pages[x1]=queues[i].number;
q1=1;
break;
}
}
if(q1)
{
}
else
{
if(a[0]>a[1])
tmp=a[0];
else
tmp=a[1];
if(a[2]>tmp)
tmps=a[2];
else
tmps=tmp;
for(int a=0;a<page_quantity;a++)
{
if(pages[a]==queues[tmps].number)
{
cout<<pages[a]<<" ";
pages[a]=queues[i].number;
}
}
}
absences++;
}
i++;
}
cout<<endl;
cout<<"總的缺頁次數: "<<absences<<endl;
}
void main()
{
cout<<"=================虛擬頁面調度演算法模擬系統================="<<endl;
inital();
readData();
excellent();
}
❹ 在頁式存儲管理中,內存的物理地址空間被劃分成若干大小相等位置固定的什麼
page
❺ 請求頁式存儲管理求物理地址
頁大小為2KB=2的11次方B,頁內偏移量為11bit邏輯地址:1CDBH 轉換成二進制:00011100110110112C1DH 轉換成二進制:0010110000011101取低11位為頁內偏移量,剩餘高位為頁號。內存空間32KB=2的15次方B,物理地址15bit.1CDBH 頁號為00011,值為3.如表,塊號為9.9 轉換成二進制 10011CDBH 物理地址為1001100110110112C1DH 物理地址同上
❻ 某頁式存儲管理系統,頁內地址為11位,邏輯地址總長度為16位,物理地址長度為32位,每頁有多少位元組
1、2^11
2、2^5
3、2^21
4/904
❼ 分區存儲管理中常用哪些分配策略
1、固定分區存儲管理
其基本思想是將內存劃分成若干固定大小的分區,每個分區中最多隻能裝入一個作業。當作業申請內存時,系統按一定的演算法為其選擇一個適當的分區,並裝入內存運行。由於分區大小是事先固定的,因而可容納作業的大小受到限制,而且當用戶作業的地址空間小於分區的存儲空間時,造成存儲空間浪費。
一、空間的分配與回收
系統設置一張「分區分配表」來描述各分區的使用情況,登記的內容應包括:分區號、起始地址、長度和佔用標志。其中佔用標志為「0」時,表示目前該分區空閑;否則登記佔用作業名(或作業號)。有了「分區分配表」,空間分配與回收工作是比較簡單的。
二、地址轉換和存儲保護
固定分區管理可以採用靜態重定位方式進行地址映射。
為了實現存儲保護,處理器設置了一對「下限寄存器」和「上限寄存器」。當一個已經被裝入主存儲器的作業能夠得到處理器運行時,進程調度應記錄當前運行作業所在的分區號,且把該分區的下限地址和上限地址分別送入下限寄存器和上限寄存器中。處理器執行該作業的指令時必須核對其要訪問的絕對地址是否越界。
三、多作業隊列的固定分區管理
為避免小作業被分配到大的分區中造成空間的浪費,可採用多作業隊列的方法。即系統按分區數設置多個作業隊列,將作業按其大小排到不同的隊列中,一個隊列對應某一個分區,以提高內存利用率。
2、可變分區存儲管理
可變分區存儲管理不是預先將內存劃分分區,而是在作業裝入內存時建立分區,使分區的大小正好與作業要求的存儲空間相等。這種處理方式使內存分配有較大的靈活性,也提高了內存利用率。但是隨著對內存不斷地分配、釋放操作會引起存儲碎片的產生。
一、空間的分配與回收
採用可變分區存儲管理,系統中的分區個數與分區的大小都在不斷地變化,系統利用「空閑區表」來管理內存中的空閑分區,其中登記空閑區的起始地址、長度和狀態。當有作業要進入內存時,在「空閑區表」中查找狀態為「未分配」且長度大於或等於作業的空閑分區分配給作業,並做適當調整;當一個作業運行完成時,應將該作業佔用的空間作為空閑區歸還給系統。
可以採用首先適應演算法、最佳(優)適應演算法和最壞適應演算法三種分配策略之一進行內存分配。
二、地址轉換和存儲保護
可變分區存儲管理一般採用動態重定位的方式,為實現地址重定位和存儲保護,系統設置相應的硬體:基址/限長寄存器(或上界/下界寄存器)、加法器、比較線路等。
基址寄存器用來存放程序在內存的起始地址,限長寄存器用來存放程序的長度。處理機在執行時,用程序中的相對地址加上基址寄存器中的基地址,形成一個絕對地址,並將相對地址與限長寄存器進行計算比較,檢查是否發生地址越界。
三、存儲碎片與程序的移動
所謂碎片是指內存中出現的一些零散的小空閑區域。由於碎片都很小,無法再利用。如果內存中碎片很多,將會造成嚴重的存儲資源浪費。解決碎片的方法是移動所有的佔用區域,使所有的空閑區合並成一片連續區域,這一技術稱為移動技術(緊湊技術)。移動技術除了可解決碎片問題還使內存中的作業進行擴充。顯然,移動帶來系統開銷加大,並且當一個作業如果正與外設進行I/O時,該作業是無法移動的。
3、頁式存儲管理
基本原理
1.等分內存
頁式存儲管理將內存空間劃分成等長的若干區域,每個區域的大小一般取2的整數冪,稱為一個物理頁面有時稱為塊。內存的所有物理頁面從0開始編號,稱作物理頁號。
2.邏輯地址
系統將程序的邏輯空間按照同樣大小也劃分成若干頁面,稱為邏輯頁面也稱為頁。程序的各個邏輯頁面從0開始依次編號,稱作邏輯頁號或相對頁號。每個頁面內從0開始編址,稱為頁內地址。程序中的邏輯地址由兩部分組成:
邏輯地址
頁號p
頁內地址 d
3.內存分配
系統可用一張「位示圖」來登記內存中各塊的分配情況,存儲分配時以頁面(塊)為單位,並按程序的頁數多少進行分配。相鄰的頁面在內存中不一定相鄰,即分配給程序的內存塊之間不一定連續。
對程序地址空間的分頁是系統自動進行的,即對用戶是透明的。由於頁面尺寸為2的整數次冪,故相對地址中的高位部分即為頁號,低位部分為頁內地址。
3.5.2實現原理
1.頁表
系統為每個進程建立一張頁表,用於記錄進程邏輯頁面與內存物理頁面之間的對應關系。地址空間有多少頁,該頁表裡就登記多少行,且按邏輯頁的順序排列,形如:
邏輯頁號
主存塊號
0
B0
1
B1
2
B2
3
B3
2.地址映射過程
頁式存儲管理採用動態重定位,即在程序的執行過程中完成地址轉換。處理器每執行一條指令,就將指令中的邏輯地址(p,d)取來從中得到邏輯頁號(p),硬體機構按此頁號查頁表,得到內存的塊號B』,便形成絕對地址(B』,d),處理器即按此地址訪問主存。
3.頁面的共享與保護
當多個不同進程中需要有相同頁面信息時,可以在主存中只保留一個副本,只要讓這些進程各自的有關項中指向內存同一塊號即可。同時在頁表中設置相應的「存取許可權」,對不同進程的訪問許可權進行各種必要的限制。
4、段式存儲管理
基本原理
1.邏輯地址空間
程序按邏輯上有完整意義的段來劃分,稱為邏輯段。例如主程序、子程序、數據等都可各成一段。將一個程序的所有邏輯段從0開始編號,稱為段號。每一個邏輯段都是從0開始編址,稱為段內地址。
2.邏輯地址
程序中的邏輯地址由段號和段內地址(s,d)兩部分組成。
3.內存分配
系統不進行預先劃分,而是以段為單位進行內存分配,為每一個邏輯段分配一個連續的內存區(物理段)。邏輯上連續的段在內存不一定連續存放。
3.6.2實現方法
1.段表
系統為每個進程建立一張段表,用於記錄進程的邏輯段與內存物理段之間的對應關系,至少應包括邏輯段號、物理段首地址和該段長度三項內容。
2.建立空閑區表
系統中設立一張內存空閑區表,記錄內存中空閑區域情況,用於段的分配和回收內存。
3.地址映射過程
段式存儲管理採用動態重定位,處理器每執行一條指令,就將指令中的邏輯地址(s,d)取來從中得到邏輯段號(s),硬體機構按此段號查段表,得到該段在內存的首地址S』, 該段在內存的首地址S』加上段內地址d,便形成絕對地址(S』+d),處理器即按此地址訪問主存。
5、段頁式存儲管理
頁式存儲管理的特徵是等分內存,解決了碎片問題;段式存儲管理的特徵是邏輯分段,便於實現共享。為了保持頁式和段式上的優點,結合兩種存儲管理方案,形成了段頁式存儲管理。
段頁式存儲管理的基本思想是:把內存劃分為大小相等的頁面;將程序按其邏輯關系劃分為若干段;再按照頁面的大小,把每一段劃分成若干頁面。程序的邏輯地址由三部分組成,形式如下:
邏輯地址
段號s
頁號p
頁內地址d
內存是以頁為基本單位分配給每個程序的,在邏輯上相鄰的頁面內存不一定相鄰。
系統為每個進程建立一張段表,為進程的每一段各建立一張頁表。地址轉換過程,要經過查段表、頁表後才能得到最終的物理地址。
❽ 操作系統頁式存儲管理的問題
存儲管理的基本原理內存管理方法 內存管理主要包括內存分配和回收、地址變換、內存擴充、內存共享和保護等功能。 下面主要介紹連續分配存儲管理、覆蓋與交換技術以及頁式與段式存儲管理等基本概念和原理。 1. 連續分配存儲管理方式 連續分配是操作系統頁式存儲管理的問題
❾ 計算機系統都支持虛擬頁式地址轉換機制,問頁式存儲管理方案中,用戶地址空間、內存地址空
首先,內存分配以頁(4096B)為單位,內存中建有兩級頁表,兩級頁表類似二維數組,可以將虛擬地址(頁目錄索引+頁表索引+頁內地址)轉化為物理地址,這個屬於虛擬存儲。而內存分配,屬於內存管理,同樣在內存中建有專門的數據結構管理頁框(或者叫物理頁面,以區別於虛擬頁面)。我知道一種方案是:建立一個大數組,在此大數組上面建立靜態鏈表作為空閑鏈表。大數組可以用來映射某個頁框,而空閑鏈表用來分配和回收物理頁。
地址映射機制主要用的:頁目錄基地址寄存器(CR0),頁面故障寄存器(CR3),為了加快地址映射的速度採用TLB。
❿ 分頁式存儲器的地址分成頁號和頁內地址兩部分,但它仍是線性地址.為什麼
分頁式存儲管理的基本原理:採用分頁存儲器允許把一個作業存放到若干不相鄰的分區中,既可免去移動信息的工作,又可盡量減少主存的碎片。分頁式存儲管理的基本原理如下: 1、 頁框:物理地址分成大小相等的許多區,每個區稱為一塊