Микро – ядерная структура - основа стабильности системы — КиберПедия 

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Микро – ядерная структура - основа стабильности системы

2019-09-26 242
Микро – ядерная структура - основа стабильности системы 0.00 из 5.00 0 оценок
Заказать работу

При разработке структуры Windows NT была в значительной степени использована концепция микроядра. В соответствии с этой идеей ОС делится на несколько подсистем - серверов, каждая из которых выполняет отдельный набор сервисных функций - например, сервис памяти, сервис по созданию процессов или сервис по планированию процессов. Каждый сервер выполняется в пользовательском режиме, выполняя циклическую проверку, не появился ли запрос от клиента на одну из его сервисных функций. Клиент, которым может быть либо другая компонента ОС, либо прикладная программа, запрашивает сервис, посылая сообщение на сервер. Этот запрос перехватывается ядром, которое из-за ограниченности выполняемых функций в случае такой организации называется микроядром. Ядро ОС, работая в привилегированном режиме, доставляет сообщение нужному серверу. Сервер выполняет операцию, после чего ядро возвращает результаты клиенту с помощью другого сообщения (рисунок 1.1). Микроядро играет роль регулировщика - оно проверяет сообщения, пересылает их между серверами и клиентами и предоставляет доступ к аппаратуре.

Использование концепции микроядра способствует переносимости операционных систем, поскольку весь машинно-зависимый код изолирован в микроядре, а значит для переноса системы на новый процессор требуется меньше изменений, и все они логически сгруппированы вместе. Операционная система Windows NT может работать на компьютерах, построенных на базе процессоров Intel, PowerPC, DEC Alpha, MIPS.

Технология микроядер является основой построения множественных прикладных сред, которые обеспечивают совместимость программ, написанных для разных ОС. Абстрагируя интерфейсы прикладных программ от расположенных ниже операционных систем, микроядра позволяют гарантировать, что вложения в прикладные программы не пропадут в течение нескольких лет, даже если будут сменяться операционные системы и процессоры. В среде Windows NT, кроме "родных" 32-битовых приложений, могут выполняться приложения MS-DOS, 16-битовые Windows-приложения, Posix- и OS/2-приложения.

 

 

Рис. 1.1. Структура ОС на базе микроядра

 

Однако, такая гибкость не дается даром. Пересылка сообщений не так быстра, как обычные вызовы функций, и ее оптимизация является критическим фактором успеха операционной системы на основе микроядра. Поэтому разработчики Windows NT отказались от модели микроядра в ее чистом виде. Кроме собственно микроядра, в привилегированном режиме работает часть Windows NT, называемая executive - исполнительная подсистема. Она включает ряд компонентов, которые управляют виртуальной памятью, объектами, вводом-выводом и файловой системой (включая сетевые драйверы), взаимодействием процессов и, частично, системой безопасности. Часть Windows NT, работающая в пользовательском режиме состоит из серверов Windows NT, называемых также защищенными подсистемами (рисунок 1.2).

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

Поддержку защищенных подсистем обеспечивает исполнительная часть Windows NT - executive, которая работает в пространстве ядра и никогда не сбрасывается на диск. Ее составными частями являются:

· Менеджер объектов. Создает, удаляет и управляет объектами NT executive - абстрактными типами данных, используемыми для представления ресурсов системы.

· Монитор безопасности. Устанавливает правила защиты на локальном компьютере. Охраняет ресурсы операционной системы, выполняет защиту и регистрацию исполняемых объектов.

· Менеджер процессов. Создает и завершает, приостанавливает и возобновляет процессы и нити, а также хранит о них информацию.

· Менеджер виртуальной памяти.

· Средства локального вызова процедур. Передают сообщения между клиентскими и серверными процессами одного и того же компьютера.

· Подсистема ввода-вывода. Включает в себя следующие компоненты: 1) менеджер ввода-вывода предоставляет средства ввода-вывода, независимые от устройств; 2) файловые системы, NT-драйверы, выполняющие файл-ориентированные запросы на ввод-вывод, транслирующие их в вызовы обычных устройств; 3) сетевой редиректор и сетевой сервер, драйверы файловых систем, передающие удаленные запросы на ввод-вывод на машины сети и получающие запросы от них; 4) драйверы устройств NT executive, низкоуровневые драйверы, которые непосредственно управляют устройством; 5) менеджер кэша, реализующий кэширование диска.

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

· планирование нитей,

· обработка прерываний и исключительных ситуаций,

· синхронизация процессоров для мультипроцессорных систем,

· восстановление системы после сбоев.

