Составители:
ницы, - объем возможной виртуальной памяти, которой может пользоваться про-
грамма [2]. Отображение, осуществляемое системой во время исполнения, сводится к
отображению Р
V
в Рр и приписыванию к полученному значению битов адреса, задавае-
мых величиной i. При этом нет необходимости ограничивать число виртуальных стра-
ниц числом физических, то есть не поместившиеся страницы можно размещать во
внешней памяти, которая в данном случае служит расширением оперативной. Для ото-
бражения виртуального адресного пространства задачи на физическую память, как и в
случае с сегментным способом организации, каждой задаче необходимо иметь таблицу
страниц для трансляции адресных пространств. Для описания каждой страницы дис-
петчер памяти ОС заводит соответствующий дескриптор, который отличается от деск-
риптора сегмента прежде всего тем, что в нем нет необходимости иметь поле длины, т.к.
все страницы имеют одинаковый размер. По номеру виртуальной страницы в таблице
дескрипторов страниц текущей задачи находится соответствующий элемент (дескрип-
тор). Если бит присутствия имеет единичное значение, значит, данная страница сейчас
размещена в оперативной, а не во внешней памяти и в дескрипторе записан номер физи-
ческой страницы, отведенной под данную виртуальную. Если же бит присутствия равен
нулю, то в дескрипторе записан адрес виртуальной страницы, расположенной в данный
момент во внешней памяти. Таким достаточно сложным механизмом и осуществляет-
ся трансляция виртуального адресного пространства на физическую память.
Защита страничной памяти, как и в случае с сегментным механизмом, основана
на контроле уровня доступа к каждой странице. Как правило, возможны следующие
уровни доступа: только чтение; чтение и запись; только выполнение. В этом случае
каждая страница снабжается соответствующим кодом уровня доступа. При трансформа-
ции логического адреса в физический сравнивается значение кода разрешенного уровня
доступа с фактически требуемым. При их несовпадении работа программы прерывается.
При обращении к виртуальной странице, не оказавшейся в данный момент в опера-
тивной памяти, возникает прерывание и управление передается диспетчеру памяти, ко-
торый должен найти свободное место. Обычно предоставляется первая же свободная
страница. Если свободной физической страницы нет, то диспетчер памяти по одной из
вышеупомянутых дисциплин замещения (LRU, LFU, FIFO, random) определит страницу,
подлежащую расформированию или сохранению во внешней памяти. На ее место он и
разместит новую виртуальную страницу, к которой было обращение из задачи. Для ис-
пользования дисциплин LRU и LFU в процессоре должны быть реализованы соответст-
вующие аппаратные средства.
Если объем физической памяти небольшой и даже часто требуемые страницы не
удается разместить в оперативной памяти, возникает так называемая «пробуксовка».
Другими словами, пробуксовка - это ситуация, при которой загрузка нужной нам стра-
ницы вызывает перемещение во внешнюю память той страницы, с которой мы тоже ак-
тивно работаем. Чтобы не допускать этого, можно увеличить объем оперативной па-
мяти, уменьшить количество параллельно выполняемых задач, либо попробовать
использовать более эффективные дисциплины замещения.
В абсолютном большинстве современных ОС используется дисциплина замещения
страниц LRU как самая эффективная. Так, именно эта дисциплина используется в OS/2 и
Linux. Но в ОС от компании Microsoft, например Windows NT, разработчики, желая сде-
лать систему максимально независимой от аппаратных возможностей процессора, по-
шли на отказ от этой дисциплины и применили правило FIFO. А для того, чтобы хоть
как-нибудь сгладить ее неэффективность, была введена «буферизация» тех страниц, ко-
торые должны быть записаны в файл подкачки на диск или просто расформированы.
Принцип буферизации прост. Прежде чем замещаемая страница действительно будет
перемещена во внешнюю память или просто расформирована, она помечается как кан-
дидат на выгрузку. Если в следующий раз произойдет обращение к странице, находя-
102
ницы, - объем возможной виртуальной памяти, которой может пользоваться про-
грамма [2]. Отображение, осуществляемое системой во время исполнения, сводится к
отображению РV в Рр и приписыванию к полученному значению битов адреса, задавае-
мых величиной i. При этом нет необходимости ограничивать число виртуальных стра-
ниц числом физических, то есть не поместившиеся страницы можно размещать во
внешней памяти, которая в данном случае служит расширением оперативной. Для ото-
бражения виртуального адресного пространства задачи на физическую память, как и в
случае с сегментным способом организации, каждой задаче необходимо иметь таблицу
страниц для трансляции адресных пространств. Для описания каждой страницы дис-
петчер памяти ОС заводит соответствующий дескриптор, который отличается от деск-
риптора сегмента прежде всего тем, что в нем нет необходимости иметь поле длины, т.к.
все страницы имеют одинаковый размер. По номеру виртуальной страницы в таблице
дескрипторов страниц текущей задачи находится соответствующий элемент (дескрип-
тор). Если бит присутствия имеет единичное значение, значит, данная страница сейчас
размещена в оперативной, а не во внешней памяти и в дескрипторе записан номер физи-
ческой страницы, отведенной под данную виртуальную. Если же бит присутствия равен
нулю, то в дескрипторе записан адрес виртуальной страницы, расположенной в данный
момент во внешней памяти. Таким достаточно сложным механизмом и осуществляет-
ся трансляция виртуального адресного пространства на физическую память.
Защита страничной памяти, как и в случае с сегментным механизмом, основана
на контроле уровня доступа к каждой странице. Как правило, возможны следующие
уровни доступа: только чтение; чтение и запись; только выполнение. В этом случае
каждая страница снабжается соответствующим кодом уровня доступа. При трансформа-
ции логического адреса в физический сравнивается значение кода разрешенного уровня
доступа с фактически требуемым. При их несовпадении работа программы прерывается.
При обращении к виртуальной странице, не оказавшейся в данный момент в опера-
тивной памяти, возникает прерывание и управление передается диспетчеру памяти, ко-
торый должен найти свободное место. Обычно предоставляется первая же свободная
страница. Если свободной физической страницы нет, то диспетчер памяти по одной из
вышеупомянутых дисциплин замещения (LRU, LFU, FIFO, random) определит страницу,
подлежащую расформированию или сохранению во внешней памяти. На ее место он и
разместит новую виртуальную страницу, к которой было обращение из задачи. Для ис-
пользования дисциплин LRU и LFU в процессоре должны быть реализованы соответст-
вующие аппаратные средства.
Если объем физической памяти небольшой и даже часто требуемые страницы не
удается разместить в оперативной памяти, возникает так называемая «пробуксовка».
Другими словами, пробуксовка - это ситуация, при которой загрузка нужной нам стра-
ницы вызывает перемещение во внешнюю память той страницы, с которой мы тоже ак-
тивно работаем. Чтобы не допускать этого, можно увеличить объем оперативной па-
мяти, уменьшить количество параллельно выполняемых задач, либо попробовать
использовать более эффективные дисциплины замещения.
В абсолютном большинстве современных ОС используется дисциплина замещения
страниц LRU как самая эффективная. Так, именно эта дисциплина используется в OS/2 и
Linux. Но в ОС от компании Microsoft, например Windows NT, разработчики, желая сде-
лать систему максимально независимой от аппаратных возможностей процессора, по-
шли на отказ от этой дисциплины и применили правило FIFO. А для того, чтобы хоть
как-нибудь сгладить ее неэффективность, была введена «буферизация» тех страниц, ко-
торые должны быть записаны в файл подкачки на диск или просто расформированы.
Принцип буферизации прост. Прежде чем замещаемая страница действительно будет
перемещена во внешнюю память или просто расформирована, она помечается как кан-
дидат на выгрузку. Если в следующий раз произойдет обращение к странице, находя-
102
Страницы
- « первая
- ‹ предыдущая
- …
- 98
- 99
- 100
- 101
- 102
- …
- следующая ›
- последняя »
