操作系统课程设计-页面置换算法C语言07010复习进程.docxVIP

  • 22
  • 0
  • 约8.55千字
  • 约 18页
  • 2020-08-30 发布于天津
  • 举报

操作系统课程设计-页面置换算法C语言07010复习进程.docx

操作系统课程设计-页 面 置 换 算 法 C 语 言 07010 精品文档 精品文档 收集于网络,如有侵权请联系管理员删除 收集于网络,如有侵权请联系管理员删除 页面置换算法的演示 题目要求: 设计一个虚拟存储区和内存工作区,编程序演示下述算法的具体实现过 程,并计算访问命中率: 要求设计主界面以灵活选择某算法,且以下算法都要实现 1) 最佳置换算法(OPT):将以后永不使用的或许是在最长(未来)时间内不再 被访问的页面换出。 2) 先进先出算法(FIFO):淘汰最先进入内存的页面,即选择在内存中驻留 时间最久的页面予以淘汰。 3) 最近最久未使用算法(LRU):淘汰最近最久未被使用的页面。 4) 最不经常使用算法(LFU) 实验目的: 1、 用C语言编写OPT、FIFO、LRU,LFU四种置换算法 2、 熟悉内存分页管理策略。 3、 了解页面置换的算法。 4、 掌握一般常用的调度算法。 5、 根据方案使算法得以模拟实现。 6、 锻炼知识的运用能力和实践能力。 相关知识: 1虚拟存储器的引入: 局部性原理:程序在执行时在一较短时间内仅限于某个部分;相应的,它所 访问的存储空间也局限于某个区域,它主要表现在以下两个方面:时间局限性 和空间局限性。 2 ?虚拟存储器的定义: 虚拟存储器是只具有请求调入功能和置换功能,能从逻辑上对内存容量进行 扩充的一种存储器系统。 3?虚拟存储器的实现方式: 分页请求系统,它是在分页系统的基础上,增加了请求调页功能、页面置换 功能所形成的页面形式虚拟存储系统。 请求分段系统,它是在分段系统的基础上,增加了请求调段及分段置换功能 后,所形成的段式虚拟存储系统。 页面分配: 平均分配算法,是将系统中所有可供分配的物理块,平均分配给各个进 程。 按比例分配算法,根据进程的大小按比例分配物理块。 考虑优先的分配算法,把内存中可供分配的所有物理块分成两部分:一部分 按比例地分配给各进程;另一部分则根据个进程的优先权,适当的增加其相应 份额后,分配给各进程。 页面置换算法: 常用的页面置换算法有 OPT、FIFO、LRU、Clock、LFU、PBA等。 设计思想: 选择置换算法,先输入所有页面号,为系统分配物理块,依次进行置换: OPT基本思想: 是用一维数组page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入 物理块中的页面。数组next[mSIZE]记录物理块中对应页面的最后访问时间。 每当发生缺页时,就从物理块中找出最后访问时间最大的页面,调出该页,换 入所缺的页面。 【特别声明】 若物理块中的页面都不再使用,则每次都置换物理块中第一个位置的页 面。 FIFO基本思想: 是用队列存储内存中的页面,队列的特点是先进先出,与该算法是一致 的,所以每当发生缺页时,就从队头删除一页,而从队尾加入缺页。或者借助 辅助数组time[mSIZE]记录物理块中对应页面的进入时间,每次需要置换时换 出进入时间最小的页面。 LRU基本思想: 是用一维数组page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入 物理块中的页面。数组flag[10]标记页面的访问时间。每当使用页面时,刷新访 问时间。发生缺页时,就从物理块中页面标记最小的一页,调出该页,换入所 缺的页面。 五.流程图: 如下页所示 源代码: 如下页所示【使用C语言】 #i nclude stdio.h #i nclude stdlib.h /*全局变量*/ int mSIZE; /* 物理块数 */ int pSIZE; /*页面号引用串个数*/ static int memery[10]={0}; /* 物理块中的页号 */ static int page[100]={0}; /* 页面号引用串 */ static int temp[100][10]={0}; /* 辅助数组 */ /*置换算法函数*/ void FIFO(); void LRU(); void OPT(); /*辅助函数*/ void print(un sig ned int t); void desig nBy(); void dow nl oad(); void mDelay(unsigned int Delay); /*主函数*/ void mai n() { int i,k,code; system(color 0A); desig nBy(); printf( |请按任意键进行初始化操作 … I \n); \n);printf( 1 \n); printf( ); getch(); system(cls); system(color OB); printf(请输入物理块的个数(M=10):); sca nf(%d,mSIZE); prin

文档评论(0)

1亿VIP精品文档

相关文档