У меня есть проект, в котором меня просят разработать приложение для имитации работы различных алгоритмов замены страниц (с различным размером рабочего набора и периодом стабильности). Мои результаты:
![](https://i.imgur.com/7nZhV.png)
![](https://i.imgur.com/mfIpW.png)
![](https://i.imgur.com/J9kbB.png)
![](https://i.imgur.com/YbJom.png)
- Вертикальная ось: ошибки страницы
- Горизонтальная ось: размер рабочего набора
- Ось глубины: стабильный период
Являются ли мои результаты разумными? Я ожидал, что LRU будет иметь лучшие результаты, чем FIFO. Здесь они примерно одинаковы.
Для случайного периода стабильности и размера рабочего набора, кажется, не влияет на производительность вообще? Я ожидал, что подобные графики, как FIFO & LRU, просто худшая производительность? Если ссылочная строка очень стабильна (маленькие ветви) и имеет небольшой размер рабочего набора, у нее все равно должно быть меньше ошибок страниц, чем у приложения с большим количеством ветвей и большим размером рабочего набора?
Подробнее
Мой код Python | Проектный вопрос
- Длина эталонной строки (RS): 200 000
- Размер виртуальной памяти (P): 1000
- Размер основной памяти (F): 100
- количество ссылок на страницу времени (м): 100
- Размер рабочего набора (е): 2 - 100
- Стабильность (т): 0 - 1
Размер рабочего набора (e) и стабильный период (t) влияют на то, как создается ссылочная строка.
|-----------|--------|------------------------------------|
0 p p+e P-1
Итак, предположим, что выше виртуальная память размера P. Для генерации эталонных строк используется следующий алгоритм:
- Повторять до тех пор, пока не будет сгенерирована ссылочная строка
- выбрать
m
чисел в [p, p + e]. m
имитирует или ссылается на количество ссылок на страницу
- выбрать случайное число, 0 <= r <1 </li>
- если г
- генерировать новый p
- else (++ p)% P
ОБНОВЛЕНИЕ (В ответ на ответ @ MrGomez)
Однако вспомните, как вы добавили свои входные данные: используя random.random,
таким образом, давая вам равномерное распределение данных с вашим контролируемым
уровень энтропии. Из-за этого все значения одинаково
и потому, что вы построили это в пространстве с плавающей запятой,
повторения крайне маловероятны.
Я использую random
, но он также не является полностью случайным, ссылки генерируются с некоторой локализацией, хотя используются параметры рабочего размера и ссылочной страницы с номерами?
Я пытался увеличить numPageReferenced
относительно numFrames
в надежде, что он будет ссылаться на страницу, находящуюся в данный момент в памяти, больше, таким образом показывая преимущество в производительности LRU по сравнению с FIFO, но это не дало мне четкого результата. Просто к вашему сведению, я попробовал то же самое приложение со следующими параметрами (соотношение страниц / фреймов осталось прежним, я уменьшил размер данных, чтобы ускорить процесс).
--numReferences 1000 --numPages 100 --numFrames 10 --numPageReferenced 20
Результат
![enter image description here](https://i.stack.imgur.com/fyhZd.png)
Все еще не такая большая разница. Правильно ли мне сказать, что если я увеличу numPageReferenced
относительно numFrames
, LRU будет иметь лучшую производительность, так как будет больше ссылаться на страницы в памяти? Или, может быть, я что-то неправильно понимаю?
Для случайного, я думаю в соответствии с:
- Предположим, есть высокая стабильность и небольшой рабочий набор. Это означает, что ссылки на страницы, скорее всего, будут в памяти. Таким образом, необходимость запуска алгоритма замены страницы ниже?
Хм, может быть, я должен думать об этом больше :)
ОБНОВЛЕНИЕ: менее заметная ошибка при более низкой стабильности
![enter image description here](https://i.stack.imgur.com/2fqVQ.png)
Здесь я пытаюсь показать удаление, поскольку размер рабочего набора превышает количество кадров (100) в памяти. Тем не менее, заметить, что побивание кажется менее очевидным с более низкой стабильностью (высокий t
), почему это может быть? Является ли это объяснением того, что по мере того, как стабильность становится низкой, количество ошибок на странице приближается к максимальному, поэтому не имеет большого значения размер рабочего набора?