- •Классификация, критерии оценки и структура ос.
- •Критерии оценки ос
- •Надежность
- •Эффективность
- •Удобство
- •Масштабируемость
- •Способность к развитию
- •Мобильность
- •Основные функции и структура ос
- •Классификация и архитектура внешних устройств. Классификация периферийных устройств и их архитектура
- •Способы организации ввода/вывода. Синхронный и асинхронный ввод/вывод. Архитектура подсистемы ввода/вывода
- •Ввод/вывод по опросу и по прерываниям
- •Активное и пассивное ожидание
- •Синхронный и асинхронный ввод/вывод
- •Буферизация и кэширование.
- •Сглаживание неравномерности скоростей процессов
- •Распараллеливание ввода и обработки
- •Согласование размеров логической и физической записи
- •Редактирование при интерактивном вводе
- •Кэширование дисков
- •Опережающее чтение.
- •Драйверы устройств. Типовая структура драйвера.
- •Уровни доступа к устройствам в ms-dos. Драйверы устройств ms-dos.
- •Драйверы устройств в ms-dos
- •Управление символьными устройствами в ms-dos. (На примере клавиатуры) Управление символьными устройствами
- •Управление блочными устройствами в ms-dos. (Структура диска) Управление блочными устройствами Структура диска
- •Разделы и логические тома
- •Управление устройствами в Windows и unix. Управление устройствами в Windows Драйверы устройств в Windows
- •Управление устройствами в unix Драйверы устройств в unix
- •Устройство как специальный файл
- •Характеристики файлов и архитектура файловых систем.
- •Размещение файлов.
- •Разделение файлов между процессами. Разделение файлов между процессами
- •Файловая система fat. Структуры данных на диске, создание и удаление файлов. Файловая система fat и управление данными в ms-dos Общая характеристика системы fat
- •Структуры данных на диске
- •Создание и удаление файла
- •Работа с файлами в ms-dos. Хэндлы. Внутренние структуры данных подсистемы управления данными (sft, jft). Работа с файлами в ms-dos. Системные функции.
- •Доступ к данным
- •Структуры данных в памяти
- •Архитектура файловой системы unix.
- •Жесткие и символические связи
- •Монтируемые тома
- •Типы и атрибуты файлов
- •Управление доступом к файлам в unix. Управление доступом
- •Структуры данных файловой системы unix.
- •Развитие файловых систем unix. Развитие файловых систем unix
- •Особенности файловой системы ntfs. Особенности файловой системы ntfs
- •Структуры дисковых данных
- •Главная таблица файлов
- •Атрибуты файла
- •Доступ к данным в Windows. Доступ к данным
- •Защита данных в Windows. Защита данных
- •Аутентификация пользователя
- •Дескриптор защиты
- •Процессы и ресурсы. Квазипараллельное выполнение процессов. Понятия процесса и ресурса
- •Квазипараллельное выполнение процессов
- •Состояния процесса. Состояния процесса
- •Вытесняющая и невытесняющая многозадачность. Вытесняющая и невытесняющая многозадачность
- •Дескриптор и контекст процесса. Реентерабельность системных функций. Дескриптор и контекст процесса
- •Реентерабельность системных функций
- •Дисциплины диспетчеризации и приоритеты процессов. Дисциплины диспетчеризации и приоритеты процессов
- •Изоляция и взаимодействие процессов. Проблема взаимного исключения. Изоляция процессов и их взаимодействие
- •Проблема взаимного исключения процессов
- •Двоичные семафоры Дейкстры. Средства взаимодействия процессов. Двоичные семафоры Дейкстры
- •Средства взаимодействия процессов
- •Целочисленные семафоры
- •Семафоры с множественным ожиданием
- •Сигналы
- •Сообщения
- •Общая память
- •Программные каналы
- •Проблема тупиков. Проблема тупиков
- •Процессы и нити в Windows.
- •Планировщик процессов в Windows. Планировщик Windows
- •Синхронизация нитей и функции ожидания в Windows. Синхронизация нитей. Способы синхронизации.
- •Объекты синхронизации и функции ожидания
- •Объекты синхронизации в Windows. Критические секции. Типы объектов синхронизации
- •Критические секции
- •Механизм обмена сообщениями в Windows.
- •Жизненный цикл процесса в unix. Группы процессов. Жизненный цикл процесса
- •Группы процессов
- •Программные каналы
- •Сигналы
- •Интерпретатор команд shell
- •Виртуальные и физические адреса
- •Распределение памяти без использования виртуальных адресов Настройка адресов
- •Распределение с фиксированными разделами
- •Распределение с динамическими разделами
- •40. Сегментная и страничная организация памяти. Сегментная организация памяти
- •Страничная организация памяти
- •Управление памятью в Windows Структура адресного пространства
- •Регионы
- •Отображение исполняемых файлов
- •Файлы, отображаемые на память
- •Стеки и кучи
Управление устройствами в Windows и unix. Управление устройствами в Windows Драйверы устройств в Windows
Поскольку Windows — многозадачная система, она исключает для прикладных программ такие вольности, как прямое обращение к портам ввода/вывода или обработка аппаратных прерываний. Взаимодействие с аппаратурой на низком уровне может выполняться только системными программами, работающими в привилегированном режиме. Основную роль здесь играют драйверы устройств.
В Windows используется многоуровневая структура драйверов, в которой высокоуровневые драйверы могут играть роль фильтров, выполняющих специальную обработку данных, полученных от драйвера низкого уровня или передаваемых такому драйверу. В качестве примера можно привести отделение драйвера, управляющего шиной, от драйверов конкретных устройств, подключенных к шине. Еще один пример — драйвер, выполняющий шифрацию/дешифрацию данных при работе с файловой системой NTFS. Структура драйверов всех уровней подчинена единым стандартам, известным как WDM (Windows Diver Model), однако высокоуровневые драйверы, в отличие от низкоуровневых, не занимаются обработкой аппаратных прерываний.
Как ни странно, в Windows NT низкоуровневые драйверы — это еще не самый нижний уровень управления устройствами. Еще ближе к аппаратуре лежит так называемый уровень HAL (Hardware Abstractions Level, уровень аппаратных абстракций). Его роль — скрыть от остальных модулей ОС, в том числе и от драйверов, некоторые детали работы с аппаратурой, зависящие от конкретных шин, типа материнской платы, способа подключения. Например, HAL предоставляет драйверам возможность обращаться к регистрам устройств по их логическим номерам, не зная при этом, подключен ли регистр к порту процессора или отображен на память.
Несмотря на стандартизацию структуры, можно выделить несколько специальных типов драйверов, отличающихся функциональным назначением.
· Драйверы GDI (Graphic Device Interface) представляют собой высокоуровневые драйверы графических устройств (мониторов, принтеров, плоттеров). Эти драйверы выполняют трансляцию графических вызовов Windows (таких, как «провести линию», «залить область», «выдать текст», «выбрать текущий шрифт, текущее перо, текущую заливку») в команды, выполняющие соответствующие действия на конкретном устройстве. Выдача этих команд на устройство выполняется уже другим, низкоуровневым драйвером. Благодаря наличию драйверов GDI одна и та же программа может выдавать графическое изображение на разные устройства. Яркий пример этого — имеющийся в различных редакторах режим предварительного просмотра, который отображает страницы на экране точно в том виде, как они будут напечатаны.
· Драйверы клавиатуры и мыши, помимо стандартных для драйвера операций, выполняют дополнительную нагрузку. Они генерируют сообщения о событиях на соответствующем устройстве (нажатие и отпускание клавиши, перемещение мыши, нажатие и отпускание кнопок мыши) и помещают их в системную очередь сообщений. Затем система переправляет каждое сообщение процессу, которому оно было предназначено, для дальнейшей обработки.
· Драйверы виртуализации устройств (VxD-драйверы) служат для того, чтобы разделять устройства между процессами, создавая иллюзию, что процесс монопольно владеет устройством. На самом деле драйвер организует очередь заявок от процессов, переключает устройство в нужный для очередного процесса режим и т.п. Примером может служить драйвер виртуализации монитора. Консольное приложение (например, программа MS-DOS) работает со всем экраном в текстовом режиме. Но если такое приложение запущено в окне Windows, то VxD-драйвер имитирует текстовый режим в графике. Для этого драйвер должен перехватывать попытки программы обратиться напрямую к адресам видеопамяти и преобразовывать координаты знакомест текстового режима в координаты соответствующих позиций в окне.
Доступ к устройствам
В большинстве случаев программы не работают непосредственно с устройствами. Вместо этого для выполнения требуемых операций используются API-функции более высокого уровня, а обращения к устройствам выполняются системой по мере надобности. Например, файловые функции обращаются в конечном счете к дисковым устройствам, а функции GDI работают с монитором или с принтером, в зависимости от указанного контекста устройства.
В ряде случаев программист все же может предпочесть непосредственную работу с устройством. Чтобы получить доступ к устройству, программа должна открыть это устройство вызовом той жеAPI-функции CreateFile, которая используется и для открытия файлов. В данном случае вместо имени файла следует указать имя драйвера открываемого устройства. Для дисковых устройств можно вместо имени драйвера указать имя самого устройства. Например, имя «\\.\C:» означает логический диск C, а имя «\\.\PHYSICALDRIVE0» — первый физический диск компьютера.
Открыв устройство, программа может либо читать или записывать данные, используя функции файлового ввода/вывода, либо выдавать команды управления устройством с помощью функцииDeviceIoControl. С помощью этих команд можно, например, отформатировать диск и разбить его на разделы, загрузить или извлечь CD-ROM диск, изменить некоторые параметры работы модема и т.п..
