Автор: Пользователь скрыл имя, 09 Марта 2011 в 11:30, курсовая работа
Цель исследования – выявить эффективность алгоритмов кэширования данных LRU, LFU.
Задачи исследования:
•проанализировать предметную область;
•спроектировать и реализовать программную систему для анализа эффективности алгоритмов кэширования данных LRU, LFU;
•провести сравнительный анализ эффективности алгоритмов кэширования данных LRU, LFU.
Введение 3
1.Анализ предметной области 4
1.Структура кэш-памяти и схема ее работы 4
2.Алгоритмы кэширования 5
3.Ассоциативность и принципы локальности кэш-памяти 6
4.Словарь предметной области 7
2.Проектирование архитектуры разрабатываемой системы 8
1.Иерархия классов 8
2.Блок – схемы алгоритмов 8
3.Реализация системы на языке высокого уровня 10
4.Тестирование приложения 11
5.Исследование эффективности алгоритмов 13
Заключение 17
Список использованной литературы 18
Приложение 19
if (recent[mostRecent] < recent[i])
mostRecent = i;
}
for (int i = 0; i < recent.length; i++)
recent[i] = (mostRecent == i) ? 1: ++recent[i];
return mostRecent;
}
}
package CPU;
//имортируем данные из других классов
import Memory.Cache;
import Memory.RAM;
// класс CPU моделирует работу процессора и реализует интерфейс Runnable
public class CPU implements Runnable {
//класс CPU содержит следущие атрибуты:
//memory - ОП, к которой процессор будет обращаться;
//cache - кэш, к которому процессор будет обращаться;
//form - форма,на которой будет
//datamemory - данные из ОП;
//ref - обращения процессора к ОП;
//t - поток, в котором работает процессор.
private RAM memory;
private Cache cache;
private Form form;
private String [] datamemory;
private int [] ref = null;
private Thread t;
//конструктор класса CPU,куда передаем все атрибуты процессора
public CPU(RAM memory, Cache cache,String[] DataMemory, Form form,int [] Ref){
this.cache=cache;
this.memory=memory;
this.form=form;
this.datamemory=DataMemory;
this.ref = Ref;
t=new Thread(this);
}
//запуск процессора
public void start(){
t.start();
}
// метод run, который составляет поток обращений процессора к ОП
public void run(){
form.VolumeCache.setEnabled(
form.jLabel9.setVisible(true);
form.jButton3.setEnabled(
form.LRUbutton.setEnabled(
form.LFUbutton.setEnabled(
//кол-во попаданий и промахов
float Hit = 0;
float Miss = 0;
//логическая переменная, определяющая кэш промах или попадание.
boolean hit;
String data;
int Address = 0;
for (int i = 0; i <ref.length ; i++) {
//поиск данных в кэше, и возвращение true или false, в случае попадания или промаха
hit = cache.FindData(ref[i]);
//если данные не найдены,то чтение данных из ОП с последующей записью в кэш.
if (!hit){
data=memory.FindData(datamemor
Address=memory.FindAddress(
cache.writeData(data,Address);
form.Statistics.setText(form.S
Miss=Miss+1;
}
//если данные найдены, то
else{
form.Statistics.setText(form.S
Hit=Hit+1;
}
form.jProgressBar1.setValue(fo
}
//вывод статистики
if
(cache.getType().equals("LRU")
form.jTextField1.setText(""+
form.jTextField3.setText(""+
form.jTextField5.setText(""+(
form.jTextField7.setText(""+(
}
else
{
form.jTextField2.setText(""+
form.jTextField4.setText(""+
form.jTextField6.setText(""+(
form.jTextField8.setText(""+(
}
form.Statistics.setText(form.S
form.VolumeCache.setEnabled(tr
form.jButton3.setEnabled(true)
form.jLabel9.setVisible(false)
form.jProgressBar1.setValue(0)
form.LRUbutton.setEnabled(true
form.LFUbutton.setEnabled(true
}
}
package CPU;
import Algorithms.*;
import Memory.*;
import java.util.Random;
import java.util.StringTokenizer;
import javax.swing.JOptionPane;
public class Form extends javax.swing.JFrame {
//proc - процессор
//cache - кэш
//RAM - ОП
Информация о работе Алгоритмы кэширования данных и их эффективность