Обратиться к ядру можно только посредством прерывания. Ядро расположено над уровнем аппаратных абстракций (Hardware Abstraction Level HAL), который концентрирует в одном месте основную часть машинно-зависимых процедур. Располагается HAL между NT executive и

 

Рис. 1.2. Структура Windows NT

 

аппаратным обеспечением и скрывает от системы такие детали, как контроллеры прерываний, интерфейсы ввода/вывода и механизмы взаимодействия между процессорами. Такое решение позволяет легко переносить Windows NT с одной платформы на другую путем замены только слоя HAL.

Среди всех защищенных подсистем можно выделить так называемые подсистемы окружения - Win32, 16-битный Windows, DOS, OS/2, Posix. Каждая из этих подсистем реализует соответствующий прикладной программный интерфейс. Windows NT использует подсистемы окружения со следующими целями:

· Обеспечить несколько программных интерфейсов (APIs), сохраняя как можно более простым базовый программный код (NT executive).

· Экранировать базовую операционную систему от изменений или расширений в поддерживаемых API.

· Объединить часть глобальных данных, требуемых всем API, и в то же время отделить данные, требуемые одному API от данных, требуемых другим API.

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

· Позволить операционной системе расширяться в будущем за счет новых API.

 

Планирование процессов и нитей

В отличие от Windows, в которой реализована многозадачность без вытеснения (non-preemptive multitasking), в Windows NT используется механизм многозадачности с вытеснением (preemptive multitasking).

Windows NT поддерживает симметричную мультипроцессорную организацию вычислительного процесса, в соответствии с которой ОС может выполняться на любом свободном процессоре или на всех процессорах одновременно, разделяя память между ними. Так как многозадачность реализуется на уровне нитей, разные части одного и того же процесса могут действительно выполняться параллельно. Следовательно, многонитевые серверы могут одновременно обслуживать более одного клиента.

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

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

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

Windows NT поддерживает 32 уровня приоритетов, разделенных на два класса - класс реального времени и класс переменных приоритетов (рисунок 1.3). Нити реального времени, приоритеты которых находятся в диапазоне от 16 до 31, являются более приоритетными процессами и используются для выполнения задач, критичных ко времени.

В Windows NT определено 4 класса приоритетов процессов:

· IDLE_PRIORITY_CLASS - уровень 4

· NORMAL_PRIORITY_CLASS - уровень 9 при интерактивной работе процесса (forground) и уровень 7 при работе в фоновом режиме (background)

· HIGH_PRIORITY_CLASS - уровень 13

· REALTIME_PRIORITY_CLASS - уровень 24

Большинство приложений либо не определяет класс приоритета процесса при его создании, либо устанавливает его в значение NORMAL_PRIORITY_CLASS. Класс IDLE - самый низкоприоритетный - хорошо использовать для работ, некритичных к скорости их выполнения, например, при наблюдении за состоянием системы или же при резервном копировании на ленту. Высокий приоритет (HIGH_PRIORITY_CLASS) следует использовать только тогда, когда это абсолютно необходимо, так как нити такого процесса будут выполняться всегда перед нитями процесса с нормальным приоритетом. В Windows NT с приоритетом HIGH работает процесс Task Manager. Обычно он находится в состоянии ожидания, но при нажатии комбинации клавиш Ctrl+Esc нить Task Manager пробуждается и немедленно вытесняет любые нити обычных приложений. Приоритеты реального времени системными процессами Windows NT (и тем более офисными приложениями) не используются. Этот класс приоритетов нужно использовать только для систем реального времени, например, сбора данных от промышленных установок, управления движущимися объектами и т.п.

Все нити, созданные процессом определенного класса, имеют сначала приоритет процесса. Но в ходе своего выполнения нить может изменить свой приоритет относительного базового приоритета процесса с помощью системного вызова SetThreadPriority. Этот вызов имеет параметр, который может принимать 5 относительных значений, понижая приоритет относительно базового на 2 или 1 единицу, повышая его на 2 или 1 единицу или делая его равным базовому. Имеется еще 2 абсолютных значения этого параметра - IDLE и CRITICAL. Значение IDLE делает приоритет нити равным 1 независимо от его базового приоритета (для процессов REALTIME приоритет становится равным 16), а значение CRITICAL повышает приоритет до 15 для всех процессов (для процессов REALTIME приоритет повышается до 31).

На выполнение всегда выбирается нить с самым высоким приоритетом. Каждый раз, когда необходимо выбрать нить для выполнения, диспетчер прежде всего просматривает очередь готовых нитей реального времени и обращается к другим нитям, только когда очередь нитей реального времени пуста. Обычно большинство нитей в системе попадают в класс нитей с переменными приоритетами, диапазон приоритетов которых от 0 до 15. Этот класс имеет на-звание "переменные приоритеты" потому, что диспетчер настраивает систему, выбирая (понижая или повышая) приоритеты нитей этого класса.

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

