操作系统课程设计-模拟FIFO页面调度算法处理缺页中断c++源码|精品课程网站设计|课程设计网报告总结心得
#include
#includeclass List;class item{public: friend class List;private: item(int p=0,int s=0,int b=0,int l=0,int c=0){page=p;sign=s;block=b;locate=l;changesign=c;next=NULL;} item *next; int page; int sign; int changesign; int block; int locate;};class List{public: List(int p=0,int s=0,int b=0,int l=0,int c=0){list=new item(p,s,b,l,c);} int check(int p); int insert(int p,int s,int b,int l); void print(); int append(int p,int s,int b,int l); int length(); int alternative(int k,int p); void reverse();private: item *list; item *end();};int List ::alternative(int k,int p){ int n,m; item *pt=list,*pr=list; for(int temp=1;temp<=k;temp++) { pt=pt->next; } cout<block; cout<<"被调换的页的页号为:"<page<<" 该页所对应的修改标志位为:"<changesign<>m; for(;pr;pr=pr->next) { if(pr->locate==m) { cout<<"该磁盘地址已存有数据,请选择另外的磁盘地址进行存储:"; cin>>m; pr=list; } } //cout<<"++++++++++++++++++++++++++++++++++"<locate=m; pt->page=p; return n;}
void List :: print(){ if(list==0) cout<<"页表中无数据!"<page<<" "<sign<<" "<block<<" "<changesign<<" "<locate<next; } cout<next=pt; } return 1;}item *List::end(){ item *prv,*pt; for(prv=pt=list;pt;prv=pt,pt=pt->next) ; return prv;}int List::insert(int p,int s,int b,int l){ item *pt=new item(p,s,b,l); pt->next=list; list=pt; return 1;}int List::length(){ int cnt=0; item *pt=list; for(;pt;pt=pt->next,cnt++) ; return cnt;}int List::check(int p){ item *pt=list; int a=-1; for(;pt;pt=pt->next) { if(pt->page==p&&pt->sign==1) a=pt->block; } return a;}void List::reverse(){ item *pt,*prv,*tmp; prv=NULL; pt=list; list=end(); while(pt!=list) { tmp=pt->next; pt->next=prv; prv=pt; pt=tmp; } list->next=prv;}int checkp(int n);int main(){ int j=0; List list(0,1,5,11); list.append(1,1,8,12); list.append(2,1,9,13); list.append(3,1,1,21); //list.append(4,0,-1,22); //list.append(5,0,-1,23); //list.append(6,0,-1,121); j=list.length();
cout<<"************************模拟FIFO页面调度算法处理缺页中断************************"<>n; cout<<"*************************************************"<=1;c--) { if(n==k) a=1; else k=k*2; } return a;}