Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОСЫ / OS_Windows_Sharov.doc
Скачиваний:
62
Добавлен:
15.02.2016
Размер:
1.09 Mб
Скачать

7. Управление памятью. Трансляция виртуального адреса.

Windows NT поддерживает сегментностраничную модель виртуальной памяти и использует для этих целей аппаратную поддержку таких процессоров как Intel 80386 и выше, MIPS R4000, DEC Alpha и Power PC. Для этого в NT executive имеется специальный компонент - менеджер виртуальной памяти.

Менеджер ВП обеспечивает для процессов следующие наборы функций:

  • управление виртуальным адресным пространством процесса;

  • разделение памяти между процессами;

  • защита виртуальной памяти одного процесса от других процессов.

Средства защиты памяти в Windows NT существуют в четырех формах.

  • Отдельное адресное пространство для каждого процесса. Аппаратура запрещает нити доступ к физическим адресам другого процесса.

  • Два режима работы: режим ядра, в котором нитям разрешен доступ к системным данным, и пользовательский режим, в котором это запрещено.

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

  • Объектно-ориентированная защита памяти. Каждый раз, когда процесс открывает указатель на секцию, монитор ссылок безопасности проверяет, разрешен ли доступ процесса к данному объекту.

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

В дополнение к прямой защите, обеспечиваемой механизмом трансляции, каждый процессор, который поддерживает виртуальную память, реализует некоторую форму аппаратно-управляемой защиты памяти. Часто аппаратная защита бывает минимальной. Из-за этого менеджер виртуальной памяти Windows NT в гораздо большей степени зависит от аппаратуры, чем другие части операционной системы.

Каждый процесс NT executive имеет большое виртуальное адресное пространство размером в 4Гб, из которых 2 Гб резервируются для системных нужд. (Процессор MIPS R4000 требует, чтобы 2 Гб адресного пространства были зарезервированы для системы. Хотя другие процессоры требуют меньше, для переносимости системы Windows NT всегда резервирует 2 Гб.) Младшие адреса виртуального адресного пространства доступны для нитей, работающих и в пользовательском, и в привилегированном режимах, они указывают на области памяти, уникальные для каждого процесса. Старшая часть адресов доступна для нитей только тогда, когда они выполняются в привилегированном режиме. Виртуальное адресное пространство процесса показано на рисунке 1.4.

В нижней (младшей) части системной области памяти располагаются код и данные ядра, они никогда не вытесняются из памяти. Поскольку адреса из этого диапазона транслируются аппаратурой и всегда бывают действительными, доступ к этой области памяти осуществляется очень быстро. Она используется для тех частей ядра, от которых требуется максимальная производительность, например, для кода, который диспетчирует нити.

Рис. 1.4. Виртуальное адресное пространство

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

В составе менеджера виртуальной памяти имеется такой компонент, как пейджер (pager). Этот код перемещает страницы между диском и памятью, представляя собой промежуточное звено между аппаратными механизмами и программно-реализуемыми стратегиями. В его функции входит:

  • загрузка страницы в память при возникновении страничного прерывания,

  • проверка прав доступа к отсутствующим страницам и дополнение аппаратных средств защиты страниц, загруженных в память,

  • обновление структур данных подсистемы управления памятью.

Процесс принятия решения о замене страниц системой виртуальной памяти обычно включает три фазы: извлечение, размещение, замена.

Этап извлечениясвязан с выбором условия, при выполнении которого страница перемещается с диска в память. Существует два типа стратегий извлечения: с упреждением, когда страницы загружаются в память до того, как они оказываются необходимыми процессу, и стратегии загрузки по требованию, в соответствии с которыми страница перемещается в память только при наступлении страничного прерывания. При использовании стратегий "по требованию" при старте каждой нити происходит интенсивная загрузка страниц. Эти страницы называются начальным набором страниц. После загрузки начального набора интенсивность загрузки страниц заметно уменьшается.

