页面置换算法的实验 大连交通大学操作系统页面置换算法实验报告

\u6c42\u4e00\u4e2a\u64cd\u4f5c\u7cfb\u7edf\u9875\u9762\u7f6e\u6362\u7b97\u6cd5\u5148\u8fdb\u5148\u51fa\u7684\u5b9e\u9a8c\u62a5\u544a

\u4e00\u9009\u62e9
1.B 2.c 3\u3002 D 4B 5B
\u4e8c\u586b\u7a7a
1\uff0c\u6700\u4f18\uff1b\u5148\u8fdb\u5148\u51fa\uff1b\u6700\u8fd1\u6700\u4e45\u672a\u4f7f\u7528
2. 13\uff1b15\uff1b
3. 123456721\uff1b123567421
4.\u6bb5\uff1b\u6bb5\uff1b\u9875\uff1b\u9875\uff1b\u4e09\uff1b\u4e8c
\u4e09\uff0c\u95ee\u7b54
1.\u7b54\uff1a\u4e09\u4e2a\u9875\u9762\u7684\u7269\u7406\u8d77\u59cb\u5730\u5740\u5206\u522b\u662f\uff1a4k,6K,12K,
2500= 2K+452,\u6240\u4ee5\u5728\u7b2c\u4e8c\u4e2a\u903b\u8f91\u9875\u97626K\u7684\u8d77\u59cb\u5730\u5740\uff0c\u5b9e\u9645\u5730\u5740\u662f6K+452\uff1b
2.LRU\uff1a\u88c5\u5165\u987a\u5e8f\uff1a2 3 1 5 4 3 2
\u6362\u51fa\u987a\u5e8f\uff1a 3 1 2 4 \u7f3a\u9875\u6b21\u65707\u6b21
FIFO\uff1a\u88c5\u5165\u987a\u5e8f\uff1a2 3 1 5 2 4 3 5 2
\u6362\u51fa\u987a\u5e8f\uff1a 2 3 1 5 2 4 \u7f3a\u9875\u6b21\u65709\u6b21
\u65f6\u949f\uff1a\u88c5\u5165\u987a\u5e8f\uff1a2 3 1 5 2 4 3 2
\u6362\u51fa\u987a\u5e8f\uff1a 2 3 1 2 4 \u7f3a\u9875\u6b21\u65708\u6b21
\u65f6\u949f\u7b97\u6cd5\u6027\u80fd\u5904\u4e8e\u4e2d\u95f4\uff0c\u4f18\u4e8eFiFo\uff0c\u5dee\u4e8eLRU\uff0c\u4f46\u7531\u4e8eLRU\u7b97\u6cd5\u7684\u786c\u4ef6\u5b9e\u73b0\u6bd4\u8f83\u9ebb\u70e6\uff0c\u6240\u4ee5\u65f6\u949f\u7b97\u6cd5\u95ee\u517c\u987e\u4e86\u6548\u7387\u548c\u786c\u4ef6\u5b9e\u73b0

.......\u8fd9\u4e48\u61d2\u3002\u3002\u3002

#include<stdlib.h>
#include<iostream.h>
#include<time.h>
#include<stdio.h>

#define total_instruction 200 /*指令流长*/
#define M 16 /*实际页数*/

#define N 4 //可用页面数
struct Pro
{
int num,time;
};
int a[total_instruction];

int page[N];

