1、 private:string ope; long int page; long int unit; public: ins() ins(string o,long int p,long int u):ope(o),page(p),unit(u) void setope(string o) ope=o; void setpage(long int p) page=p; void setunit(long int u) unit=u; string getope()return ope; long int getpage()return page; long int getunit()retur
2、n unit; ; class work long int Page; int sym; long int inum; long int onum; work() work(long int P, int s,long int i,long int o):Page(P),sym(s),inum(i),onum(o) void setPage(long int P) Page=P; void setsym( int s) sym=s; void setinum(long int i) inum=i; void setonum(long int o) onum=o; long int getPag
3、e()return Page; int getsym()return sym; long int getinum()return inum; long int getonum()return onum; void diaodu(work *w,ins * i,int numofins) for(int j=0;jnumofins;j+) long int tempofk; long int a =ij.getpage(); for(int k=0;k7;k+) /7是页表的页数 if(wk.getPage()!=a) continue; else tempofk=k; break; if(wt
4、empofk.getsym()=1) cout绝对地址:wtempofk.getinum()*128+ij.getunit() 磁盘地址为:wtempofk.getonum()操作为:ij.getope()endl; else cout*发生缺页中断 int main() ins*INS=new ins12; INS0.setope (+); INS0.setpage(0); INS0.setunit(70); INS1.setope ( INS1.setpage(1); INS1.setunit(50); INS2.setope ( INS2.setpage(2); INS2.setunit
5、(15); INS3.setope (存 INS3.setpage(3); INS3.setunit(21); INS4.setope (取 INS4.setpage(0); INS4.setunit(56); INS5.setope (- INS5.setpage(6); INS5.setunit(40); INS6.setope (移位 INS6.setpage(4); INS6.setunit(53); INS7.setope ( INS7.setpage(5); INS7.setunit(23); INS8.setope ( INS8.setpage(1); INS8.setunit(
6、37); INS9.setope ( INS9.setpage(2); INS9.setunit(78); INS10.setope ( INS10.setpage(4); INS10.setunit(1); INS11.setope ( INS11.setpage(6); INS11.setunit(84); work*W =new work7; ifstream in(g:/operate1.txt long int p; int s; long int i; long int o; for(int jj=0;jjp;ins;i;o ; Wjj.setPage(p); Wjj.setsym
7、(s);Wjj.setinum(i);Wjj.setonum(o); diaodu(W,INS,12);五结果显示 操作系统实验二第二题一用先进先出FIFO 是 否是九程序清单/ 操作系统实验二.cpp : int change; work(long int P, int s,long int i,int c,long int o):Page(P),sym(s),inum(i),change(c),onum(o) void setchange(int c) change=c; int getchange()return change; const int m=4; int pm=0,1,2,3
8、; int k=0; int tempofins=12; for(int ii=0;iitempofins;ii+) int L=iii.getpage(); for(int iii=0;iiiiii+) if(wiii.getPage()!=L) else if(wiii.getsym()=1) if(iii.getope()=) wiii.setchange (1); cout绝对地址谓:wiii.getinum()*128+iii.getunit()wiii.getinum()iii.getunit() else 产生中断 int j=pk; wj.setsym(0); wj.setinum(-1); wL.setsym(1); wL.setinum(rand()%20+10); if(wj.getchange ()=1) cout第页需要重新写入磁盘中 第L页被调入主存 pk=L; k=(k=m-1)?0:(k+1);调入主存的页:; for(int iiii=0;iiiim;iiii+) int kk=piiii;wkk.getPage()endl./operate.txt int c;c;Wjj.setchange(c);十程序结果