35486

Режимы ядра и пользователя Windows

Реферат

Информатика, кибернетика и программирование

Windows NT раньше поддерживала несколько архитектур центральных процессоров включая PowerPC и Alpha современные версии Windows NT поддерживают только процессоры компании Intel и совместимые с ними модели например компании AMD. Страницы памяти которые содержат код в отличие от данных могут быть отмечены как предназначенные только для чтения пользовательскими процессами и кодом на уровне ядра Приложения которые выполняются в пользовательском режиме получают доступ к службам ядра Windows NT вызывая специальные инструкции допускающие...

Русский

2013-09-15

73.01 KB

16 чел.

Режимы ядра и пользователя Windows

Система Windows NT проектировалась, как переносимая операционная система, в которой весь код, зависимый от процессора и аппаратного обеспечения, изолирован в модуле, называемом уровнем аnnаратных абстракций  (llard\vare abstraction layer - HAL).

Windows NT раньше поддерживала несколько архитектур центральных процессоров, включая PowerPC и Alpha, современные версии Windows NT поддерживают только процессоры компании Intel и совместимые с ними модели (например, компании AMD).

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

Каждая страница памяти имеет связанный с ней тег, который определяет возможность чтения или записи этой страницы, а также уровень привилегий, необходимых для чтения и записи. Эта возможность предназначена для защиты пользовательских процессов друг от друга и ДЛя защиты системных кода и данных от пользовательских процессов. Обратите внимание, что системный код, выполняемый в режиме ядра, незащищен от другого кода, который выполняется в режиме ядра.

Страницы памяти, которые содержат код (в отличие от данных), могут быть отмечены как предназначенные только для чтения пользовательскими процессами и кодом на уровне ядра

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

Процесс, контекст процесса и потоки

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

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

Операционная система создает несколько процессов для своих нужд, а также определенные процессы в ответ на пользовательские команды, например когда пользователь запускает приложение, такое, как Мiсrоsоft Word или Мiсrоsоft Excel. Если драйвер вызывается во время работы процесса, считается, что он работает в контексте вызывающего процесса.

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

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

Архитектура Windows NT

Операционная система Windows NT проектировалась как модульная, многоуровневая архитектура, поддерживающая расширения за счет добавлениеновых функций. Архитектура позволяет добавлять поддержку новых устройств и новых возможностей, например шифрующей файловой системы(EFS). Архитектура системы позволяет добавлять поддержку приложений, которые Основаны на других операционных системах, например OS/2 или P0SIX.

На рис. 1 показана высокоуровневая архитектура Windows NT.

рис 1. Архитектура системы Windows NT

Режим ядра содержит все привилегированные процессы, которые выполняются на уровне 0 архитектуры Intel x86. Режим ядра Windows NT состоит из трех основных подсистем.

Уровень аппаратных абстракций.

Ядро Windows NT.

Выполняемый модуль Windows NT.

Уровень аппаратных абстракций

Уровень аппаратных абстракций (Hardware Abstraction LayerHAL) обеспечивает защиту данных за счет управления доступом к аппаратным ресурсам. Это единственный модуль операционной системы Windows NT, который содержит код, зависящий от аппаратного обеспечения (или от архитектуры процессора).

Ядро Windows NT

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

Ядро системы выполняет следующие основные функции:

  1.   помощь в синхронизации данных;
  2.   планирование выполнения потоков и процессов;
  3.   управление прерываниями и исключениями;
  4.   восстановление системы после аварийных ситуаций, например после отказа питания.

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

Это значит, что выполнение кода ядра не может быть прервано ради другого кода, если только ядро не выполняет это самостоятельно. Ядро представляет собой объектно-ориентированную систему, в которой используется два класса объектов.

1. Объекты-диспетчеры, которые позволяют управлять потоками и процессами и применяются для

синхронизации различных потоков/процессов.

2. Объекты управления, например асинхронные вызовы процедур (asynchronous procedure calls — АРС) и процедуры обслуживания прерываний (interrupt service routinesISR)

Выполняемый модуль Windows NT

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

Модуль управляет несколькими операциями, включая ввод-вывод данных, поддержку работы системы безопасности, межпроцессное взаимодействие, управление памятью и процессами, поддержку интерфейса Plug and Play, управление питанием, файловыми системами, объектами и графическими устройствами. Весь выполняемый модуль Windows NT размещен в одном файле — ntoskrnl.exe. 

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

