Алгоритмы кэширования данных и их эффективность

Автор: Пользователь скрыл имя, 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

Файлы: 4 файла

Графики.xlsx

— 16.78 Кб (Открыть, Скачать)

Курсовая работа.docx

— 413.90 Кб (Открыть, Скачать)

Приложение.docx

— 41.71 Кб (Скачать)

                .addGap(105, 105, 105))

        ); 

        getContentPane().add(jPanel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 260, 720, 260)); 

        jMenu1.setText("File"); 

        jMenuItem1.setText("New");

        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                jMenuItem1ActionPerformed(evt);

            }

        });

        jMenu1.add(jMenuItem1); 

        jMenuItem2.setText("Exit");

        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                jMenuItem2ActionPerformed(evt);

            }

        });

        jMenu1.add(jMenuItem2); 

        jMenuBar1.add(jMenu1); 

        setJMenuBar(jMenuBar1); 

        pack();

    }// </editor-fold>                       

    //формируем обращения процессора

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        

       try{

          if (Integer.parseInt(RefCPU.getText())==0){

             JOptionPane.showMessageDialog(this, "Введите верные данные!");

          }

          else{

              Random r = new Random ();

              String Ref ="";

              if (jCheckBox1.isSelected()){

                 for (int i = 0; i < Integer.parseInt(RefCPU.getText()); i++) {

                     Ref=Ref+(r.nextInt(memory.Data.length*jSlider2.getValue()/100))+"|";

                 }

                 AreaCPU.setText(Ref);

                 jButton1.setEnabled(false);

                 RefCPU.setEnabled(false);

                 jSlider2.setEnabled(false);

                 jCheckBox1.setEnabled(false);

                 LFUbutton.setEnabled(true);

                 LRUbutton.setEnabled(true);

                 }

                 else{

                    for (int i = 0; i < Integer.parseInt(RefCPU.getText()); i++) {

                      Ref=Ref+(r.nextInt(memory.Data.length))+"|";

                    }

                    AreaCPU.setText(Ref);

                    jButton1.setEnabled(false);

                    RefCPU.setEnabled(false);

                    jSlider2.setEnabled(false);

                    jCheckBox1.setEnabled(false);

                    LFUbutton.setEnabled(true);

                    LRUbutton.setEnabled(true);

                 }

            }

       }

       catch(NumberFormatException ex){

         JOptionPane.showMessageDialog(this, "Введите верные данные!");

       }

       catch(ArrayIndexOutOfBoundsException e){

         JOptionPane.showMessageDialog(this, "Введите верные данные!");

       } 

    }                                       

   //устанавливаем объем кэша и ОП

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                        

      try{

        if (t==0) {

           memory = new RAM(Integer.parseInt(VolumeRAM.getText()));

           Volume =Integer.parseInt(VolumeCache.getText());

       jTextArea2.setText(memory.ShowData());

       jButton3.setEnabled(false);

       VolumeRAM.setEnabled(false);

       VolumeCache.setEnabled(false);

       jButton1.setEnabled(true);

       RefCPU.setEnabled(true);

       jCheckBox1.setEnabled(true);

       }

       else {

           memory = new RAM(Integer.parseInt(VolumeRAM.getText()));

           Volume =Integer.parseInt(VolumeCache.getText());

       jTextArea2.setText(memory.ShowData());

       jButton3.setEnabled(false);

       VolumeRAM.setEnabled(false);

       VolumeCache.setEnabled(false);

       jCheckBox1.setEnabled(false);

       }

       t++;

      }

      catch(NumberFormatException ex){

          JOptionPane.showMessageDialog(this, "Введите верные данные!");

      }

      catch(ArrayIndexOutOfBoundsException e)

      {

        JOptionPane.showMessageDialog(this, "Введите верные данные!");

      }

    }                                       

   //запускаем  алгоритм LRU, с последующим выводом  статистики

    private void LRUbuttonActionPerformed(java.awt.event.ActionEvent evt) {                                         

    cache = new LRU(Volume);

    Statistics.setText("Статистика\nОбъем оперативной памяти:"+VolumeRAM.getText()+"\nОбъем кэш памяти:"+ VolumeCache.getText()+"\nКоличество обращений процессора к ОП:"+RefCPU.getText()+"\nАлгоритм кэширования:"+ cache.getType()+"\n");

    generateProc();

    proc = new CPU(memory,cache,memory.Data,this,data);

    proc.start();

    }                                        

    //запускаем алгоритм LFU, с последующим  выводом статистики

    private void LFUbuttonActionPerformed(java.awt.event.ActionEvent evt) {                                         

    cache = new LFU(Volume);

    Statistics.setText("Статистика\nОбъем оперативной памяти:"+VolumeRAM.getText()+"\nОбъем кэш памяти:"+ VolumeCache.getText()+"\nКоличество обращений процессора к ОП:"+RefCPU.getText()+"\nАлгоритм кэширования:"+ cache.getType()+"\n");

    generateProc();

    proc = new CPU(memory,cache,memory.Data,this,data);

    proc.start();

    }                                        

     //меню NEW

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                          

    t=0;

    jTextArea2.setText("");

    Statistics.setText("");

    AreaCPU.setText("");

    jTextField1.setText("");

    jTextField2.setText("");

    jTextField3.setText("");

    jTextField4.setText("");

    jTextField5.setText("");

    jTextField6.setText("");

    jTextField7.setText("");

    jTextField8.setText("");

    RefCPU.setText("");

    VolumeCache.setText("");

    VolumeRAM.setText("");

    VolumeCache.setEnabled(true);

    VolumeRAM.setEnabled(true);

    jButton3.setEnabled(true);

    LFUbutton.setEnabled(false);

    LRUbutton.setEnabled(false);

    jCheckBox1.setEnabled(false);

    }                                         

   // меню EXIT

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {                                          

        Form.this.dispose();

    }                                           

    private void jCheckBox1ItemStateChanged(java.awt.event.ItemEvent evt) {                                           

        jSlider2.setEnabled(g);

        if (g){

            g=false;

        }

        else {

            g=true;

Титульник и содержание.docx

— 21.73 Кб (Открыть, Скачать)

Информация о работе Алгоритмы кэширования данных и их эффективность