Как улучшенный алгоритм второго шанса имеет преимущество перед изменениями, которые были изменены? - PullRequest
0 голосов
/ 22 октября 2019

Я читал учебник " Основные понятия операционной системы, издание 10" Грега Ганга, Питера Б. Гальвина, Авраама Силбершаца"

В учебнике сначала говорится о измененный бит на странице 403 ...

" Если бит установлен , мы знаем, что страница была изменена с момента ее чтения из вторичного хранилищаВ этом случае мы должны записать страницу в хранилище . Если бит модификации не установлен , то страница не была изменена, поскольку она была прочитана в память. случай, нам не нужно записывать страницу памяти в хранилище : она уже есть."

Однако позже в книге, страница 410-411, это, кажется, противоречит ...

" Мы можем улучшить алгоритм второго шанса, рассматривая опорный бит и бит модификации (описанный в разделе 10.4.1) как упорядоченную пару. С этими двумя битами мы имеем следующие четыревозможные классы:

1. (0, 0) нинедавно использованный или измененный - лучшая страница для замены

2. (0, 1) не использовался недавно, но был изменен - ​​не так хорошо, потому что перед заменой необходимо будет выписать страницу

3. (1, 0) недавно использованный, но чистый - вероятно, скоро снова будет использоваться

4. (1, 1) недавно использованный и измененный - вероятно, скоро будет использован снова, и страница должна быть записана во вторичное хранилище, прежде чем ее можно будет заменить

Каждая страницав одном из этих четырех классов. Когда требуется замена страницы, мы используем ту же схему, что и в алгоритме часов;но вместо того, чтобы проверить, имеет ли ссылка, на которую мы указываем, бит ссылки, установленный в 1, мы исследуем класс, к которому принадлежит эта страница. Мы заменим первую страницу, найденную в низшем непустом классе. Обратите внимание, что нам, возможно, придется сканировать циклическую очередь несколько раз, прежде чем мы найдем страницу для замены. Основное различие между этим алгоритмом и более простым алгоритмом синхронизации состоит в том, что здесь мы отдаем предпочтение тем страницам, которые были изменены, чтобы уменьшить количество требуемых операций ввода-вывода. "

Если мы отдаем предпочтение страницам, которые были изменены, не означает ли это, что мы увеличиваем количество необходимых операций ввода-вывода? Потому что, если страница была изменена, то нам нужно записать это изменение в хранилище?

Извините, я запутался, как расширенный алгоритм второго шанса должен уменьшить количество требуемых операций ввода-вывода.

Спасибо.

1 Ответ

2 голосов
/ 22 октября 2019

Я думаю, что они имеют в виду, что предпочтение состоит в том, чтобы сохранить измененные страницы в памяти (хотя для меня это несколько смущает).

Это предложение:

Мы заменяемпервая страница, найденная в самом низком непустом классе

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

Я бы также прочитал «чтобы уменьшить количество необходимых операций ввода-вывода», чтобы применить его к контексту немедленной необходимости решить проблему нехватки свободной памяти. Обычно эту проблему необходимо решить как можно быстрее. Когда нет необходимости писать, это быстрее всего. Если ОС может освободить достаточно страниц из первого класса, чтобы решить насущную потребность, то это действительно хороший результат.

Часто в ОС используется процесс «отложенной записи» или «фоновой записи». Страницы памяти с измененным битовым набором записываются на диск «позже», когда ресурсы высвобождаются (или нет доступных неизмененных страниц и требуется больше оперативной памяти). Это главная причина для правильного выключения и не отсоединения сетевого шнура - вероятно, в памяти много измененных страниц, ожидающих записи на диск. Таким образом, в контексте этого абзаца, если текущая потребность может быть удовлетворена путем освобождения страниц, которые не были изменены, то оставшиеся страницы могут быть записаны в процессе фоновой записи на более позднем этапе.

Интересно, что класс 2 является более предпочтительным, чем класс 3. Было бы быстрее решить непосредственную проблему (нужно больше памяти), отбросив что-то из класса 3, потому что запись не требуется. Тем не менее, ОС предсказывает, что, скорее всего, вскоре потребуется снова прочитать эту память, а это не так. Вероятно, есть некоторые чрезвычайно сложные алгоритмы, используемые для вычисления того, насколько недавним является «недавно использованный». И это, вероятно, учитывает скорость носителя, на который выполняется запись.

...