Выполняемый модуль Windows NT, в свою очередь, содержит следующие компоненты:

  1.  диспетчер объектов;
  2.  монитор ссылок безопасности;
  3.  диспетчер процессов;
  4.  подсистема Plug and Play;
  5.  диспетчер энергопитания;
  6.  диспетчер виртуальной памяти;
  7.  диспетчер' кэша.

  1.  Диспетчер объектов

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

Соответствующий означает, что предоставляется доступ определенного типа, например доступ только для чтения. Каждый объект, созданный диспетчером объектов, имеет связанный с ним список управления доступом (access control listACL). На самом деле этот список представляет собой группу объектов, которые указывают разрешения, явно или неявно предоставленные пользователю или группе;

2. Монитор ссылок безопасности

Монитор ссылок безопасности (Security Reference Monitor) заведует проверкой доступа и протоколированием ресурсов.

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

При предоставлении доступа к объекту монитор ссылок безопасности сравнивает список управления доступом, который связан с объектом, с маркером (token) безопасности процесса перед тем, как предоставить или запретить доступ.

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

3. Диспетчер процессов

Диспетчер процессов (Process Manager) обеспечивает создание и удаление процессов и потоков, а также управление ими. Диспетчер не поддерживает иерархию компонентов; например, отношения между процессами вида "родитель-потомок" не отслеживаются. Эта работа ложится на компонент, который создал процесс.

По аналогии представьте диспетчер файлов, который предоставляет возможность создания файла, однако внедрением этого файла в структуру каталогов должен заниматься пользователь диспетчера файлов. Диспетчер процессов пользуется услугами как диспетчера объектов, так и подсистемы безопасности.

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

4. Подсистема Plug and Play

На рис. 1 управление питанием и подсистема Plug and Play схематически размещены в едином прямоугольнике, что сделано для упрощения структуры диаграммы. На самом'же деле это различные подсистемы, хотя и тесно взаимодействующие друг с другом.

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

В частности, это программное обеспечение отвечает за выполнение следующих функций:

  1.  корректное определение аппаратного обеспечения;
  2.  корректное определение динамического подключения или отключения аппаратного обеспечения;
  3.  выделение и настройка ресурсов для работы аппаратного обеспечения;
  4.  поиск и загрузка драйверов устройств;
  5.  поддержка механизма уведомления, с помощью которого определяется появление и удаление аппаратного обеспечения; этот механизм может использоваться программным обеспечением как в режиме ядра, так и в пользовательском режиме.

5. Диспетчер энергопитания

Диспетчер энергопитания (Power Manager) играет важную роль в предоставлении энергосберегающих функций, таких, как снижение оборотов вращения жестких дисков, накопителей для компакт-дисков и DVD, а также отключение питания мониторов и видеоадаптеров.

6. Диспетчер виртуальной памяти

Диспетчер виртуальной памяти (Virtual Memory ManagerVMM) предоставляет функции управления памятью, благодаря которым процессы могут использовать объем памяти, превышающий размер физической памяти, установленной на компьютере. Запросы приложений на выделение памяти регистрируются диспетчером виртуальной памяти.

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

Этот метод получил название подкачки страниц (paging).

Область диска, которая используется для хранения страниц, не размещенных в физической памяти, называется файлом, подкачки (swap file).

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

В Windows NT 4.0 поддерживалось адресное пространство объемом 4 Гбайт, которое поровну распределялось между пользовательским режимом и режимом ядра.

Верхние 2 Гбайт выделялись режиму ядра Windows NT, а нижние 2 Гбайт — пользовательскому режиму. В Windows 2000 Advanced Server параметры загрузки позволяют перераспределить адресное пространство, выделив 1 Гбайт режиму ядра и 3 Гбайт пользовательскому режиму.

Приложения пользовательского режима следует переписать для использования дополнительного объема адресного пространства. Конечно, для 64-разрядной версии Windows NT подобного ограничения просто не существует.

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

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

Посредством описываемого API драйверы по мере необходимости запрашивают выгружаемую или невыгружаемую память.

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

Это неотъемлемый элемент подсистемы ввода-вывода, который работает в тесной связке с драйверами файловых систем и диспетчером виртуальной памяти.

Диспетчер кэша Windows NT взаимодействует с файловой системой и ее драйверами. Подобный метод отличается от стратегии кэширования, свойственной Windows 95, которая предназначалась для взаимодействия непосредственно с дисковыми секторами.

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

Потоки данных относятся к возможностям файловой системы NT (NTFS)

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

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

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

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

Подсистема ввода-вывода

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

  1.  Обеспечение работы сверхпроизводительных операций ответного вводавывода для одно- и многопроцессорных компьютеров.
  2.  Предоставление асинхронного ввода-вывода. Синхронный ввод-вывод осуществляется, по сути, в виде асинхронного запроса ввода-вывода,после которого следует блокирующее ожидание завершения операции ввода-вывода.
  3.  Поддержка нескольких файловых систем, в частности CDFS, NTFS и UDFS.
  4.  Предоставление модульной архитектуры, поддерживающей добавление новых файловых систем и устройств.
  5.  Предоставление устройствам (и их драйверам) возможности подключения и отключения "на лету", без перезагрузки (эта функция реализована в Windows 2000 и более новых версиях Windows NT).
  6.  Предоставление расширенных возможностей, например кэширования и записи содержимого файлов в память (запись содержимого файла в указанной области памяти в адресном пространстве процесса). Для получения доступа или модификации содержимого файла приложение выполняет чтение и запись определенной области адресного пространства.
  7.  Защита ресурсов, которые совместно используются несколькими процессами.

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

  1.  программный интерфейс приложений ввода-вывода (I/O API);
  2.  диспетчер ввода-вывода;
  3.  драйверы файловых систем;
  4.  другие драйверы (например, драйверы клавиатуры и драйверы дисков).

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

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

2. Диспетчер ввода-вывода (I/O Manager)

Это элемент выполняемого модуля Windows NT; свойственные ему функции перечислены ниже.

  1.  Создание пакетов запроса ввода-вывода (IRP) и направление их соответствующему драйверу, а также перенаправление пакетов запроса ввода-вывода между драйверами.
  2.  Удаление и освобождение пакетов запроса ввода-вывода после завершения операции ввода-вывода.
  3.  Взаимодействие с диспетчером кэша и другими компонентами NT Executive.
  4.  Взаимодействие с диспетчером виртуальной памяти для предоставления файловым системам функций ввода-вывода с записью данных в память.
  5.  Мониторинг загруженных файловых систем и их вызов по требованию.
  6.  Предоставление поддержки синхронного и асинхронного ввода-вывода. Асинхронный ввод-вывод особенно важен для приложений хранения данных. Например, приложение резервного копирования может использовать асинхронный ввод-вывод для размещения в очереди нескольких запросов, что позволяет полностью загрузить устройство записи на ленту.
  7.  Управление буферами для операций ввода-вывода.

3. Драйверы файловых систем

Операционная система предоставляет функции файловых систем с помощью драйверов режима ядра.

Система Windows NT поставляется вместе с такими файловыми системами:

NTFS (файловая система NT);

UDFS (универсальная дисковая файловая система);

CDFS (файловая система компакт-дисков);

FAT (таблица размещения файлов).

Драйверы файловой системы являются логическими, так как не взаимодействуют непосредственно с аппаратным обеспечением; например, файловая система не делает различия между дисками с интерфейсом SCSI и с интерфейсом АТА (иногда называемым IDE). Тем не менее драйверы файловой системы отличаются от других драйверов.

Некоторые из этих отличий приведены ниже.

  1.  Драйверы файловой системы всегда вызываются в контексте потока,запрашивающего операцию ввода-вывода.
  2.  Драйверы файловой системы активно взаимодействуют с диспетчером кэша и диспетчером виртуальной памяти, используя эти два компонента для буферизации данных. Например, файловая система использует услуги диспетчера кэша для кэширования метаданных файловой системы (это может быть расположение файлов и каталогов на диске), чтобы избежать повторных запросов одних и тех же метаданных.
  3.  Драйверы файловой системы являются единственными драйверами, которые обеспечивают работу методов ввода-вывода на основе IRP. Подобный метод называется быстрым вводом-выводом (Fast I/O) и представляет собой несколько входных точек драйвера.

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

Графическая подсистема

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

Пользовательский режим

Подсистема Win32

Это наиболее важный компонент Windows NT, особенно для программистов. На основе программного интерфейса Win32 создаются другие подсистемы, такие, как POSIX.

