请求页式存储管理的页面置换算法内容摘要:

ail。 int diseffect,a[total_instruction]。 int page[total_instruction], offset[total_instruction]。 void initialize()。 void FIFO()。 void LRU()。 void OPT()。 int main() { int S,i。 srand((int)getpid())。 S=(int)rand()%390。 for(i=0。 itotal_instruction。 i+=1) /*产生指令队列 */ { a[i]=S。 /*任选一指令访问点 */ a[i+1]=a[i]+1。 /*顺序执行一条指令 */ a[i+2]=(int)rand()%390。 /*执行前地址指令 m’*/ a[i+3]=a[i+2]+1。 /*执行后地址指令 */ S=(int)rand()%390。 } for(i=0。 itotal_instruction。 i++) /*将指令序列变换成页地址流 */ { page[i]=a[i]/10。 offset[i]=a[i]%10。 } for(i=4。 i=32。 i++) /*用户内存工作区从 4 个页面到 32 个页面 */ { printf(%2d page frames,i)。 FIFO(i)。 LRU(i)。 OPT(i)。 printf(\n)。 } return 0。 } void FIFO(total_pf) /*FIFO(First in First out)ALGORITHM*/ int total_pf。 /*用户进程的内存页面数 */ { int i。 pfc_type *p, *t。 initialize(total_pf)。 /*初始化相关页面控制用数据结构 */ busypf_head=busypf_tail=NUL。 /*忙页面队列头,对列尾链接*/ for(i=0。 itotal_instruction。 i++) { if(pl[page[i]].pfn==INVALID) /*页面失效 */ { diseffect+=1。 /*失效次数 */ if(freepf_head==NUL) /*无空闲页面 */ { p=busypf_headnext。 pl[busypf_headpn].pfn=INV。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。