Менеджер виртуальной памяти Windows NT использует стратегию "по требованию" с кластеризацией. При возникновении страничного прерывания менеджер виртуальной памяти загружает в память вызвавшую прерывание страницу, а также небольшое количество окружающих ее страниц. Эта стратегия пытается минимизировать количество страничных прерываний.

Этап размещения. Набор правил, используемых для определения места размещения новой страницы в памяти, называется стратегией размещения. В Windows NT менеджер виртуальной памяти просто выбирает первую страницу из списка свободных физических страниц. База данных физических страниц - это массив записей, пронумерованных от 0 до максимального номера страницы, зависящего от объема памяти. Каждая запись содержит информацию о соответствующей физической странице. Менеджер виртуальной памяти использует прямые связи в случае, когда процесс запрашивает доступ к виртуальному адресу в действительной виртуальной странице.

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

Менеджер виртуальной памяти Windows NT использует локальный алгоритм FIFO (First Input First Output). В соответствии с алгоритмом FIFO из памяти удаляется та страница, которая дольше всего там находится. Локальность в данном случае означает, что поиск страницы-кандидата на выгрузку осуществляется только среди страниц того процесса, который требует загрузки новой страницы. Существуют и глобальные стратегии, в соответствии с которыми поиск замещаемой страницы выполняется на множестве страниц всех процессов. Локальный вариант стратегии не дает одному процессу возможность захватить всю имеющуюся память.

Когда процесс стартует, ему назначается минимальный рабочий набор страниц. Процесс может его увеличивать до некоторого максимального размера. Если процесс требует еще больше страниц, то менеджер виртуальной памяти удаляет из рабочего набора по одной странице при загрузке каждой новой страницы. Когда размер свободной физической памяти уменьшается до некоторой критической границы, то менеджер виртуальной памяти использует прием, называемый автоматическим триммингом рабочего набора. Он просматривает страницы каждого процесса, находящиеся в памяти, сравнивает их количество с минимальным размером рабочего набора и удаляет избыточные страницы из памяти.

В Windows NT реализована сегментно-страничная модель распределения памяти. Для хранения информации о состоянии виртуальных сегментов используется набор структур, называемых дескрипторами виртуальных адресов. Когда процессу назначается новая область памяти, менеджер виртуальной памяти создает дескриптор, в котором хранится вся информация, связанная с этой областью, такая как диапазон адресов, признаки того, является ли память разделяемой или частной, будет ли процесс-потомок наследовать содержимое этой области, признаки защиты. Затем дескриптор встраивается в двоичное дерево дескрипторов данного процесса, используемое для ускорения поиска.

Для снижения объема вычислений, затрачиваемых на работу менеджера виртуальной памяти, в Windows NT минимизируется количество страничных прерываний. Для этого предпринимаются следующие меры:

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

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

  1. Подсистема ввода-вывода. Компоненты и их роль.

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

Обеспечение работы сверхпроизводительных операций ответного ввода-вывода для одно- и многопроцессорных компьютеров.

Предоставление асинхронного ввода-вывода. Синхронный ввод-вывод осуществляется, по сути, в виде асинхронного запроса ввода-вывода, после которого следует блокирующее ожидание завершения операции ввода-вывода.

Поддержка нескольких файловых систем, в частности CDFS, NTFS HUDFS. Предоставление модульной архитектуры, поддерживающей добавление новых файловых систем и устройств. Предоставление устройствам (и их драйверам) возможности подключения и отключения "на лету", без перезагрузки (эта функция реализована в Windows 2000 и более новых версиях Windows NT). Предоставление расширенных возможностей, например кэширования и записи содержимого файлов в память (запись содержимого файла в указанной области памяти в адресном пространстве процесса). Для получения доступа или модификации содержимого файла приложение выполняет чтение и запись определенной области адресного пространства.

Защита ресурсов, которые совместно используются несколькими процессами.

Подсистема ввода-вывода имеет модульную структуру (как и все остальные компоненты Windows NT) и состоит из следующих компонентов:

  • программный интерфейс приложений ввода-вывода (I/O API);

  • диспетчер ввода-вывода;

  • драйверы файловых систем;

  • другие драйверы (например, драйверы клавиатуры и драйверы дисков).