void Input(Pro p[total_instruction])
{
int m,i,m1,m2;
srand( (unsigned int )time(NULL));
m=rand( )%160; //
for(i=0;i<total_instruction;) /*产生指令队列*/
{
if(m<0||m>159)
{
printf("When i==%d,Error,m==%d\n",i,m);
exit(0);
}
a[i]=m; /*任选一指令访问点m*/
a[i+1]=a[i]+1;
a[i+2]=a[i]+2; /*顺序执行两条指令*/
int m1=rand( )%m; /*执行前地址指令m1 */
a[i+3]=m1;
a[i+4]=m1+1;
a[i+5]=m1 + 2;/*顺序执行两条指令*/

// s=(158-a[i+5])*rand( )/32767/32767/2+a[i+5]+2;
m2 = rand()%(157-m1)+m1+3;
a[i+6]=m2;
if( (m2+2) > 159 )
{
a[i+7] = m2+1;
i +=8;
}
else
{
a[i+7] = m2+1;
a[i+8] = m2+2;
i = i+9;
}
m = rand()%m2;

}
for (i=0;i<total_instruction;i++) /*将指令序列变换成页地址流*/
{
p[i].num=a[i]/10;
p[i].time = 0;
}
}
void print(Pro *page1)//打印当前的页面
{
Pro *page=new Pro[N];
page=page1;
for(int i=0;i<N;i++)
cout<<page[i].num<<" ";
cout<<endl;
}

int Search(int e,Pro *page1 )
{
Pro *page=new Pro[N];
page=page1;
for(int i=0;i<N;i++)if(e==page[i].num)return i;
return -1;
}

int Max(Pro *page1)
{
Pro *page=new Pro[N];
page=page1;
int e=page[0].time,i=0;
while(i<N)//找出离现在时间最长的页面
{
if(e<page[i].time)e=page[i].time;
i++;
}
for( i=0;i<N;i++)if(e==page[i].time)return i;

return -1;
}

int Compfu(Pro *page1,int i,int t,Pro p[M])
{
Pro *page=new Pro[N];
page=page1;

int count=0;
for(int j=i;j<M;j++)
{
if(page[t].num==p[j].num )break;
else count++;
}
return count;

}

int main()
{
Pro p[total_instruction];
Pro *page=new Pro[N];
char c;
int t=0;
float n=0;
Input(p);

do{
for(int i=0;i<N;i++)//初试化页面基本情况
{
page[i].num=0;
page[i].time=2-i;
}

i=0;
cout<<"f:FIFO页面置换"<<endl;
cout<<"l:LRU页面置换"<<endl;
cout<<"o:OPT页面置换"<<endl;
cout<<"按其它键结束"<<endl;
cin>>c;

if(c=='f')//FIFO页面置换
{
n=0;
cout<<"页面置换情况: "<<endl;
while( i< total_instruction)
{
if(Search(p[i].num,page)>=0)
i++;//找到相同的页面
else
{
if(t==N)t=0;
else
{
n++;//
page[t].num=p[i].num;
print(page);
t++;
}
}
}
cout<<"缺页次数:"<<n<<" 缺页率:"<<n/total_instruction<<endl;

}
if(c=='l')//LRU页面置换
{
n=0;
cout<<"页面置换情况: "<<endl;
while(i<total_instruction)
{
int k;
k=t=Search(p[i].num,page);
if(t>=0)

page[t].time=0;

else
{
n++;
t=Max(page);

page[t].num=p[i].num;
page[t].time=0;
}
if(t==0){page[t+1].time++;page[t+2].time++;}
if(t==1){page[2].time++;page[0].time++;}
if(t==2){page[1].time++;page[0].time++;}
if(k==-1) print(page);
i++;
}
cout<<"缺页次数:"<<n<<" 缺页率:"<<n/total_instruction<<endl;
}
if(c=='o')//OPT页面置换
{
n=0;
while(i<total_instruction)
{
if(Search(p[i].num,page)>=0)i++;
else
{
int temp=0,cn;
for(t=0;t<N;t++)
{
if(temp<Compfu(page,i,t,p))
{
temp=Compfu(page,i,t,p);
cn=t;
}
}
page[cn]=p[i];
n++;
print(page);
i++;
}
}
cout<<"缺页次数:"<<n<<" 缺页率:"<<n/total_instruction<<endl;
}

}while(c=='f'||c=='l'||c=='o');

return 0;
}