Итак, нить освобождает процессор, если:

· нить блокируется, уходя в ожидание,

· нить завершается,

· нить исчерпала квант,

· нить вытеснена более приоритетной нитью.

 

 

Рис. 1.3. Система очередей готовых нитей

 

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

· Квантование - нитям отводится квант времени, по истечении которого выполнение нити прекращается.

· Абсолютные приоритеты - при появлении в очереди нити с более высоким приоритетом, чем у активной в данный момент, выполнение последней немедленно прерывается.

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

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

 

Управление памятью

 

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.

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

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

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

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

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

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

 

 

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

 

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

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

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

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

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

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

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

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

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

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

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

 


Драйверы в Windows NT

Архитектура любой современной ОС включает в себя множество не пар.

 

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

 

· обеспечить поддержку нескольких файловых систем: FAT, CDFS, NTFS;

· предоставить средства для упрощения разработки драйверов устройств, в том числе для SMP-платформ;

· обеспечить возможность динамического добавления и удаления драйверов из системы;

· обеспечить возможность ввода-вывода для отображаемых в памяти файлов.

 

Компоненты системы ввода-вывода представлены на рисунке 1.11. Каждый запрос на ввод-вывод представлен пакетом IRP (I/O Request Packet). Пакеты передаются от одной подсистемы ввода-вывода к другой. Менеджер ввода-вывода определяет порядок доставки пакетов IRP файловым системам и драйверам устройств. Менеджер не выполняет операций ввода-вывода, он только создает пакет IRP, передает его нужному драйверу и удаляет пакет, когда операция завершается. Драйвер же, получив IRP, выполняет операцию ввода-вывода, а затем возвращает пакет менеджеру для уничтожения или передачи другому драйверу.

Термин "драйвер" в Windows NT имеет более широкое значение, чем "драйвер устройства". Файловая система - это сложный драйвер, который принимает запросы к файлам и передает свои более конкретные запросы драйверам физических устройств.

 

Рис. 1.11. Компоненты системы ввода-вывода Windows NT

 

Кроме передачи пакетов, менеджер ввода-вывода выполняет следующие действия:

 

· предоставляет драйверам некоторые общие функции, например, для вызова одного драйвера другим,

· управляет буферами для запросов ввода-вывода,

· управляет тайм-аутом для драйверов,

· ведет записи о том, какие файловые системы установлены.

 

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

Особенностью Windows NT является общая структура ее драйверов и широкое определение того, что собой представляет драйвер. В Windows NT и драйвер устройства, и драйвер ФС построены единым образом, и для остальной части ОС имеют один и тот же вид. Более того, редиректоры и именованные конвейеры также выглядят как "файловые системы" и реализованы в виде драйверов. Каждый драйвер - это самодостаточный компонент, который может быть динамически добавлен или удален из системы.

Основные черты модели драйвера:

 

· Драйверы переносимы. Они написаны на языке высокого уровня и мало зависят от архитектуры процессора (драйверы высокого уровня, такие как файловая система, совсем не зависят).

· Операции ввода-вывода управляются пакетами IRP.

· Система ввода-вывода может динамически назначать драйверы для новых устройств при изменении конфигурации системы.

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

· Интерфейс драйверов с менеджером ввода-вывода стандартизирован, что позволяет менеджеру вызывать их "вслепую", не зная их особенностей или структур внутренних данных. Драйверы могут также вызывать друг друга (через менеджер ввода-вывода) для достижения многоуровневой обработки запросов ввода-вывода.

 

В Windows NT чаще используется многоуровневая модель обработки запроса ввода-вывода, но для простых устройств может применяться и одноуровневая модель, когда менеджер вызывает только драйвер устройства. Может использоваться не только двухуровневая модель (как, например, файловый драйвер - драйвер устройства), но и модель с большим числом уровней. Например, если в компьютере есть SCSI-адаптер, к которому подключен диск, то запрос к такому диску проходит через 3 драйвера: драйвер файловой системы, драйвер класса дисков, драйвер SCSI-порта.

Ввод-вывод в отображаемые файлы - это важное свойство Windows NT, которое обеспечивается как менеджером ввода-вывода, так и менеджером виртуальной памяти. Менеджер виртуальной памяти делает это свойство доступным для пользовательского режима. Подсистемы окружения (например, Win32) могут использовать эти сервисы менеджера виртуальной памяти для предоставления возможности отображения файлов своим приложениям.

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

Использование отображенных файлов резко увеличивает производительность системы.

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



Поделиться с друзьями:

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.088 с.