- •Модуль 4 Вариант 1
- •1. Опишите подход к планированию в мультипроцессорах посредством разделения времени. В чем суть единой структуры данных для планирования, каковы достоинства и недостатки.
- •2. В чем суть механизма умного планирования, приоритетного планирования, родственного планирования, двухуровневого планирования.
- •3. Опишите подход функционирования ос на каждом cpu - метод персональной копии. Дайте графическую интерпретацию и основные замечания. В чем состоят достоинства и недостатки.
- •4. Организация коллективных операций в mpi.
- •Вариант 2
- •1. Опишите подход к функционированию ос на мультипроцессорах – персональная копия ос лишь cpu-хозяину, остальные – cpu-подчиненные.
- •3. Опишите подход к планированию в мультипроцессорах посредством совместного использования адресного пространства.
- •Вариант 4
- •Модуль 5 Вариант 1
- •Модель операционной системы
- •3 Вариант
- •1) Понятие масштабируемости. Особенности многопроцессорной Windows.
- •2) Графическая интерпретация этапов создания процесса в Windows
- •3) Основные функции Win32 api по работе с потоками
- •4) Функции Win32 api для работы с основными сервисами диспетчера памяти.
- •5) Защита объектов и протоколирование обращений к ним. Олицетворение: описание, назначение
- •6) Драйверы устройств. Типы драйверов устройств: пользовательский режим и режим ядра. Wdm-драйверы. Многоуровневые драйверы.
- •7) Пространство имен томов. Диспетчер монтирования. Точки монтирования. Монтирование томов.
- •8) Схема взаимодействия компонентов фс при вводе-выводе. Явный файловый ввод- вывод.
- •4 Вариант
- •1. Ключевые подсистемы ос Windows и их описание.
- •2. Этапы создания процесса.
- •3. Этапы создания потока в Windows.
- •5 Вариант
- •6 Вариант
- •Вариант 2
- •3. Особенности реализации потоков в Linux. Системный вызов clone.
- •Некоторые системные вызовы, относящиеся к безопасности
- •Вариант 5
- •Основные вызовы стандарта posix для управления терминалом
- •Вариант 6
- •Алгоритмы замещения страниц
4 Вариант
1. Ключевые подсистемы ос Windows и их описание.
Подсистема Windows
Эта подсистема состоит из следующих основных элементов.
Процесса подсистемы окружения (Csrss.exe), предоставляющего:
поддержку консольных (текстовых) окон;
поддержку создания и удаления процессов и потоков;
частичную поддержку процессов 16-разрядной виртуальной DOS-машины (VDM);
множество других функций, например GetTempFile, DefineDosDevice, ExitWindowsEx, а также несколько функций поддержки естественных языков.
Драйвера режима ядра (Wln32k.sys), включающего:
Диспетчер окон, который управляет отрисовкой и выводом окон на экран, принимает ввод с клавиатуры, мыши и других устройств, а также передает пользовательские сообщения приложениям;
Graphics Device Interface (GDI), который представляет собой библиотеку функций для устройств графического вывода. В GDI входят функции для манипуляций с графикой и отрисовки линий, текста и фигур.
DLL-модулей подсистем (Kernel32.dll, Advapi32.dll, User32.dll и Gdi32.dll), транслирующих вызовы документированных функций Windows API в вызовы соответствующих (и в большинстве своем недокументированных) сервисов режима ядра из Ntoskrnl.exe и Win32k.sys.
Драйверов графических устройств, представляющих собой специфичные для конкретного оборудования драйверы графического дисплея, принтера и минипорт-драйверы видеоплат.
Подсистема POSIX
POSIX, название которой представляет собой аббревиатуру от «portable operating system interface based on UNIX» (переносимый интерфейс ОС на основе UNIX), — это совокупность международных стандартов на интерфейсы ОС типа UNIX. Стандарты POSIX стимулировали производителей поддерживать совместимость реализуемых ими UNIX-подобных интерфейсов, тем самым позволяя программистам легко переносить свои приложения между системам.
Подсистема OS/2
Подсистема окружения OS/2, как и подсистема POSIX, обладает довольно ограниченной функциональностью и поддерживает лишь 16-разрядные приложения OS/2 версии 1.2 с символьным или графическим вводом-выводом. Кроме того, Windows запрещает прикладным программам прямой доступ к оборудованию и поэтому не поддерживает приложения OS/2, использующие расширенный ввод-вывод видео или включающие сегменты привилегированного ввода-вывода, которые пытаются выполнять инструкции IN/ OUT (для доступа к некоторым аппаратным устройствам). Приложения, выдающие машинные команды CLI/STI, могут работать в Windows, но на время выполнения команды STI все другие приложения OS/2
2. Этапы создания процесса.
Этап 1: открытие образа, подлежащего выполнению.
Этап 2: создание объекта процесс.
Этап 3: создание первичного потока, стека и контекста.
Этап 4: уведомление подсистемы Windows о новом процессе.
Этап 5: запуск первичного потока.
Этап 6: инициализация в контексте нового процесса.
3. Этапы создания потока в Windows.
Формируется структура данных , стек и контекст потока, генерируется идентификатор потока. Поток создается при помощи функции NtCreateThreadкоторая вызывает функцию PspCreateThread (тот же файл, строка 295). При этом выполняются следующие действия:
создается объект ETHREAD
Заполняются поля структуры ETHREAD, связанные с процессом-владельцем, – указатель на структуру EPROCESS и идентификатор процесса
Генерируется уникальный идентификатор потока и сохраняется в поле структуры EPROCESS
Заполняются стартовые адреса потока, системный (StartAddress) и пользовательский (Win32StartAddress)
Инициализируются поля структуры KTHREAD при помощи вызова функции KeInitThread
Функция KeStartThread заполняет остальные поля структуры ETHREAD и вставляет поток в список потоков процесса
4. Разбиение виртуального адресного пространства на страницы. Преимущества и недостатки больших и малых страниц.
Виртуальное адресное пространство каждого процесса делится на части одинакового, фиксированного для данной системы размера, называемые виртуальными страницами. В общем случае размер виртуального адресного пространства не является кратным размеру страницы, поэтому последняя страница каждого процесса дополняется фиктивной областью.
Вся оперативная память машины также делится на части такого же размера, называемые физическими страницами (или блоками).
Размер страницы обычно выбирается равным степени двойки: 512, 1024 и т.д., это позволяет упростить механизм преобразования адресов.
При загрузке процесса часть его виртуальных страниц помещается в оперативную память, а остальные - на диск. Смежные виртуальные страницы не обязательно располагаются в смежных физических страницах. При загрузке операционная система создает для каждого процесса информационную структуру - таблицу страниц, в которой устанавливается соответствие между номерами виртуальных и физических страниц для страниц, загруженных в оперативную память, или делается отметка о том, что виртуальная страница выгружена на диск. Кроме того, в таблице страниц содержится управляющая информация, такая как признак модификации страницы, признак невыгружаемости (выгрузка некоторых страниц может быть запрещена), признак обращения к странице (используется для подсчета числа обращений за определенный период времени) и другие данные, формируемые и используемые механизмом виртуальной памяти.
5. Идентификаторы защиты – SID: структура, варианты, объекты для которых генерируется.
Для идентификации объектов, выполняющих в системе различные действия, Windows использует не имена (которые могут быть не уникальными), а идентификаторы защиты (security identifiers, SID). SID имеются у пользователей, локальных и доменных групп, локальных компьютеров, доменов и членов доменов. SID представляет собой числовое значение переменной длины, формируемое из номера версии структуры SID, 48-битного кода агента идентификатора и переменного количества 32-битных кодов субагентов и/ или относительных идентификаторов (relative identifiers, RID). Код агента идентификатора (identifier authority value) определяет агент, выдавший SID. Таким агентом обычно является локальная система или домен под управлением Windows. Коды субагентов идентифицируют попечителей, уполномоченных агентом, который выдал SID, a RID — не более чем средство создания уникальных SID на основе общего базового SID (common-based SID). Поскольку длина SID довольно велика и Windows старается генерировать истинно случайные значения для каждого SID, вероятность появления двух одинаковых SID практически равна нулю.
B текстовой форме каждый SID начинается с префикса S за которым следуют группы чисел, разделяемые дефисами.
6. Структура драйвера. Основные процедуры драйвера устройства. Объект драйвер. Объект устройство.
Выполнением драйверов устройств управляет подсистема ввода-вывода. Драйвер устройства состоит из набора процедур, вызываемых на различных этапах обработки запроса ввода-вывода:
Инициализирующая процедура. Диспетчер ввода-вывода выполняет инициализирующую процедуру драйвера (которая обычно называется DriverEntry) при загрузке этого драйвера в ОС. Данная процедура регистрирует остальные процедуры драйвера в диспетчере ввода-вывода, заполняя соответствующей информацией системные структуры данных, и выполняет необходимую глобальную инициализацию драйвера.
Процедура добавления устройства. Такие процедуры реализуются в драйверах, поддерживающих Plug and Play. Через эту процедуру диспетчер PnP посылает драйверу уведомление при обнаружении устройства, за которое отвечает данный драйвер. Выполняя эту процедуру, драйвер обычно создает объект «устройство», представляющий аппаратное устройство.
Процедуры диспетчеризации. Это основные функции, предоставляемые драйвером устройства, например для открытия, закрытия, чтения, записи и реализации других возможностей устройства, файловой системы или сети. Диспетчер ввода-вывода, вызванный для выполнения операции ввода-вывода, генерирует IRP и обращается к драйверу через одну из его процедур диспетчеризации.
Процедура инициации ввода-вывода. С помощью этой процедуры драйвер может инициировать передачу данных, как на устройство, так и с него. Эта процедура определяется лишь в драйверах, использующих поддержку диспетчера ввода-вывода для помещения входящих запросов в очередь. Диспетчер ввода-вывода ставит в очередь IRP для драйвера, гарантируя одновременную обработку им только одного IRP. Большинство драйверов обрабатывают сразу несколько IRP, но создание очереди имеет смысл для некоторых драйверов, в частности для драйвера клавиатуры.
Процедура обслуживания прерываний (ISR). Когда устройство генерирует прерывание, диспетчер прерываний ядра передает управление этой процедуре. В модели ввода-вывода Windows процедуры ISR работают на уровне DIRQL (Device IRQL), поэтому они выполняют минимум действий во избежание, слишком продолжительной блокировки прерываний более низкого уровня.
DPC-процедура обработки прерываний. DPC-процедура выполняет основную часть обработки прерывания, оставшуюся после выполнения ISR. Она работает при более низком IRQL (уровня «PPC/dispatch») чем ISR, чтобы не блокировать без необходимости другие прерывания. DPC-процедура инициирует завершение текущей операции ввода-вывода и выполнение следующей операции ввода- вывода из очереди на данном устройстве. У многих драйверов устройств имеются процедуры, не показанные на Рис. 5.
Одна или несколько процедур завершения ввода-вывода. У драйвера могут быть процедуры завершения ввода-вывода, уведомляющие его об окончании обработки IRP драйвером более низкого уровня.
7. Динамические диски. База данных LDM: описание, назначение, структура. Организация динамических дисков. Диспетчер томов на динамических дисках.
База данных LDM размещается в зарезервированном пространстве (размером 1 Мб) в конце каждого динамического диска. Именно поэтому Windows требует свободное место в конце базового диска при его преобразовании в динамический. База данных LDM состоит из четырех областей:
сектора заголовка, называемого в LDM «Private Header»
таблицы оглавлений
записей базы данных
журнала транзакций.
Сектор Private Header размещается за 1 Мб до конца динамического диска и является границей базы данных. Работая с Windows, вы быстро заметите, что для идентификации практически всех объектов в ней используются GUID, и диски не составляют исключения. GUID — это 128-битное число, применяемое различными компонентами Windows для уникальной идентификации объектов. LDM назначает GUID каждому динамическому диску, а сектор Private Header регистрирует GUID динамического диска, на котором он находится, поэтому данные в Private Header относятся исключительно к конкретному диску. Private Header также хранит указатель на начало таблицы оглавления базы данных и имя дисковой группы, которое формируется конкатенацией имени компьютера и строки Dg0 (если имя компьютера — Daryl, то имя дисковой группы — DarylDg0). (Как уже говорилось, LDM в Windows поддерживает только одну дисковую группу, поэтому ее имя всегда оканчивается на DgO.) Для большей надежности LDM поддерживает копию Private Header в последнем секторе диска.
Таблица оглавления занимает 16 секторов и содержит информацию о структуре базы данных. Область записей базы данных LDM начинается с сектора заголовка записей базы данных сразу за таблицей оглавления. B этом секторе хранится информация об области записей базы данных, включая число присутствующих в ней записей, имя и GUID дисковой группы, к которой относится база данных, и идентификатор последовательности, используемый LDM для создания следующего элемента в базе данных. Секторы, следующие за сектором заголовка записей, содержат записи фиксированного размера (по 128 байтов) с описанием разделов и томов дисковой группы.
Элементы базы данных могут быть четырех типов: раздел (partition), диск (disk), компонент (component) и том (volume). Типы элементов определяют три уровня описания томов. LDM связывает элементы с помощью внутренних идентификаторов объектов. Ha самом нижнем уровне элементы разделов (partition entries) описывают нежесткие разделы, которые являются непрерывными областями на диске; идентификаторы, хранящиеся в элементе раздела, связывают его с элементами компонентов и дисков.
Работа диспетчера томов на динамических дисках состоит в взаимодействии с базой данных LDM.
8. Драйверы фильтров файловой системы.
Это драйверы устройств, отвечающие спецификации Windows Driver Model (WDM). WDM требует от драйверов поддержки управления электропитанием, Plug and Play и WMT. Большинство драйверов Plug and Play построены как раз на модели WDM. Эта модель реализована в Windows, Windows 98 и Windows Millennium Edition, поэтому WDM-драйверы этих ОС совместимы на уровне исходного кода, а во многих случаях и на уровне двоичного кода. Существует три типа WDM-драйверов.
Драйверы шин. Управляют логическими или физическими шинами. Примеры шин — PCMCIA, PCI, USB, IEEE 1394, ISA. Драйвер шины отвечает за распознавание устройств, подключенных к управляемой им шине, оповещение о них диспетчера PnP и управление параметрами электропитания шины.
Функциональные драйверы. Управляют конкретным типом устройств. Драйверы шин представляют устройства функциональным драйверам через диспетчер PnP. Функциональным считается драйвер, экспортирующий рабочий интерфейс устройства ОС.
Драйверы фильтров. Занимающие более высокий логический уровень, чем функциональные драйверы, они дополняют функциональность или изменяют поведение устройства либо другого драйвера. Так, утилиту для перехвата ввода с клавиатуры можно реализовать в виде драйвера фильтра клавиатуры, расположенного на более высоком уровне, чем функциональный драйвер клавиатуры.