Далее эти модули рассматриваются более подробно.

  1. Управление внешней памятью. Разделы, тома.

Термин внешняя память (storage) относится к носителям, применяемым в самых разнообразных устройствах, в том числе к магнитным лентам, оптическим дискам, гибким дискам, локальным жестким дискам и сети устройств хранения данных (storage area networks, SAN). Windows предоставляет специализированную поддержку для каждого класса носителей внешней памяти. Существенную часть поддержки сменных носителей и удаленных устройств внешней памяти Windows реализует в пользовательском режиме.

Тома —это логические элементы, которые создаются, чтобы упростить управление устройствами хранения данных. Физические диски, которые подключаются через интерфейсы IDE или SCSI, могут быть логически разбиты на разделы (partitions).Раздел — это физически непрерывный набор секторов диска. Из разделов определенным образом формируетсятом. Такая комбинация разделов может предоставлять дополнительные возможности: например, несколько разделов могут быть объединены для создания тома, размер которого превышает размер каждого из физических дисков. Еще одним примером может быть создание зеркального тома на основе двух разделов, размер которых совпадает. Дисковые тома рассматриваются более подробно в главе 6. На данном этапе эта тема затрагивается для описания схемы управления томами в Windows NT с помощью драйвера программного устройства.

Физические диски – это настоящее физическое реально существующее устройство, которое, что называется,  можно физически подержать в руках, либо дотронуться рукой, например:

  • жесткий диск внутри компьютера (ноутбука),

  • внешний жесткий диск, который подключается через порт USB,

  • флешка

Жесткий диск можно «разбить» на один, два или более логических дисков. Дотронуться рукой до подобного логического диска никак не получится, поскольку он существует как бы внутри жесткого диска, существует логически, согласно логике и здравому смыслу. Но он не существует физически, так как является частью дискового пространства внутри реального физического устройства.

В Windows 2000, Windows XP и Windows Server 2003 поддерживается три различных диспетчера томов: FtDisk, Microsoft Logical Disk Manager и VERITAS Volume Manager. В данном случае в качестве примера будет использоваться базовый диспетчер томов Microsoft FtDisk Manager. Дерево устройств иллюстрирует системную конфигурацию с одним подключенным диском SCSI, содержащим два раздела, которые, в свою очередь, формируют один том.

Для понимания принципов работы диспетчеров томов рассмотрим рис., начиная с нижнего правого угла. Подсистема РпР и драйверы шины PCI взаимодействуют для создания объектов физического и функционального устройств для шины PCI. После идентификации устройств, подключенных к шине PCI, драйвер шины PCI создает объект физического устройства для адаптера шины SCSI. Драйвер SCSIPort создает объект функционального устройства для адаптера шины SCSI. Затем драйвер SCSIPort и драйверы класса диска создают объект физического устройства и объект функционального устройства для одного диска, который подключен к шине SCSI.

Диспетчер разделов представляет собой драйвер фильтрации более высокого уровня, который регистрируется в подсистеме Windows NT PnP для получения уведомлений о создании драйвером класса диска новых объектов устройств. Диспетчер разделов появился впервые в Windows 2000 и используется в Windows XP и Windows Server 2003. Диспетчер разделов взаимодействует с диспетчерами томов с помощью частных интерфейсов и передает уведомление о создании устройства диспетчеру разделов. Обнаружив все дисковые разделы, которые формируют том, диспетчер тома создает объект устройства, представляющего данный том. Диспетчер разделов обеспечивает уведомление подсистемы РпР относительно удаления объекта устройства или раздела (например, при удалении раздела). Диспетчер разделов связывается с драйвером FtDisk для предоставления последнему информации о динамически добавляемых и удаляемых разделах. На рис в отличие от предыдущих рисунков, впервые показан диспетчер разделов, который следит за пакетами IRP в процессе ввода-вывода и обеспечивает завершение их обработки. Обнаружив завершение обработки QDR (IRP_MN_QUERY_DEVICE_RELATI0NSHIPS), диспетчер разделов незаметно удаляет дополнительную информацию об обнаруженном устройстве — в данном случае это объект устройства для раздела 0, созданный драйвером класса диска disk.sys. Таким образом объект устройства раздела 0 никогда не обнаруживается подсистемой РпР.

Диспетчер разделов передает информацию об обнаруженных объектах устройств зарегистрированным диспетчерам томов. Диспетчер томов проверяет устройства, представленные объектами устройств, которые "украдены" диспетчером разделов, и принимает или отвергает владение этими объектами устройств. В этом примере драйвер FtDisk подтверждает свое владение объектами устройств. Затем диспетчер FtDisk проверяет конфигурацию тома и устанавливает, что том сформирован посредством одного раздела, а также определяет владельца соответствующего раздела. На этом этапе драйвер FtDjsk создаст объект устройства для тома после чего можно будет монтировать файловую систему этого тома.

Следует отметить, что здесь на самом деле рассматриваются два отдельных стека устройств. Один стек представляет логический компонент — том, а второй включает в себя физические устройства системы, например шину PCI, адаптер SCSI и жесткий диск. Диспетчер томов действует как мост между двумя стеками.

На рис драйвер FtDisk отправляет все обработанные пакеты IRP непосредственно драйверу класса диска. Конечно, драйвер FtDisk преобразует смещения относительно тома в смещения относительно диска перед отправкой пакетов IRP. Такие операции ввода-вывода показаны толстыми штриховыми линиями. Тонкие пунктирные линии отображают частный интерфейс между диспетчерами томов и разделов. Кроме того, драйвер FtDisk отправляет необработанные сообщения управления вводом-выводом непосредственно объекту устройства раздела.

Внешняя память – все носители, предназначенные для хранения информации.

Microsoft(MS-DOS)

1). Организация в системе MS-DOSразделения жестких дисков на разделы.

2). Поддержание различных файловых систем(FAT-12,FAT-16).

3-4 версия ограничивала число разделов, 5 версия не ограничивала, могут иметь произвольные размеры.

WindowsNT

1). Унаследовала разделение жестких дисков на разделы.

2). Расширила эти возможности.

Диск – физическое устройство внешней памяти(дискета, диск и т.д.).

Сектор – блок фиксированного объема(512 байт, на CD-ROM2 Кб).

Раздел – набор непрерывных секторов на диске.

Простой том – объект, который представляет собой секторы одного раздела(эти разделы драйвера файлов управляют как единым целым).

Составной том – объект представляет секторы нескольких разделов, которыми драйверы управляют как единым целым.

Механизм разбиения на разделы

Начиная с Windows2000 появляются разделы

1). Базовые диски.

2). Динамические диски.

Базовые диски – диски, размеченные по схеме MS-DOS.

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

По умолчанию ОС WindowsNTуправляет дисками как базовыми. Преобразование в динамические вручную.

Ограничения

1). Новые составные тома могут создаваться только на динамических дисках

Минус, динамический диск, формат разбиения не совместим со старыми форматами.

  1. Управление составными томами. Перекрытые, чередующиеся, зеркальные.

Начиная с Windows2000 поддерживаются следующие типы составного тома

1). Перекрытые тома.

2). Зеркальные тома.

3). Чередующиеся тома.

4). RAID-5.

Перекрытый том – единый логический том, который может состоять из нескольких разделов на одном или нескольких дисках(количество ограничено 32 диска). Чем больше дисков в логическом томе, тем выше риск выхода из строя тома(теряется только часть данных).

Чередующийся том – группа разделов, расположенных на отдельном диске и объединенных в один логический том(RAID-0). Чем больше устройств, тем выше риск потери данных(потеряются все данные, т.к. они равномерно распределены на томе). Каждая область 64 кб.

Плюс выше скорость доступа, минус ненадежность.

Зеркальный том – задача продублировать данные, находящиеся в разделе на одном диске в разделы равного объема на другие диски(RAID-1).

Плюс надежность.

Единственный вид тома, который может использоваться как загрузочный диск и на нем могут располагаться системные файлы.

31

Соседние файлы в папке ГОСЫ