Go to file
2024-09-23 14:58:08 +03:00
.gitignore dont work on windows 2024-09-22 15:23:43 +03:00
2Q_cache.h bugs fixed 2024-09-21 11:51:04 +03:00
cache_test final comit 2024-09-22 15:51:02 +03:00
cache_test.cpp ideal_cache 2024-09-22 03:25:10 +03:00
Ideal_cache.h ideal_cache 2024-09-22 03:25:10 +03:00
main.cpp testing 2024-09-15 18:40:48 +03:00
makefile dont work on windows 2024-09-22 15:23:43 +03:00
Readme.md final comit 2024-09-22 15:54:31 +03:00
test_gen.py variation of tests 2024-09-23 14:58:08 +03:00

Алгоритм кэширования 2Q

Алгоритм кэширования 2Q (Two Queues) представляет собой метод управления кэш-памятью. Этот алгоритм состоит из двух очередей: q1 и q2. q1 является буфером, в который добавляются данные только в начале и замещаются из конца, а q2 используется для хранения "недавно использованных" данных.

Тестирование

Генератор тестов - test_gen.py спрашивает количество тестов и создает pytests.txt

Запуск тестов

make test - собирает программу затем ./cache_test "test_file_name"

Напиример:

./cache_test pytests.txt

Принцип работы

Когда данные добавляются в кэш, они помещаются в начало q1. Если данные извлекаются из кэша, они перемещаются из q1 в начало q2. Если данные снова запрашиваются и они находятся в q2, они перемещаются в конец q1. Если данные снова запрашиваются и их уже нет в кэше, они добавляются в начало q1, а если q1 заполнена, то данные из конца q1 удаляются и добавляются новые данные в начало q1.

Преимущества

Эффективность:

алгоритм 2Q обладает хорошей производительностью и способен эффективно управлять кэш-памятью.

Адаптивность:

алгоритм автоматически регулируется в зависимости от обращаемости данных, приспосабливаясь к изменениям в запросах.

Недостатки

Не подходит для всех типов данных: алгоритм 2Q неэффективен для случаев, когда данные необходимо хранить в определённом порядке. Сложность реализации: реализация алгоритма кэширования 2Q может быть более сложной, чем у других методов управления кэш-памятью.