#include <stdio.h>
#define PROCESS_NAME_LEN 32 /*进程名称的最大长度*/
#define MIN_SLICE 10 /*最小碎片的大小*/
#define DEFAULT_MEM_SIZE 1024 /*默认内存的大小*/
#define DEFAULT_MEM_START 0 /*默认内存的起始位置*/

/* 内存分配算法 */
#define MA_FF 1
#define MA_BF 2
#define MA_WF 3

int mem_size=DEFAULT_MEM_SIZE; /*内存大小*/
int ma_algorithm = MA_FF; /*当前分配算法*/
static int pid = 0; /*初始pid*/
int flag = 0; /*设置内存大小标志*/

struct free_block_type
{
int size;
int start_addr;
struct free_block_type *next;
};
struct free_block_type *free_block;

struct allocated_block
{
int pid;
int size;
int start_addr;
char process_name[PROCESS_NAME_LEN];
struct allocated_block *next;
};
struct allocated_block *allocated_block_head;

/*初始化空闲块,默认为一块,可以指定大小及起始地址*/
struct free_block_type* init_free_block(int mem_size)
{

struct free_block_type *fb;

fb=(struct free_block_type *)malloc(sizeof(struct free_block_type));
if(fb==NULL)
{
printf("No mem\n");
return NULL;
}
fb->size = mem_size;
fb->start_addr = DEFAULT_MEM_START;
fb->next = NULL;
return fb;
}

void display_menu()
{
printf("\n");
printf("1 - Set memory size (default=%d)\n", DEFAULT_MEM_SIZE);
printf("2 - Select memory allocation algorithm\n");
printf("3 - New process \n");
printf("4 - Terminate a process \n");
printf("5 - Display memory usage \n");
printf("0 - Exit\n");
}

/*设置内存的大小*/
int set_mem_size()
{
int size;
if(flag!=0)
{ /*防止重复设置*/
printf("Cannot set memory size again\n");
return 0;
}
printf("Total memory size =");
scanf("%d", &size);
if(size>0)
{
mem_size = size;
free_block->size = mem_size;
}
flag=1;
return 1;
}
/*Best-fit使用最小的能够放下将要存放数据的块,First-first使用第一个能够放下将要存放数据的块,Worst-fit使用最大的能够放下将要存放数据的块。*/
/* 设置当前的分配算法 */
/*分区分配算法(Partitioning Placement Algorithm)
*/
void set_algorithm()
{
int algorithm;
printf("\t1 - First Fit\n");/*首次适应算法(FF):。 */
printf("\t2 - Best Fit\n");/*最佳适应算法(BF): */

printf("\t3 - Worst Fit\n");
scanf("%d", &algorithm);
if(algorithm>=1 && algorithm <=3) ma_algorithm=algorithm;
/*按指定算法重新排列空闲区链表*/
rearrange(ma_algorithm);
}

void swap(int* data_1,int* data_2)
{
int temp;
temp=*data_1;
*data_1=*data_2;
*data_2=temp;
}

void rearrange_FF()
{
struct free_block_type *tmp, *work;
printf("Rearrange free blocks for FF \n");
tmp = free_block;
while(tmp!=NULL)
{
work = tmp->next;
while(work!=NULL)
{
if( work->start_addr < tmp->start_addr)
{ /*地址递增*/
swap(&work->start_addr, &tmp->start_addr);
swap(&work->size, &tmp->size);
}
else
{
work=work->next;
}
}
tmp=tmp->next;
}
}
/*按BF算法重新整理内存空闲块链表(未完成)
void rearrange_BF()
{
struct free_block_type *tmp,*work;
printf("Rearrange free blocks for BF\n");
tmp=free_block;
while(tmp!=NULL)
{
work=tmp->next;
while(work!=NULL)
{

}
}

}

*/
/*按WF算法重新整理内存空闲块链表(未完成)
void rearrange_WF()
{
struct free_block_type *tmp,*work;
printf("Rearrange free blocks for WF \n");
tmp=free_block;
while(tmp!=NULL)
{
work=tmp->next;
while(work!=NULL)
{

}
}
}
*/

