logo
АВМиС - бывшее АПЭВМ / apvem / всякаявсячина

Механизм страничной адресации

при таком способе все фрагменты программы, на которые она разбивается (за исключением последней ее части), получаются одинаковыми. Одинаковыми полагаются и единицы памяти, которые мы предоставляем для размещения фрагментов программы. Эти одинаковые части называют страницами и говорят, что память разбивается на физические страницы, а программа — на виртуальные страницы. Часть виртуальных страниц задачи размещается в опе­ративной памяти, а часть — во внешней. Обычно место во внешней памяти, в ка­честве которой в абсолютном большинстве случаев выступают накопители на магнитных дисках называют файлом подкачки или страничным файлом (paging file). Иногда этот файл называют swap-файлом. Разбиение всей оперативной памяти на страницы одинаковой величины, причем величина каждой страницы выбирается кратной степени двойки, приводит к тому, что вместо одномерного адресного пространства памяти можно говорить о двумерном. Первая координата адресного пространства — это номер страницы, а вторая координата — номер ячейки внутри выбранной страницы . Таким образом, физический адрес определяется парой (Рр, i), а вир­туальный адрес — парой (Pv, i), где Pv — это номер виртуальной страницы, Рр — это номер физической страницы и i — это индекс ячейки внутри страницы. Для отображения виртуального адресного пространства задачи на физическую память, как и в случае с сегментным способом организации, для каждой задачи необходимо иметь таблицу страниц для трансляции адресных пространств. Для описания каждой страницы диспетчер памяти ОС заводит соответствующий де­скриптор, который отличается от дескриптора сегмента прежде всего тем, что в нем нет необходимости иметь поле длины — ведь все страницы имеют одина­ковый размер. По номеру виртуальной страницы в таблице дескрипторов стра­ниц текущей задачи находится соответствующий элемент (дескриптор). Если бит присутствия имеет единичное значение, значит, данная страница сейчас раз­мещена в оперативной, а не во внешней памяти и мы в дескрипторе имеем номер физической страницы, отведенной под данную виртуальную. Если же бит при­сутствия равен нулю, то в дескрипторе мы будем иметь адрес виртуальной стра­ницы, расположенной сейчас во внешней памяти. Таким образом и осуществ­ляется трансляция виртуального адресного пространства на физическую память. Защита страничной памяти, как и в случае с сегментным механизмом, основана на контроле уровня доступа к каждой странице. Как правило, возможны следую­щие уровни доступа: только чтение; чтение и запись; только выполнение. В этом случае каждая страница снабжается соответствующим кодом уровня доступа. При трансформации логического адреса в физический сравнивается значение кода разрешенного уровня доступа с фактически требуемым. При их несовпаде­нии работа программы прерывается. При обращении к виртуальной странице, не оказавшейся в данный момент в оперативной памяти, возникает прерывание и управление передается диспетче­ру памяти, который должен найти свободное место. Обычно предоставляется первая же свободная страница. Если свободной физической страницы нет, то диспетчер памяти по одной из вышеупомянутых дисциплин замещения (LRU, LFU, FIFO, random) определит страницу, подлежащую расформированию или сохранению во внешней памяти. Если объем физической памяти небольшой, то возможна проблема при которой загрузка из внешней памяти нужной страницы приводит к выгрузке страниц с которыми активно работает. 2 способа решения проблемы: увеличение объема ОП.2)уменьшение количества выполняемых задачВ абсолютном большинстве современных ОС используется дисциплина замеще­ния страниц LRU как самая эффективная. Так, именно эта дисциплина исполь­зуется в OS/2 иLinux. Однако в такой ОС, какWindowsNT, разработчики,желая сделать систему максимально независимой от аппаратных возможностей процессора, пошли на отказ от этой дисциплины и применили правилоFIFO.А для того, чтобы хоть как-нибудь сгладить ее неэффективность, была введена «буферизация» тех страниц, которые должны быть записаны в файл подкачки на диск1 или просто расформированы. В ряде ОС с пакетным режимом работы для борьбы с пробуксовкой использует­ся метод «рабочего множества». Рабочее множество — это множество «активных» страниц задачи за некоторый интервал То есть тех страниц, к которым было об­ращение за этот интервал времени. Реально количество активных страниц зада­чи (за интервал Т) все время изменяется, и это естественно, но тем не менее для каждой задачи можно определить среднее количество ее активных страниц. Это среднее число активных страниц и есть рабочее множество задачи. Недостатки страничного способа организации памяти: 1) без специальных аппаратных средств, уменьшение производительности системы ,поэтому используется кэширование. Чаще всего используется ассоциативный кэш.2) прога разбивается на страницы без учета условных и безусловных переходов в проге =>между страницами переход происходит намного чаще, чем между сегментами.3)значительные накладки и расходы памяти и процессорного времени. Достоинства: min фрагментация памяти.