Программный интерфейс приложений Win32 можно разделить на три категории.

1. Обработка оконного интерфейса и API для сообщений оконного интерфейса реализованы в виде динамически подключаемой библиотеки user32.dll. Эта библиотека подключается приложениями, использующими интерфейсы, которые предоставляются этим файлом. При этом несколько приложений во время работы задействуют только одну ко
пию библиотеки.

2. Графический API реализован в виде динамически подключаемой библиотеки gdi32.dll. В версиях Windows NT до Windows 2000 библиотека gdi32. dll являлась клиентом, подключаемым к серверному процессу Win32 (рассматривается далее), так как соответствующие функции
были реализованы в серверном процессе. А сервер Win32, в свою очередь, вызывал компонент режима ядра для графической подсистемы.
В Windows 2000 библиотека gdi32.dll вызывает этот компонент безпосредников.

3. Базовые API, например функции открытия файла (CreateFile), чтения файла (ReadFile) и записи файла (WriteFile), реализованы в динамически подключаемой библиотеке, которая называется ntdll.dll. При необходимости эта библиотека делает вызовы к выполняемому модулю Windows в режиме ядра. Для этого библиотека использует одно из 256 прерываний, поддерживаемых архитектурой Intel x86. В частности, используется прерывание 46 (десятичный номер 46, шестнадца-теричный — 0х2Е). Обработчик прерывания2 идентифицирует как запрошенный API (выполнив поиск по таблице), так и передаваемые ему параметры. Если все параметры прошли проверку, обработчик вызывает соответствующую подсистему выполняемого модуля Windows для выполнения запрошенной операции.


 

А также другие работы, которые могут Вас заинтересовать

11049. Мехатронные транспортные средства, устройства бытового и медицинского назначения. Периферийные устройства компьютеров как мехатронные объекты 513.5 KB
  Мехатронные транспортные средства устройства бытового и медицинского назначения. Периферийные устройства компьютеров как мехатронные объекты. 8.1 Мехатронные транспортные средства. Современная автомобильная МС включает как правило целый ряд подсистем выполн
11050. Информационные системы в мехатронике 96.5 KB
  Информационные системы в мехатронике 1. Место и роль информационных систем Информационная система ИС представляет собой совокупность функционально объединенных измерительных вычислительных и других вспомогательных технических средств предназначенных для получ
11051. Первичные измерительные преобразователи 139.5 KB
  Первичные измерительные преобразователи Основные определения Измерительный преобразователь ИП средство измерения предназначенное для преобразования входного измерительного сигнала измеряемой величины в выходной сигнал более удобный для дальнейшего преобра...
11052. Принципы передачи и преобразования информации 130 KB
  Принципы передачи и преобразования информации Во многих встречающихся на практике случаях функциональный блок мехатронного устройства являющийся потребителем информации удален от первичного источника информации например датчика на некоторое иногда довольно зна...
11053. Системы управления мехатронными объектами 123 KB
  Системы управления мехатронными объектами Мехатронные объекты являются ярким примером реализации сложных законов управления. Системы управления применимы в тех случаях когда объект процесс обладает управляемостью т.е. существует возможность изменения его некотор...
11054. Построение структуры системы управления, программная реализация регуляторов 136 KB
  Построение структуры системы управления программная реализация регуляторов Большинство систем процессорного компьютерного управления содержат в своем составе различные регуляторы выполненные программным образом либо реализованные аппаратно. В настоящее время н...
11055. Исполнительные устройства систем мехатроники 206.5 KB
  Исполнительные устройства систем мехатроники Общие сведения и классификация Исполнительными механизмами называются механизмы выполняющие непосредственно требуемую технологическую операцию путем воздействия на обрабатываемую среду или объект с целью изменения
11056. Основы проектирования интегрированных мехатронных модулей и систем 734 KB
  Основы проектирования интегрированных мехатронных модулей и систем Основой метода мехатроники является интеграция составляющих частей которая закладывается на этапе проектирования и затем реализуется в технологических процессах производства и эксплуатации мехат...
11057. Методы интеграции при проектировании мехатронных агрегатов 182.5 KB
  Методы интеграции при проектировании мехатронных агрегатов Для проектирования интегрированных мехатронных агрегатов разработаны три метода интеграции. Каждый из методов может применяться как самостоятельно так и в комбинации с другими методами поскольку они реа