/*按指定的算法整理内存空闲块链表*/
int rearrange(int algorithm)
{
switch(algorithm)
{
case MA_FF: rearrange_FF(); break;
/*case MA_BF: rearrange_BF(); break; */
/*case MA_WF: rearrange_WF(); break; */
}
}

/*创建新的进程,主要是获取内存的申请数量*/
int new_process()
{
struct allocated_block *ab;
int size;
int ret;
ab=(struct allocated_block *)malloc(sizeof(struct allocated_block));
if(!ab)
exit(-5);
ab->next = NULL;
pid++;
sprintf(ab->process_name, "PROCESS-%02d", pid);
ab->pid = pid;

printf("Memory for %s:", ab->process_name);
scanf("%d", &size);
if(size>0) ab->size=size;
ret = allocate_mem(ab); /* 从空闲区分配内存,ret==1表示分配ok*/
/*如果此时allocated_block_head尚未赋值,则赋值*/
if((ret==1) &&(allocated_block_head == NULL))
{
allocated_block_head=ab;
return 1;
}
/*分配成功,将该已分配块的描述插入已分配链表*/
else if (ret==1)
{
ab->next=allocated_block_head;
allocated_block_head=ab;
return 2;
}
else if(ret==-1)
{ /*分配不成功*/
printf("Allocation fail\n");
free(ab);
return -1;
}
return 3;
}

/*分配内存模块*/
int allocate_mem(struct allocated_block *ab)
{
struct free_block_type *fbt,*pre,*r;
int request_size=ab->size;
fbt=pre=free_block;
while(fbt!=NULL)
{
if(fbt->size>=request_size)
{
if(fbt->size-request_size>=MIN_SLICE)
{
fbt->size=fbt->size-request_size;
}
/*分配后空闲空间足够大,则分割*/

else
{
r=fbt;
pre->next=fbt->next;
free(r);
/*分割后空闲区成为小碎片,一起分配*/

return 1;
}
}
pre = fbt;
fbt = fbt->next;
}

return -1;
}

/*将ab所表示的已分配区归还,并进行可能的合并*/
int free_mem(struct allocated_block *ab)
{
int algorithm = ma_algorithm;
struct free_block_type *fbt, *pre, *work;

fbt=(struct free_block_type*) malloc(sizeof(struct free_block_type));
if(!fbt)
return -1;
fbt->size = ab->size;
fbt->start_addr = ab->start_addr;
/*插入到空闲区链表的头部并将空闲区按地址递增的次序排列*/
fbt->next = free_block;
free_block=fbt;
rearrange(MA_FF);
fbt=free_block;
while(fbt!=NULL)
{
work = fbt->next;
if(work!=NULL)
{
/*如果当前空闲区与后面的空闲区相连,则合并*/
if(fbt->start_addr+fbt->size == work->start_addr)
{
fbt->size += work->size;
fbt->next = work->next;
free(work);
continue;
}
}
fbt = fbt->next;
}
rearrange(algorithm); /*重新按当前的算法排列空闲区*/
return 1;
}

/*?释放ab数据结构节点*/
int dispose(struct allocated_block *free_ab)
{
struct allocated_block *pre, *ab;

if(free_ab == allocated_block_head)
{ /*如果要释放第一个节点*/
allocated_block_head = allocated_block_head->next;
free(free_ab);
return 1;
}
pre = allocated_block_head;
ab = allocated_block_head->next;

while(ab!=free_ab)
{
pre = ab;
ab = ab->next;
}
pre->next = ab->next;
free(ab);
return 2;
}
/*查找要删除的进程*/
struct allocated_block* find_process(int pid)
{
struct allocated_block *temp;
temp=allocated_block_head;
while(temp!=NULL)
{
if(temp->pid==pid)
{
return temp;
}
temp=temp->next;
}
}

/*删除进程,归还分配的存储空间,并删除描述该进程内存分配的节点*/
void kill_process()
{
struct allocated_block *ab;
int pid;
printf("Kill Process, pid=");
scanf("%d", &pid);
ab=find_process(pid);
if(ab!=NULL)
{
free_mem(ab); /*释放ab所表示的分配区*/
dispose(ab); /*释放ab数据结构节点*/

}
}

/* 显示当前内存的使用情况,包括空闲区的情况和已经分配的情况 */

int display_mem_usage()
{
struct free_block_type *fbt=free_block;
struct allocated_block *ab=allocated_block_head;
if(fbt==NULL) return(-1);
printf("----------------------------------------------------------\n");

/* 显示空闲区 */
printf("Free Memory:\n");
printf("%20s %20s\n", " start_addr", " size");
while(fbt!=NULL)
{
printf("%20d %20d\n", fbt->start_addr, fbt->size);
fbt=fbt->next;
}
/* 显示已分配区 */
printf("\nUsed Memory:\n");
printf("%10s %20s %10s %10s\n", "PID", "ProcessName", "start_addr", " size");
while(ab!=NULL)
{
printf("%10d %20s %10d %10d\n", ab->pid, ab->process_name, ab->start_addr, ab->size);
ab=ab->next;
}
printf("----------------------------------------------------------\n");
return 0;
}

**********************************************************************
楼主啊,小女子给你的是残缺版滴,要是你给我分,我就把剩下滴给你,上次在北京大学贴吧都被人骗了,世道炎凉啊O(∩_∩)O~

