Выбор оптимальных сетевых решений на базе многозадачных операционных систем для построения компьютерной сети вуза
Рефераты >> Программирование и компьютеры >> Выбор оптимальных сетевых решений на базе многозадачных операционных систем для построения компьютерной сети вуза

Рассмотрим, например, как этот процесс работает в подсистеме Win32. Когда приложение Win32 загружено дня выполнения, оно связывается с DLL, которая содержит заглушки для всех функций Win32 API. В случае, если приложе­ние осуществляет вызовы функции Win32 (в нашем примере, Win32-функции CreateWindow), обращение обрабатывается следующим образом.

1. Клиентское приложение Win32 вызывает заглушку функции CreateWindow() из DLL.

2. Заглушка формирует сообщение, которое содержит все данные, необ­ходимые для создания окна, и посылает это сообщение процессу сервера Win32 (подсистеме Win32).

3. Подсистема Win32 получает сообщение и вызывает реальную функцию CreateWindow(). В результате этого создается окно.

4. Подсистема Win32 посылает сообщение, содержащее результаты выпол­нения функции CreateWindow(), обратно заглушке в DLL,

5. Заглушка распаковывает сообщение сервера подсистемы и возвращает результаты клиентскому приложению Win32.

Приложение воспринимает, что окно было создано функцией CreateWindow() из DLL. От приложения скрыто, что работа фактически выполнялась процес­сом сервера Win32 (подсистемой Win32), что для активизации этого процесса посылалось сообщение, и даже что существует процесс сервера Win32. Кроме тою, приложение не знает, что подсистема обращалась к одному или нескольким серверам исполняющей системы для поддержки ее обращения к CreateWindow().

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

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

Модель ввода-вывода Windows NT использует многоуровневую архитектуру, которая позволяет отдельным драйверам отвечать за логически законченный уровень обработки ввода-вывода. Например, драйверы самого низкого уровня управляют физическими устройствами компьютера (называются драйверами устройств — device drivers). Другие драйверы являются надстройкой к драй­верам устройств. Драйверам более высокого уровня неизвестны любые подробности работа физических устройств. С помощью диспетчера ввода-вывода драйверы более высокого уровня просто передают запросы логического ввода-вывода драйверам устройств, которые и обраща­ются к обслуживаемым ими физическим устройствам. Устанавливаемые фай­ловые системы Windows NT и сетевые редиректоры (redirectors) — примеры работающих таким образом драйверов высокого уровня.

Использование подобной схемы обеспечивает легкую замену драйверов фай­ловой системы и драйверов устройств. Кроме того, это позволяет быть активными одновременно нескольким файловым системам и устройствам, так как они адресуются через формальный интерфейс.

Драйверы взаимодействуют друг с другом, используя структуры данных, на­зываемые пакетами запроса ввода-вывода (I/O request packets). Драйверы пере­дают пакеты запроса ввода-вывода друг другу через диспетчер ввода-вывода, который доставляет пакеты соответствующим целевым драйверам. Самый прос­той способ выполнения операций ввода-вывода состоит в том, чтобы синхронизировать выполнение приложений с завершением запрашиваемых ими операций ввода-вывода (такой подход известен под названием синхронного ввода-вывода — synchronous I/O). Когда подобное приложение выполняет опе­рацию ввода-вывода, функционирование собственно приложения блокировано. После завершения операции ввода-вывода приложению разрешается продол­жение дальнейшего выполнения.

Одним из способов оптимизации эффективности приложении является применение асинхронного ввода-вывода (asynchronous I/O); этот метод исполь­зуется многими процессами в Windows NT. Когда приложение инициализирует операцию ввода-вывода, диспетчер ввода-вывода принимает запрос, но не блокирует работу приложения в процессе выполнения ввода-вывода. Вместо этого приложение продолжает свое функционирование. Большинство устройств ввода-вывода очень медленно в сравнении с процессором компьютера; таким образом, прикладная программа может выполнить множество операции в процессе ожидания завершения операции ввода-вывода. Когда подсистема среды выдает асинхронный запрос ввода-вывода, диспетчер ввода-вывода воз­вращается к подсистеме среды немедленно после помещения запроса в очередь, без ожидания завершения операции драйвером устройства. В это время отдель­ная нить управления диспетчера ввода-вывода выполняет запросы из очереди наиболее эффективным образом (не обязательно в порядке поступления)

По завершении любого запроса ввода-вывода диспетчер ввода-вывода уведом­ляет об этом процесс, запросивший операцию.

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

Диспетчер кэша

Архитектура ввода-вывода содержит единственный диспетчер кэша (Cache Ma­nager), который осуществляет кэширование ддя всей системы ввода-вывода. Кэширование (caching) — метод, используемый файловой системой для увеличения эффективности. Вместо непосредственной записи и считывания с диска, часто используемые файлы временно сохраняются в кэш-памяти; таким образом, работа с этими файлами выполняется в памяти. Операции с данными, находящимися в памяти, производятся значительно быстрее операции с дан­ными на диске.

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

Диспетчер кэша поддерживает службы типа ленивой записи (lazy write) и ленивой фиксации (lazy commit), которые могут значительно увеличил) эф­фективность файловой системы. В процессе ленивой записи изменения регистрируются в кэше файловой структуры, обеспечивающем более быстрый доступ. Позднее, когда загрузка центрального процессора снижена, диспетчер кэша заносит изменения на диск. Ленивая фиксация подобна ленивой записи. Вместо немедленной маркировки транзакции как успешно завершившейся, пере­данная информация кэшируется и позднее в фоновом режиме записывается в журнал файловой системы.


Страница: