os拟模面页换算置.法xtt情爱是艺,术结婚是技术离婚,是术算这。年头女孩都在争做们“腰小”,谁精稀罕小还“”婆腹呀高?职不如薪高,薪不高高如,高寿寿不如高。用兴C语言C++语或对言页面置算法进行换拟模FL NURU
求要从文件:输入中程进n的访个序问,列及以分给进配程物理页面数的m,出该访问输序列缺页的率。q
/*/***L*U*R********************:
#incudl
#ncilde us .#
efdinemSIZE 3 //配三分内存页块个 #
efdni eSpZI 12/E/总共21进个程
trucst mme
{int
num;
nti ocntu
;m}eemr[y]=3{0,1-,,0-,1,-01};
tsaic tnit prcoes[sSIZpE]={1 2,3,4,1,,,52,,2,3,14,5}/;页/面访序问列
voi dLR(U) ;v
id get()o
;in mait(n)
{
gt(e) ;
prinf(t"\(LnU)\trepRlae\c");n L
U()R
sy;tsme(PAUS"E)"
re;urnt0 ;
}
v
id geto)(
{
nitw 1[2]=1{,2,34,1,2,,51,,2,3,,45; }in
ti,n;
f o(ir=;i01
p{rnitf"(d%",w i]); [
} }
vo
idL RU() {
int
i = ,0 j =0 ,k=,x,y0
i;n rtpleca;e
or(f = 0i i;
{ x=0
;y0=; /置/,yx初值0为
froj = 0;(j
ifmemer(y[].njmu= = prcoes[si]) {
x 1;/=有/同的相则x置1 为replac
=procees[s];im
emry[je.c]uotn0;=//此置c块unt为0o
fr(o=k0;k3;
i(fk=!j&m&mere[yk.nu]m!0)m=meeryk][.cuno+t+;//他不其0为页oucn++t
rbea;//k跳此次出内存循环 块
}
if(=x0=)//有没与将访问页号即同的相内存块
{for
j( =; 0 j mS
ifm(emrey[]j.nu=m 0)
={
=y;1//有置则为1y
relapec0;=m
emery[j.]um=nprocessi[;/]/ 置内存此为访问页块 号
ememr[j].ycuotn0=//置此;c块uon为0
tfr(ok0=k
if(!=kj&&ememry[k.]num!=)m0mereyk[].ouct+n+;/其/他不0页为ountc++
brek;/a跳出此次/存块循内环
}}
i(f=x=0&y&=0=)//既没与即有访问页将相同号的存块也没有内空内块 存{
i
tn m=emmer[0]yc.uont;
fr(jo =;0j
{
i (mfeemr[j].ycontu>)
mm=mmeeyrj][cou.t;
}n/查找/c出uon最大的内t存块m
f r(j=o;j0
{
i(mefemr[j].county=m)={
replace
meme=y[jr]n.um;m
eemry[]jnum=pr.cesosi][;// 置内此块为存问页号块
访memeyrj[.c]uon=0;/t置此/块conu为t 0
}
lseeme emy[r]j.cuot++;//n他其块conu++ t}
}
forj( =0 ; j mSIZ
rpnitf("d% ,"emmeryj][num).; pri
nf(t"t%\dn",\rpeace)l ;
}}
//*
******nru********************
i#ncudle"tdsioh".
#inculde"sdltb.ih"#d
fiee npa 4
d#efien CLAREPE_IROD 4#
defnie axm1 00st
urtc zahn / 处/页数顺理的序栈
{
nti i;int
j; /状态/,用项最于没有使用页近面的换选择替
hanz *entx;
}*pat_p,oap*_atl;i
zhn *mem_zahn[aa];p//组表数内存示页实处现的理
页栈
vido shur(u ) //入输数实函,现现实面数和页执行序顺的取
存{int m=
1;
itn pan_um; / /页数量面
zhan* ;
tpirtfn("peale sipnt tuh ep'sa numebrof storage"):;
casn(f"%i,"&p_naum;)ap_ta
li=(hzan* )allmc(oiseofzz(hna));p
rnti("pleafse inutp htetu nr of tehap (:nd by e0''\n"))
do;{
f(m==i1)a
ptop=ap_t_ial
sca;n(f"%d,&ap"_atl->ii)
;fiap_tail(-i=>=0
{ap_t)il->anex=NUtLL;rebka;
}
ifa(_tapli-i>0a>ipa_unm)/输入/错处理判
o{d
pinrt("foyur npuiitno i srwong!onticuen~~\")n;s
acf(n"%"d&ap_t,ia-l>);ii
fa(_pail->ti=0)={ap
_tila>-nxe=tNLUL;
breka;}
}whle(iap_aitl-i|0|p_atail>i>a-_pnmu);
t=z(anh*) amlocl(siezf(ohan));z
a_ptail-ne>txt;//建立=链表
ap_tail=t;
m+;+}wh
ilea(p_tai->il=!0);
}
oidv hsuhc()//u数内存页面的出表表图示
{
haz n*p;
itn =0;m
ntin;
whi l(em
pme=mzha_[nm];m+
;
n+1;=
d{o
f(i=n1)=
pinrft"内存页(d%**%号d",m, -pi);
e>selpr
itnf("*d%" ,p-i)>;
n+;+
pp=-next;
>w}ihl(e->pnext=!UNLL;)
printf(\"")n;
}
;
}
//===================算=法实的公共现函数分=部===========================
int inmzgonhgzhan( p[*ap,]hazn* j)/t命中函/数
{i
tnm;
f ro(=m0;ma
if)p[m(-]>=ij=t>-)i
{ p[ ]m>-=mjax;
retun r;1br
ak;
}e
rteunr 0;}
/=/===================最近没=使有用面淘页汰算N法UR实=现==============
oidvsuanf 1(a){
nitn
;nt im
i;tn ;l
zhna* p;
zha nt*opap][*ta,i[ap]l
p;ap_=op;tfo
(m=0rm;ap;m++
me{m_zan[h]m(=zan *)hallmocs(ieof(zhaz))n;
em_mhazn[]m>i-=0;emmzh_n[m]a->j0=;
atil[m=t]opm[]m=m_zhae[n]m;}
o{d
fron=1;n
{
/环/命处理中if(min
zhgogn(&ati[lap,p)]=1=)
{fo
(r=m0m
{ait[l]=(zhma n)*mlalco(sizeofz(anh));ta
l[mi]->it=pom[]-i>;
ati[lm->]=topj[m-]j>;
to[mp]-next>t=al[i]m
to;pm[]t=il[a];mi
f(==apm1-
if)(ot[m]-pj==ma>x)
form=0(m;
to+pm]->[=0j;
f(ito[pm-]i>==p>i)-to
[mp]>-j=mx;a
}
}/不/中理处
esle
{f
r(mo=;m
{)
fit(pom]->[=i0)={
l=
1;br
ak;e
}e
les
l=0;
}
i(l=f1)=
form(0=;ma
{
if()to[p]-mi>==)0
{otpm][->=ip->i;t
o[pm->]jm=ax
bre;ka
;
}}el
es
for(m=0;
换{
fi(ot[mp->]j=0)=
to{[m]p->i=-pi>;
top[m]-j=m>a;
xberk;a
}}
from(=;m0ap;m+
{
tial[]m=z(han *m)laocl(szeof(ihzan);)
tai[lm-]>=iotp[]->i;
tmil[m]a-j>=tp[o]->j;m
topm[]>n-xt=eailtm[];
tp[o]m=atl[i];
ifm(=m=ap-1
)i(topf[m]-j=>m=ax)
fo(m=r;0
ot[p]->jm0=
} ;
}
if(n==CELARP_RIOED/)周期结束重/新始化
初
fo{(r=0;mm
po[]->jm0;=}
p
p=>-extn
if;p-(>nxe==NULLt/)/最后加链个表收尾
{fo
r(m0=m;
+
to[m]->npxt=eNLL;
bUeark
};
}}whliep(>-nxte!N=LL);U}
//
=====================理型想淘算法O汰TP实====现=====================/
一些其/用中的到数函
in ptnadan(uzan h*[app)]//判是断检否验毕完,找都到检项验
{i
t mn,h0=;f
orm=(;0
(pf[]-m>=jm=xa
)h{=;b1raek};
r
turn h;
}ein
tzu iuyna(zhn *apap[)/]最/页数查远找要替,换页的数
{
nt i,nm;
hzna*t ,*t21;t1
p=[];0
fr(m=1;om
{t2=pm[;]i
f(t-1>jj)/大于和/等不于交换{
t1t=2;
nm=;
}}
rture nn
}
/;/============理型想汰算淘OP法实T主题函数现============vo
i dsunfa2a)(
{
itn m;
itnn 1=;
itn k,h;z
anh *1,*pp;2z
han t*,1t2;*zhan
*t p[op],*aait[lap];p
=a1_pto;p
orfm=(0;
t
op[]=memm_haz[m];n
opt[]->m=i;0
tp[mo-]j>=axm;
tai[lm]=ot[p];m
}
do{
p=p12->nxt;e
/if/m(igzhong(&tnp[ap]o&,1)p=1=//命)中的况情理处
or(mf0=m;
{if
(tpom][->=i=1p-i)>
{h=;b1ear;}
elske
h=0;}
i
(h=f1=/)命/的情中处况理
{
form=0(;
{
atl[mi=t]ialm[-]>exnt
;tila[m-]>ito=pm][-i;>
tal[i]m>j-m=xa
t;o[m]p=atl[i]m;}
}e
lse/非命/中情处理况{
o{df
orm=(0;
{fi(tpom[->]i==p2>i)
-i(tof[m]p>j==-am)x
otp[]m>-=n;j
}fo(mr=;m
{h
0;=
f(tipo[m]-j>==amx)
{=h1b;reka};
}
if(h=0)=//判断是否寻找全
完brak;e
n+; +
f(pi2>n-ext=N=LLU
br)aek;
p=2p->2extn;}while
p(-2>ext!nN=LUL;)
//k=uzyiuan(&otp[p]a;//寻找)最距远内离页存数也就是要,换替内存的页
fro(m=0;
{i
(fopt[]->i==m)0if
(to[mp]>-==jaxm
)opt[m->]jm=ax+;1
}
1tt=po0[];
k=0;
fo(m=r1;m
t2
t=op[m;]
if(t1-j2->)//大j和等于于交不
换 {
t1t=2
;=mk;
}
}
tp[ko]-i=>p-1>; i /最/页数替远
for换m(0;m
{
tai[ml=tai][m]-ln>xt;e
tali[m->]=itop[]->i;m
til[m]a->=max;j
tp[o]=matlim[];}
}
p=11->pnxt;e
}whilep1(>n-xe!=tUNL)L;
}
vid moani)(
{hzn a*q;
qap=_tpo
s;urh(u);prin
ft"(====最近没有使用=页面汰淘算NUR法现=实============\=")n
;pirtnf(\""n;)
sunafa(1;)
husch();u
prnif(t\"==n==理=型淘想汰法算OT实P=现======================n")\;p
rint("fn\";)
saufn2()a
s;hchuu);
}
(
os拟模面页换算置.法xtt情爱是艺,术结婚是技术离婚,是术算这。年头女孩都在争做们“腰小”,谁精稀罕小还“”婆腹呀高?职不如薪高,薪不高高如,高寿寿不如高。用兴C语言C++语或对言页面置算法进行换拟模FL NURU
求要从文件:输入中程进n的访个序问,列及以分给进配程物理页面数的m,出该访问输序列缺页的率。q
/*/***L*U*R********************:
#incudl
#ncilde us .#
efdinemSIZE 3 //配三分内存页块个 #
efdni eSpZI 12/E/总共21进个程
trucst mme
{int
num;
nti ocntu
;m}eemr[y]=3{0,1-,,0-,1,-01};
tsaic tnit prcoes[sSIZpE]={1 2,3,4,1,,,52,,2,3,14,5}/;页/面访序问列
voi dLR(U) ;v
id get()o
;in mait(n)
{
gt(e) ;
prinf(t"\(LnU)\trepRlae\c");n L
U()R
sy;tsme(PAUS"E)"
re;urnt0 ;
}
v
id geto)(
{
nitw 1[2]=1{,2,34,1,2,,51,,2,3,,45; }in
ti,n;
f o(ir=;i01
p{rnitf"(d%",w i]); [
} }
vo
idL RU() {
int
i = ,0 j =0 ,k=,x,y0
i;n rtpleca;e
or(f = 0i i;
{ x=0
;y0=; /置/,yx初值0为
froj = 0;(j
ifmemer(y[].njmu= = prcoes[si]) {
x 1;/=有/同的相则x置1 为replac
=procees[s];im
emry[je.c]uotn0;=//此置c块unt为0o
fr(o=k0;k3;
i(fk=!j&m&mere[yk.nu]m!0)m=meeryk][.cuno+t+;//他不其0为页oucn++t
rbea;//k跳此次出内存循环 块
}
if(=x0=)//有没与将访问页号即同的相内存块
{for
j( =; 0 j mS
ifm(emrey[]j.nu=m 0)
={
=y;1//有置则为1y
relapec0;=m
emery[j.]um=nprocessi[;/]/ 置内存此为访问页块 号
ememr[j].ycuotn0=//置此;c块uon为0
tfr(ok0=k
if(!=kj&&ememry[k.]num!=)m0mereyk[].ouct+n+;/其/他不0页为ountc++
brek;/a跳出此次/存块循内环
}}
i(f=x=0&y&=0=)//既没与即有访问页将相同号的存块也没有内空内块 存{
i
tn m=emmer[0]yc.uont;
fr(jo =;0j
{
i (mfeemr[j].ycontu>)
mm=mmeeyrj][cou.t;
}n/查找/c出uon最大的内t存块m
f r(j=o;j0
{
i(mefemr[j].county=m)={
replace
meme=y[jr]n.um;m
eemry[]jnum=pr.cesosi][;// 置内此块为存问页号块
访memeyrj[.c]uon=0;/t置此/块conu为t 0
}
lseeme emy[r]j.cuot++;//n他其块conu++ t}
}
forj( =0 ; j mSIZ
rpnitf("d% ,"emmeryj][num).; pri
nf(t"t%\dn",\rpeace)l ;
}}
//*
******nru********************
i#ncudle"tdsioh".
#inculde"sdltb.ih"#d
fiee npa 4
d#efien CLAREPE_IROD 4#
defnie axm1 00st
urtc zahn / 处/页数顺理的序栈
{
nti i;int
j; /状态/,用项最于没有使用页近面的换选择替
hanz *entx;
}*pat_p,oap*_atl;i
zhn *mem_zahn[aa];p//组表数内存示页实处现的理
页栈
vido shur(u ) //入输数实函,现现实面数和页执行序顺的取
存{int m=
1;
itn pan_um; / /页数量面
zhan* ;
tpirtfn("peale sipnt tuh ep'sa numebrof storage"):;
casn(f"%i,"&p_naum;)ap_ta
li=(hzan* )allmc(oiseofzz(hna));p
rnti("pleafse inutp htetu nr of tehap (:nd by e0''\n"))
do;{
f(m==i1)a
ptop=ap_t_ial
sca;n(f"%d,&ap"_atl->ii)
;fiap_tail(-i=>=0
{ap_t)il->anex=NUtLL;rebka;
}
ifa(_tapli-i>0a>ipa_unm)/输入/错处理判
o{d
pinrt("foyur npuiitno i srwong!onticuen~~\")n;s
acf(n"%"d&ap_t,ia-l>);ii
fa(_pail->ti=0)={ap
_tila>-nxe=tNLUL;
breka;}
}whle(iap_aitl-i|0|p_atail>i>a-_pnmu);
t=z(anh*) amlocl(siezf(ohan));z
a_ptail-ne>txt;//建立=链表
ap_tail=t;
m+;+}wh
ilea(p_tai->il=!0);
}
oidv hsuhc()//u数内存页面的出表表图示
{
haz n*p;
itn =0;m
ntin;
whi l(em
pme=mzha_[nm];m+
;
n+1;=
d{o
f(i=n1)=
pinrft"内存页(d%**%号d",m, -pi);
e>selpr
itnf("*d%" ,p-i)>;
n+;+
pp=-next;
>w}ihl(e->pnext=!UNLL;)
printf(\"")n;
}
;
}
//===================算=法实的公共现函数分=部===========================
int inmzgonhgzhan( p[*ap,]hazn* j)/t命中函/数
{i
tnm;
f ro(=m0;ma
if)p[m(-]>=ij=t>-)i
{ p[ ]m>-=mjax;
retun r;1br
ak;
}e
rteunr 0;}
/=/===================最近没=使有用面淘页汰算N法UR实=现==============
oidvsuanf 1(a){
nitn
;nt im
i;tn ;l
zhna* p;
zha nt*opap][*ta,i[ap]l
p;ap_=op;tfo
(m=0rm;ap;m++
me{m_zan[h]m(=zan *)hallmocs(ieof(zhaz))n;
em_mhazn[]m>i-=0;emmzh_n[m]a->j0=;
atil[m=t]opm[]m=m_zhae[n]m;}
o{d
fron=1;n
{
/环/命处理中if(min
zhgogn(&ati[lap,p)]=1=)
{fo
(r=m0m
{ait[l]=(zhma n)*mlalco(sizeofz(anh));ta
l[mi]->it=pom[]-i>;
ati[lm->]=topj[m-]j>;
to[mp]-next>t=al[i]m
to;pm[]t=il[a];mi
f(==apm1-
if)(ot[m]-pj==ma>x)
form=0(m;
to+pm]->[=0j;
f(ito[pm-]i>==p>i)-to
[mp]>-j=mx;a
}
}/不/中理处
esle
{f
r(mo=;m
{)
fit(pom]->[=i0)={
l=
1;br
ak;e
}e
les
l=0;
}
i(l=f1)=
form(0=;ma
{
if()to[p]-mi>==)0
{otpm][->=ip->i;t
o[pm->]jm=ax
bre;ka
;
}}el
es
for(m=0;
换{
fi(ot[mp->]j=0)=
to{[m]p->i=-pi>;
top[m]-j=m>a;
xberk;a
}}
from(=;m0ap;m+
{
tial[]m=z(han *m)laocl(szeof(ihzan);)
tai[lm-]>=iotp[]->i;
tmil[m]a-j>=tp[o]->j;m
topm[]>n-xt=eailtm[];
tp[o]m=atl[i];
ifm(=m=ap-1
)i(topf[m]-j=>m=ax)
fo(m=r;0
ot[p]->jm0=
} ;
}
if(n==CELARP_RIOED/)周期结束重/新始化
初
fo{(r=0;mm
po[]->jm0;=}
p
p=>-extn
if;p-(>nxe==NULLt/)/最后加链个表收尾
{fo
r(m0=m;
+
to[m]->npxt=eNLL;
bUeark
};
}}whliep(>-nxte!N=LL);U}
//
=====================理型想淘算法O汰TP实====现=====================/
一些其/用中的到数函
in ptnadan(uzan h*[app)]//判是断检否验毕完,找都到检项验
{i
t mn,h0=;f
orm=(;0
(pf[]-m>=jm=xa
)h{=;b1raek};
r
turn h;
}ein
tzu iuyna(zhn *apap[)/]最/页数查远找要替,换页的数
{
nt i,nm;
hzna*t ,*t21;t1
p=[];0
fr(m=1;om
{t2=pm[;]i
f(t-1>jj)/大于和/等不于交换{
t1t=2;
nm=;
}}
rture nn
}
/;/============理型想汰算淘OP法实T主题函数现============vo
i dsunfa2a)(
{
itn m;
itnn 1=;
itn k,h;z
anh *1,*pp;2z
han t*,1t2;*zhan
*t p[op],*aait[lap];p
=a1_pto;p
orfm=(0;
t
op[]=memm_haz[m];n
opt[]->m=i;0
tp[mo-]j>=axm;
tai[lm]=ot[p];m
}
do{
p=p12->nxt;e
/if/m(igzhong(&tnp[ap]o&,1)p=1=//命)中的况情理处
or(mf0=m;
{if
(tpom][->=i=1p-i)>
{h=;b1ear;}
elske
h=0;}
i
(h=f1=/)命/的情中处况理
{
form=0(;
{
atl[mi=t]ialm[-]>exnt
;tila[m-]>ito=pm][-i;>
tal[i]m>j-m=xa
t;o[m]p=atl[i]m;}
}e
lse/非命/中情处理况{
o{df
orm=(0;
{fi(tpom[->]i==p2>i)
-i(tof[m]p>j==-am)x
otp[]m>-=n;j
}fo(mr=;m
{h
0;=
f(tipo[m]-j>==amx)
{=h1b;reka};
}
if(h=0)=//判断是否寻找全
完brak;e
n+; +
f(pi2>n-ext=N=LLU
br)aek;
p=2p->2extn;}while
p(-2>ext!nN=LUL;)
//k=uzyiuan(&otp[p]a;//寻找)最距远内离页存数也就是要,换替内存的页
fro(m=0;
{i
(fopt[]->i==m)0if
(to[mp]>-==jaxm
)opt[m->]jm=ax+;1
}
1tt=po0[];
k=0;
fo(m=r1;m
t2
t=op[m;]
if(t1-j2->)//大j和等于于交不
换 {
t1t=2
;=mk;
}
}
tp[ko]-i=>p-1>; i /最/页数替远
for换m(0;m
{
tai[ml=tai][m]-ln>xt;e
tali[m->]=itop[]->i;m
til[m]a->=max;j
tp[o]=matlim[];}
}
p=11->pnxt;e
}whilep1(>n-xe!=tUNL)L;
}
vid moani)(
{hzn a*q;
qap=_tpo
s;urh(u);prin
ft"(====最近没有使用=页面汰淘算NUR法现=实============\=")n
;pirtnf(\""n;)
sunafa(1;)
husch();u
prnif(t\"==n==理=型淘想汰法算OT实P=现======================n")\;p
rint("fn\";)
saufn2()a
s;hchuu);
}
(