太专业了,去一些职业论坛提问吧。
这,估计就算你找到答案也是复制的一大堆。

  • c++涓摢涓绠楁硶鐢ㄤ簬椤甸潰缃崲
    绛旓細鎿嶄綔绯荤粺涓椤甸潰缃崲绠楁硶闄ゆ渶浣崇疆鎹,FIFO,LRU,CLOCK,LFU,PBA涔嬪,杩樻湁...椤甸潰缂撳啿绠楁硶锛圥B锛夈愪笉鐭ラ亾鏄惁鏄綘鐨凱BA銆戣繕鏈夋敼杩涚殑CLOCK绠楁硶鑷充簬C绋嬪簭锛屾垜鏄病鏈変簡銆傘傛渶浣崇疆鎹㈢畻娉曪紙OPT锛夛紝鍏堣繘鍏堝嚭缃崲绠楁硶锛團IFO锛夛紝鏈杩戞渶涔呮湭浣跨敤缃崲绠楁硶锛圠RU锛夛紝Clock缃崲绠楁硶锛屾渶灏戜娇鐢ㄧ疆鎹㈢畻娉曪紙LFU锛夛紝椤甸潰缂撳瓨绠楁硶...
  • 鐢–++璇█缂栧啓FIFO椤甸潰缃崲绠楁硶浠g爜
    绛旓細鐢–璇█缂栧啓OPT銆丗IFO銆丩RU锛孡FU鍥涚缃崲绠楁硶銆傜啛鎮夊唴瀛樺垎椤电鐞嗙瓥鐣ャ備簡瑙椤甸潰缃崲鐨绠楁硶銆傛帉鎻′竴鑸父鐢ㄧ殑璋冨害绠楁硶銆傛牴鎹柟妗堜娇绠楁硶寰椾互妯℃嫙瀹炵幇銆傞敾鐐肩煡璇嗙殑杩愮敤鑳藉姏鍜屽疄璺佃兘鍔涖傞鍏堝湪鐢佃剳涓墦寮visualC++0锛岃緭鍏ラ澶勭悊鍛戒护鍜屼富鍑芥暟锛#includestdio.h/*鍑芥暟澶达細杈撳叆杈撳嚭澶存枃浠*/voidmain()/*绌虹被鍨嬶細涓诲嚱...
  • 椤甸潰缃崲绠楁硶
    绛旓細鏈杩戞渶涔呮湭浣跨敤缃崲绠楁硶鎬ц兘濂斤紝鏄渶鎺ヨ繎OPT绠楁硶鎬ц兘鐨勶紝浣嗘槸瀹炵幇璧锋潵闇瑕佷笓闂ㄧ殑纭欢鏀寔锛岀畻娉曞紑閿澶с 鏃堕挓缃崲绠楁硶 鏄竴绉 鎬ц兘鍜屽紑閿鍧囧钩琛 鐨勭畻娉曘傚張绉 CLOCK绠楁硶 锛屾垨 鏈杩戞湭鐢ㄧ畻娉 锛 NRU 锛孨ot Recently Used锛    绠鍗旵LOCK绠楁硶 绠楁硶鎬濇兂锛氫负姣忎釜椤甸潰璁剧疆涓涓 璁块棶浣 锛屽啀...
  • 椤甸潰缃崲绠楁硶鐨勫疄楠
    绛旓細include<stdlib.h> include<iostream.h> include include<stdio.h> define total_instruction 200 /*鎸囦护娴侀暱*/ define M 16 /*瀹為檯椤垫暟*/ define N 4 //鍙敤椤甸潰鏁 struct Pro { int num,time;};int a[total_instruction];int page[N];void Input(Pro p[total_instruction])...
  • 涓鏂囩湅鎳椤甸潰缃崲绠楁硶
    绛旓細娣卞叆鐞嗚В椤甸潰缃崲绠楁硶锛氬眬閮ㄤ笌鍏ㄥ眬绛栫暐鐨勬妷鎷╅〉闈㈢疆鎹細灞閮ㄤ笌鍏ㄥ眬鐨勮壓鏈 鍦ㄥ唴瀛樼鐞嗙殑涓栫晫閲岋紝椤甸潰缃崲绠楁硶鐘瑰璋冭壊鐩橈紝灞閮ㄤ笌鍏ㄥ眬绛栫暐鍚勬湁鍗冪銆傚眬閮ㄧ畻娉曞寘鎷琌PT锛堟渶涓嶆氮璐癸級銆丗IFO锛堝厛杩涘厛鍑猴級銆丩RU锛堟渶杩戞渶灏戜娇鐢級銆丆lock锛堟椂閽熺畻娉曪級鍜孡FU锛堟渶涓嶅父鐢級锛屽叾涓璍RU鍑熷叾瀵归〉闈娇鐢ㄦ椂闂寸殑鏁忔劅鎬э紝杩戜技瀹炵幇...
  • ...璇曞垎鏋愬涓嬩袱涓渚:1銆椤甸潰缃崲绠楁硶涓,涓轰粈涔堢疆鎹㈢畻娉曚細琚玙鐧惧害...
    绛旓細鍥犳鑺辫垂2ns渚垮彲鍚堟垚鐗╃悊鍦板潃锛岃闂富瀛200ns锛屽叡璁2ns+200ns=202ns銆傦紙2锛夊熀浜庝笂杩拌闂簭鍒楋紝褰撹闂櫄鍦板潃24C2H鏃朵骇鐢熺己椤典腑鏂紝鍚堟硶椹荤暀闆嗕负2锛屽繀椤讳粠琛ㄤ腑娣樻卑涓涓椤甸潰锛屾牴鎹鐩殑缃崲绠楁硶锛屽簲娣樻卑1鍙烽〉闈紝鍥犳24C2H鐨勫搴旈〉妗嗗彿涓906H銆傜敱姝ゅ彲寰24C2H鐨勭墿鐞嗗湴鍧涓9064C2H銆
  • 椤甸潰缃崲绠楁硶
    绛旓細1銆佹椂閽熺疆鎹㈢畻娉曟槸涓绉嶆ц兘鍜屽紑閿鍧囧钩琛$殑绠楁硶銆2銆佺畻娉曡鍒欙細灏嗘墍鏈夊彲鑳借缃崲鐨椤甸潰鎺掓垚涓涓惊鐜槦鍒楋紙璁块棶浣嶏紝淇敼浣嶏級绗竴杞細浠庡綋鍓嶄綅缃紑濮嬫壂鎻忓埌绗竴涓紙0锛0锛夌殑椤电敤浜庢浛鎹3銆佺墿鐞嗛〉甯ф暟閲忎负4锛屼笖鍒濆鏃舵病鏈夊搴旂殑铏氭嫙椤点4銆乴ru绠楁硶鏄竴绉椤甸潰缃崲绠楁硶锛屽湪瀵逛簬鍐呭瓨涓絾鏄張涓嶇敤鐨勬暟鎹潡...
  • 椤甸潰缃崲绠楁硶涔婰RU绠楁硶
    绛旓細涓夌甯歌鐨椤甸潰缃崲绠楁硶:FIFO銆丩FU銆丩RU 鍙傝冿細 缂撳瓨绠楁硶锛堥〉闈㈢疆鎹㈢畻娉曪級-FIFO銆丩FU銆丩RU LRU锛圠east Recently Used锛屾渶杩戞渶灏戜娇鐢級绠楁硶鏍规嵁鏁版嵁鐨勫巻鍙茶闂褰曟潵杩涜娣樻卑鏁版嵁锛屽叾鏍稿績鎬濇兂鏄細 濡傛灉涓涓暟鎹湪鏈杩戜竴娈垫椂闂存病鏈夎璁块棶鍒帮紝閭d箞鍦ㄥ皢鏉ュ畠琚闂殑鍙兘鎬т篃寰堝皬 銆備篃灏辨槸璇达紝褰撻檺瀹氱殑...
  • 椤甸潰缃崲绠楁硶
    绛旓細绠楁硶瑙勫垯锛氬皢鎵鏈夊彲鑳借缃崲鐨勯〉闈鎺掓垚涓涓惊鐜槦鍒 锛堣闂綅锛 淇敼浣嶏級绗竴杞細浠庡綋鍓嶄綅缃紑濮嬫壂鎻忓埌绗竴涓紙0锛0锛夌殑椤电敤浜鏇挎崲銆傜浜岃疆锛氳嫢绗竴杞壂鎻忓け璐ワ紝鍒欓噸鏂版壂鎻忥紝鏌ユ壘绗竴涓紙0锛1锛夌殑椤甸潰鐢ㄤ簬鏇挎崲锛屽悓鏃跺皢鎵弿杩囩殑椤甸潰鐨璁块棶浣嶈涓0銆備緥濡傦紙1锛0锛夊彉鎴愶紙0锛0锛夌涓夎疆锛氳嫢绗簩杞壂鎻...
  • 铏氭嫙鍐呭瓨椤甸潰缃崲绠楁硶
    绛旓細1. 鍏堣繘鍏堝嚭锛團IFO锛夌畻娉曪細杩欐槸鏈绠鍗曠殑椤甸潰缃崲绠楁硶锛屽畠鎸夌収椤甸潰杩涘叆鍐呭瓨鐨勯『搴忥紝渚濇灏嗘渶涔呮病鐢ㄨ繃鐨勯〉闈㈡窐姹板嚭鍘汇傝繖绉绠楁硶鐨浼樼偣鏄疄鐜扮畝鍗曪紝缂虹偣鏄湪鏌愪簺鎯呭喌涓嬭〃鐜颁笉浣筹紝灏ゅ叾鏄綋绋嬪簭鐨勮繍琛岃矾寰勯潪甯歌鏁存椂銆2. 鏈杩戞渶涓嶇粡甯镐娇鐢紙LRU锛夌畻娉曪細LRU绠楁硶鏄渶甯哥敤鐨勯〉闈㈢疆鎹㈢畻娉曚箣涓锛屽畠鏍规嵁椤甸潰鐨勪娇鐢...
  • 扩展阅读:最近最少使用页面置换算法 ... 页面置换算法c++实现 ... 页面置换算法clock ... 最少使用页面置换算法 ... 页面置换算法先进先出 ... clock页面置换算法例题 ... lru页面置换算法置换图 ... 页面置换算法模拟实验报告 ... fifo页面置换算法流程图 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网