35486

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

Реферат

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

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

Русский

2013-09-15

73.01 KB

17 чел.

Режимы ядра и пользователя 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 для выполнения запрошенной операции.


 

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

11508. Определение соответствия статической характеристики термоэлектрического преобразователя 19.67 KB
  Методика и порядок проведения поверки В условиях учебной лаборатории поверка ТП включает внешний осмотр определение соответствия статической характеристики преобразователя стандартной НСХ. При проведении поверки соблюдают следующие условия: температура окруж...
11509. Виртуальные ПК 101 KB
  Лабораторная работа Тема: Виртуальные ПК Цель работы: изучить способы создания и настройки виртуального ПК установки на нём операционной системы Теоретические сведения Существует еще один способ установки на одном компьютере множества операционных систем с п...
11510. Восстановление файлов и каталогов в Windows 147.5 KB
  Лабораторная работа Тема: Восстановление файлов и каталогов в Windows Цель работы: научиться создавать резервные копии дисков и файлов клонировать носители создавать резервные копии системных носителей; научиться восстанавливать данные и систему с резервных копий. ...
11511. Файловая система NTFS 94 KB
  Лабораторная работа Тема: Файловая система NTFS Цель работы: изучить организацию файловой системы NTFS Теоретические сведения Файловая система NTFS была разработана для ОС Windows NT с учетом опыта разработки файловых систем FAT и HPFS. Основными отличиями являются: подд...
11512. Файловые системы Linux 291.5 KB
  Лабораторная работа Тема: Файловые системы Linux Цель работы: изучить организацию файловых систем Linux Теоретические сведения Типы файловых систем поддерживаемых в Linux Файловая система одна из основных составляющих любой операционной системы так как она обесп...
11513. Управление процессами в операционной системе 163 KB
  Лабораторная работа №4 Тема: Управление процессами в операционной системе Цель работы: ознакомиться с организацией взаимодействием планированием процессов и потоков в Windows 200/XP Теоретические сведения Процессы и потоки в Windows 2000 В операционной системе Windows 2000 е
11514. Работа с дисками в операционной системе Windows 74.5 KB
  Лабораторная работа Тема: Работа с дисками в операционной системе Windows Цель работы: изучить приёмы обслуживания дисков Теоретические сведения Проверка диска Программу для обслуживания жесткого диска необходимо запускать в стандартном режиме по возможности ч
11515. Производство мягкого мороженого 81 KB
  Лабораторная работа № 4 Производство мягкого мороженого Цель работы практически ознакомиться с технологией мягкого мороженого а именно с принципами расчета рецептуры мороженого порядком составления смеси и режимами ее обработки процессом фризерования...
11516. Производство мягких свежих сыров 19.33 KB
  Лабораторная работа № 3 Производство мягких свежих сыров Цель работы ознакомиться с технологическим процессом производства мягких свежих сыров на примере Адыгейского сыра. Задание 1. Определить показатели молока: кислотность и массовую долю жира. Зада...