操作系统页面置换算法程序设计
- 格式:doc
- 大小:46.00 KB
- 文档页数:4
操作系统页面置换算法模拟程序设计
程序源代码:
#include<stdio.h>
#include<iostream.h>
#include<time.h>
#include<stdlib.h>
struct aa
{
int page;int count;aa * next;
};
void main()
{
time_t t;
srand(unsigned(time(&t)));
int i, n, j, ii, m, answer, ffalse, count, fangfa, temp1, min, nn, mm; double sum;
aa * head, *tail, *temp, *table, *first, *ti;
cout<<"请输入m的值:"<<endl;
cout<<"m=";
cin>>m;
cout<<"方法: 2-LRU;3-OPT"<<endl;
cout<<"Mothed:";
cin>>fangfa;
ffalse = 0;answer = 0;table = new (aa);
temp = table;table->page = -1;table->count = 0;head = table;
for(ii=2; ii<=m; ii++){
table = new (aa);
table->page = -1;
table->count = 0;
temp->next = table;
temp = table;
if(ii==m)
{
table->next = NULL;
}
}
tail = table;temp = head;first = head;
count = 0;i = 0;
while(i<320)
{
m in = 400;
i f(count == 0){
n = (rand()%320+1)%320;j = n/10;
}
i f(count == 1){
n = rand()%(n+1);
j = n/10;
}
i f(count == 2){
j = ((n+1)%320)/10;
}
i f(count == 3){
j=((rand()%(320-n-2))+n+2)/10;
}
t able = head;temp = table;answer = 0;min = 400;
i f(fangfa != 1){
t able = head;
w hile(table != NULL){
if(table->count < min){
temp = table;
min = table->count;
}
table = table->next;
}
i f(temp->page != -1)
++ffalse;
temp->page = j;temp->count = 1;
}
table = head;
if((i%320) == 0){
while(table != NULL){
if(table->page != -1)
table->count =1;
table = table->next;
}}
if((fangfa == 4) || (fangfa == 3)){
while(table != NULL){
if(table->page == j){
answer = 1;
++(table->count);
}
table = table->next;
}
if(answer != 1){
table = head;
while(table != NULL){
if(table->count < min){
temp = table;min= table->count;
}
table = table->next;
}
if(temp ->page != -1){
++ffalse;
temp->page = j;table = head;
while(table){
table->count = 1;
table = table->next;
}}
else{
temp->page = j;
++(temp->count);
}}}
if(fangfa == 2){
while((table != NULL) && (fangfa == 2)){
if(table->page == j){
answer = 1;temp = table;
}
table = table->next;
}
if((fangfa == 2) && (answer == 1)){
temp1 = temp->page;
while(temp->next != NULL){
temp->page = temp->next->page;temp = temp->next; }
tail->page = temp1;
}
if((answer != 1) && (fangfa ==2)){
if(first->page != -1)
{
ffalse++;
}
first->page = j;temp = head;
while(temp->next != NULL){
temp->page = temp->next->page;temp = temp->next;
}
tail->page = j;
}}
table = head;
while((table != NULL) && (fangfa == 1)){
if(table->page == j)
answer = 1;table = table->next;
}
if((answer != 1) && (fangfa == 1)){
if(first->page != -1)
ffalse++;
first->page = j;
if(first->next != NULL)
first = first->next;
else
first = head;
}
++i;
++count;
}
sum = 1.0-ffalse/320.0;
if(fangfa == 2)
cout<<"LRU:"<<sum<<" ";
if(fangfa == 3)
cout<<"OTP:"<<sum<<" ";
cout<<endl;
for(ti = head; ti!= NULL; ti = ti->next){ cout<<ti->page<<" ";
}
cout<<endl;
}
程序运行结果:。