Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ядро ОС.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
874 Кб
Скачать
☆

Идеология построения драйверов

Операционная система управляет некоторым «виртуальным устройством», которое понимает стандартный набор команд. Драйвер переводит эти команды в команды, которые понимает непосредственно устройство. Эта идеология называется «абстрагирование от аппаратного обеспечения». Впервые в отечественной вычислительной технике подобный подход появился в серии ЕС ЭВМ, а такого рода управляющее программное обеспечение назывались канальным программным обеспечением.

Драйвер состоит из нескольких функций, которые обрабатывают определенные события операционной системы. Обычно это 7 основных событий:

  • Загрузка драйвера. Тут драйвер регистрируется в системе, производит первичную инициализацию и т. п.

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

  • Открытие драйвера. Начало основной работы. Обычно драйвер открывается программой как файл, функциями CreateFile() в Win32 или fopen() в UNIX-подобных системах.

  • Чтение.

  • Запись: программа читает или записывает данные из/в устройство, обслуживаемое драйвером.

  • Закрытие: операция, обратная открытию, освобождает занятые при открытии ресурсы и уничтожает дескриптор файла.

  • Управление вводом-выводом (IO Control, IOCTL). Зачастую драйвер поддерживает интерфейс ввода-вывода, специфичный для данного устройства. С помощью этого интерфейса программа может послать специальную команду, которую поддерживает данное устройство. Например, для SCSI-устройств можно послать команду GET_INQUIRY, чтобы получить описание устройства. В Win32-системах управление осуществляется через API-функцию DeviceIoControl(). В UNIX-подобных — ioctl().

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

Сначала производители платформ поставляли набор отдельных драйверов для операционных систем, собранный на один носитель (обычно компакт-диск), затем появились установочные пакеты, называвшиеся 4-in-1 и One touch, и позволявшие упростить установку драйверов в систему. При этом, как правило, можно выбрать либо полностью автоматическую установку всех драйверов, либо выбрать вручную нужные. Однако единого, устоявшегося термина долго не было.

Современный термин — Board Support Package ( или «пакет поддержки платформы»), описывающий такие наборы драйверов устройств. Помимо собственно драйверов, он может, как и прочие установочные пакеты, содержать модули операционной системы и программы.

Виртуальные драйверы устройств представляют собой особый вариант драйверов. Они используются для эмуляции аппаратного устройства, особенно в средах виртуализации, например, когда программа DOS запускается на компьютере с Microsoft Windows или когда гостевая операционная система работает на хостинге Xen.

Пространство пользователя

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

Каждый процесс в пространстве пользователя обычно выполняется в собственной области виртуальной памяти, и при отсутствии явной необходимости, не может получить доступа к памяти, используемой другими процессами. Такой подход является базисным для обеспечения защиты памяти большинства современных операционных систем, и своего рода «фундаментом» для обеспечения права доступа. В зависимости от привилегий процесс может запросить ядро отобразить часть адресного пространства другого процесса на свое, как, например, это делают отладчики. Программы также могут запрашивать для себя область разделяемой памяти (shared memory) совместно с другими процессами.

В некоторых экспериментальных операционных системах используется другой подход — для всех программных продуктов используется единое адресное пространство, с учетом того, что реализация виртуальной машины обеспечивает невозможность произвольного доступа — приложения попросту не могут получить ссылки на объекты, к которым они не имеют доступа. Этот подход был использован в таких операционных системах, как JXOS, Unununium, Phantom OS, а также в Singularity — проекте Microsoft Research по созданию высоконадёжной операционной системы.

В UNIX-системах раньше при монтировании файловой системы она обязательно должна была находиться в системном пространстве, из-за чего только суперпользователь мог монтировать даже CD-диск. С появлением технологии Fuse любой непривилегированный пользователь может смонтировать все, что разрешит администратор, в т.ч. CD/DVD-накопители и флеш-диски.

Защита памяти (Memory protection) — это способ управления правами доступа к отдельным регионам памяти. Используется большинством многозадачных операционных систем. Основной целью защиты памяти является запрет доступа процессу к той памяти, которая не выделена для этого процесса. Такие запреты повышают надежность работы как программ так и операционных систем, так как ошибка в одной программе не может повлиять непосредственно на память других приложений. Следует различать общий принцип защиты памяти и технологии ASLR или NX-бит.

Альтернативное определение Защита памяти - избирательная способность предохранять выполняемую задачу от записи или чтения памяти предназначенной другой программе.

Чаще всего реализуется в рамках виртуальной адресации памяти.