目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 目录
  • 一、核心思路
  • 二、代码源码

一、核心思路

二、代码源码

<template><el-form:label-position="right"label-width="100px":model="this.formData"style="max-width: 460px;"class="labelStyle"><el-form-item label="执行页面序列"><el-input v-model="this.formData.pages" placeholder="输入页面以英文逗号分隔" /></el-form-item><el-form-item label="物理块数" ><p><el-input-number v-model="this.formData.blcoks" :min="1" :max="10"/></p><p style="margin-left: 10px"><el-button @click="LRU">运行</el-button></p></el-form-item><el-form-item label="缺页中断次数:"><p style="color: white">{{this.formData.missNum}}</p></el-form-item></el-form><el-table :data="tableData" style="width: 1150px" height="400" ><el-table-column  prop="0" label="序号" width="80" /><el-table-column v-for="(prop_name,index) in this.prop_list":key="index":prop="index+1":label="prop_name"width="80"></el-table-column></el-table>
</template><script>export default {name: "LRU",data:function () {return{// 输入参数formData:{pages:'2,3,2,1,5,2,4,5,3,2,5,2',//页面序列blcoks:1,//物理块数missNum:0,//缺页中断次数},// LRU算法过程记录tableData:[],// 列名表prop_list:[],// 置换列表ex_list:[],}},methods:{// 生成列名表(根据输入的物理块数确定列名)deal_prop(){console.log(this.formData.blcoks);var name="物理块";var prop_name="";for(var i=1;i<=this.formData.blcoks;i++){prop_name=name+i;this.prop_list.push(prop_name);}console.log("this.prop_list",this.prop_list);},// 置换链表(用于置换内存中的页面)(位于链表首端的是最近最久未使用的,新来的放在链表尾部)exchange_list(num){// 查看带调入页面是否已在内存中var exit_flag=0;// 标志是否在内存中for(var i=0;i<this.ex_list.length;i++){// 如果内存中有待调入页面if(num==this.ex_list[i]){exit_flag=1;// 将待调入页面更新到链表末尾this.ex_list.splice(i,1);//删除置换链表中的待调入页面this.ex_list.push(num);//将待调入页面添加在末尾}}// 如果内存没有if(!exit_flag){// 查看是否有空闲空间// 如果有空闲空间if(this.ex_list.length<this.formData.blcoks){//(置换链表长度如果小于物理块数,说明还有空闲空间未使用)this.ex_list.push(num);//在末尾加上待调入页}// 如果没有空闲空间else{// 删除最近最久未使用的页面,并添加待调入页面在链表末尾this.ex_list.splice(0,1);//删除链表首端的页this.ex_list.push(num);//在末尾加上待调入页}}console.log("this.ex_list",this.ex_list);},// LRU算法LRU(){// 1.初始化列名this.deal_prop();// 2.将输入的页面序列拆分成数组var pages = this.formData.pages.split(',');// 3.记录页面置换的过程var free_flag=this.formData.blcoks;//标志空闲物理块个数// 循环处理执行页面序列for(var i=0;i<pages.length;i++){// 内存中无页面(需初始化)if(i==0){// 产生一次缺页中断this.formData.missNum++;//创建一个空白记录对象(对象成员的个数与物理块数相同)var obj={};obj[0]=1;//序号属性for(var v=0;v<this.prop_list.length;v++){obj[v+1]='--';//对象按照物理块编号}console.log("obj",obj);// 增加一次空白记录this.tableData.push(obj);// 让页面序列第一个页面进入内存中this.tableData[0][i+1]="页面"+pages[i];// 空闲物理块-1free_flag--;// 置换链表更新this.exchange_list(pages[i]);}//内存中有页面else{// 检查待调入页是否已在内存中var exit_flag=0;//标志待调入页是否已在内存中// 遍历最后一次页面置换过程的记录,查看待调入页是否已在内存中for(var p=0;p<this.formData.blcoks;p++){var q="页面"+pages[i];if(q==this.tableData[this.tableData.length-1][p+1]){exit_flag=1;break;}}// 待调入页已在物理块中if(exit_flag){// 增加一条记录(根据已存在的最后一条记录为模板)var len=this.tableData.length;var obj=JSON.parse(JSON.stringify(this.tableData[len-1]));this.tableData.push(obj);//修改记录的序号this.tableData[len][0]=this.tableData[len][0]+1;// 更新置换链表this.exchange_list(pages[i]);}// 待调入页不在物理块中else{// 产生一次缺页中断this.formData.missNum++;// 增加一条记录(根据已存在的最后一条记录为模板)var len=this.tableData.length;var obj=JSON.parse(JSON.stringify(this.tableData[len-1]));this.tableData.push(obj);//修改序号this.tableData[len][0]=this.tableData[len][0]+1;// 有空闲物理块if(free_flag>0){// 寻找空闲的物理块for(var j=0;j<this.formData.blcoks;j++){if('--'==this.tableData[len][j+1]){// 将待调入页面放入空闲物理块中this.tableData[len][j+1]="页面"+pages[i];break;}console.log("有空闲")}//空闲物理块-1free_flag--;// 更新置换链表this.exchange_list(pages[i]);}// 无空闲物理块,寻找符合置换条件的页面else{// 寻找最近最久未使用的页面所在的物理块for(var j=0;j<this.formData.blcoks;j++){var z="页面"+this.ex_list[0];//置换链表首端即最近最久未使用的页面console.log("z",z);if(z==this.tableData[len][j+1]){this.tableData[len][j+1]="页面"+pages[i];// 更新置换链表this.exchange_list(pages[i]);break;}}}}}console.log("this.tableData",this.tableData);debugger;}},},}
</script><style>.labelStyle .el-form-item__label{color: white;}
</style>

LRU算法模拟器(基于Java和VUE前端实现)相关推荐

  1. 基数排序算法(基于Java实现)

    title: 基数排序算法(基于Java实现) tags: 基数算法 基数排序算法原理及代码实现: 一.基数排序算法的原理 基数排序属于"分配式排序",又称"桶子法&qu ...

  2. 选择排序算法(基于Java实现)

    title: 选择排序算法(基于Java实现) tags: 选择算法 选择排序算法原理及代码实现: 一.选择排序算法的原理 选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间.但是选择 ...

  3. 插入排序算法(基于Java实现)

    title: 插入排序算法(基于Java实现) tags: 插入算法 插入排序算法原理及代码实现: 一.插入排序算法的原理 首先,我们将数组中的数据分为两个区间,已排序区间和未排序区间.初始已排序区间 ...

  4. 桶排序算法(基于Java实现)

    title: 桶排序算法(基于Java实现) tags: 桶排序算法 桶排序算法的原理和代码实现 一.桶排序算法的原理 桶排序,顾名思义,会用到"桶",核心思想是将要排序的数据分到 ...

  5. 快速排序算法(基于Java实现)

    title: 快速排序算法(基于Java实现) tags: 快速排序算法 快速排序算法的原理与代码实现: 一.快速排序算法的原理 快排算法的思想是: 如果需要排序数组中下标从p到r之间的一组数据,我们 ...

  6. 基于Java Springboot+Vue+MyBatis音乐播放系统设计实现

    ?? 作者主页:Java李杨勇? ?? 简介:Java领域优质创作者??.Java李杨勇公号作者 简历模板.学习资料.面试题库.技术互助[关注我,都给你] ?? 欢迎点赞 ?? 收藏 留言 ?? 视频 ...

  7. 冒泡排序算法(基于Java实现)

    title: 冒泡排序算法(基于Java实现) tags: 冒泡排序算法 冒泡算法原理及代码实现: 一.冒泡算法的原理 冒泡算法只会操作相邻的两个数据.每次冒泡操作都会对相邻的两个元素进行比较,看是否 ...

  8. 基于Java+SSM+Vue农家乐管理系统(住宿-美食-活动)设计与实现

    ⛄博主介绍:⚡全栈开发工程师,精通Web前后端技术.数据库.架构设计.专注于Java技术领域和小程序领域的开发,毕业设计.课程设计项目中主要包括定制化开发.源代码.代码讲解.文档报告辅导.安装调试等. ...

  9. 基于java+ssm+vue+mysql的银行排队叫号系统

    项目介绍 银行排队叫号系统是以科学合理的机构组织合作.流畅疏通的信息渠道为平台,以客户基本信息.计算机.Internet网络.网络管理软件信息技术为手段建立的信息服务管理系统.系统将借助高速和先进的计 ...

最新文章

  1. [openmp]使用嵌套互斥锁锁定变量
  2. Face alignment at 3000 FPS via Regressing Local Binary Features
  3. CentOS7.4安装及断网问题解决方案
  4. 【转】理清基本的git(github)流程
  5. python怎么升级django_线上Django项目python2到3升级日记
  6. java实现图片base64写入本地
  7. android蓝牙动态权限,Android蓝牙权限
  8. 微信支付宝无现金之争:瞄准用户支付大数据
  9. MySQL过期数据归档和清理--pt--archiver
  10. 爬虫goodreads数据_精通技术的读者正在设计自己更好的goodreads版本
  11. ViewPager 2 使用讲解
  12. Flixel引擎学习笔记
  13. 罗马音平假名中文可复制_日语五十音该怎么写呢?易混淆的五十音
  14. 如何让行内元素可以设置宽高
  15. 如何绘制好看的大脑皮层图?wb_view +fun.gii格式操作
  16. 黑苹果驱动神器Hackintool 3.4.4中文版
  17. python期权价格计算器_GitHub - QSCTech-Sange/Options-Calculator: 期权价格计算器——金融工程第二次展示...
  18. 白光干涉仪能做什么丨科普篇
  19. 17.继承和派生的基本概念
  20. 电动汽车如何为电网供电

热门文章

  1. PSENet原理介绍
  2. vmstat命令详解!看了很多vmstat的详解,自己总结的
  3. vbo,ibo,vao
  4. Win10 0x80190001错误解决
  5. 开关电源:选择隔离电源还是非隔离电源(转)
  6. SQLCE数据工具(Flyhoward Ltd SDF Viewer)
  7. ArcGIS的栅格数据空间分析——栅格插值(1)
  8. 实战讲述Flutter跨平台框架应用,帮你突破瓶颈
  9. patch-package打补丁
  10. 2018-2019信息安全导论期末试题