Структура драйверу символьного пристрою в ОС Linux

Символьные драйверы являются простейшими в ОС UNIX и предназначаются для обслуживания устройств, которые реально ориентированы на прием или выдачу произвольных последовательностей байтов (например, простой принтер или устройство ввода с перфоленты). Такие драйверы используют минимальный набор стандартных функций ядра UNIX, которые главным образом заключаются в возможности взять данные из виртуального пространства пользовательского процесса и/или поместить данные в такое виртуальное пространство. Независимо от типа файла (обычный файл, каталог, связь или специальный файл) пользовательский процесс может работать с файлом через стандартный интерфейс, включающий системные вызовы open, close, read и write. Ядро само распознает, нужно ли обратиться к его стандартным функциям или вызвать подпрограмму драйвера устройства. Другими словами, если процесс пользователя открывает для чтения обычный файл, то системные вызовы open и read обрабатываются встроенными в ядро подпрограммами open и read соответственно. Однако, если файл является специальным, то будут вызваны подпрограммы open и read, определенные в соответствующем драйвере устройства

Обычно драйвер состоит из двух частей - основной, реализующей функции open(), close(), read(), write(), ioctl() и обработчика аппаратного прерывания; драйвер передает данные через символьную очередь (clist) и доступен в ядре через таблицу 'cdevsw'. Предполагается рисунок.


23) Архітектура OS Windows Server 2003

Windows Server 2003 - операционная система семейства Windows NT, предназначенная для работы на серверах. WS 2003 построена на базе Windows 2000 Server, является модульной ОС и включает различные компоненты. Каждый объект ОС предоставляет интерфейс, скоторым воздействуют другие объекты и процессы для получения доступа к средствам и функциональным возможностям этого объекта.

Архитектура WS 2003 включает в себя два уровня - пользовательский режим (user mode) и режим ядра (kernel mode). Эти режимы и различные подсистемы WS 2003 изображены на рисунке 1.

Рисунок 1 - Архитектура WS 2003

1. Режим пользователя - уровень поддержки приложений, который состоит из подсистемы среды и интегральных подсистем. В этом режиме сторонние производители ПО могут выполнять системные вызовы готовых интерфейсов API. Все приложения и службы устанавливаются на уровне пользовательского режима.

1.1 Подсистемы среды

П-ма WIN32 поддерживает приложения Win32, а также 16 разрядные приложения Windows и DOS. Обеспечивает операции ввода/вывода в приложениях и ф-ции графического интерфейса пользователя. П-ма WIN32 улучшена для поддержки служб терминалов.

П-ма OS/2 -поддерживает 16-разрядные приложения OS/2 (OS/2 — операционная система фирмы IBM.

POSIX -поддержка POSIX-совместимы приложений (обычно приложения UNIX)

Ограничения, накладываемые WS 2003 для запуска приложений написанных для других ОС:

- программы не имеют прямого доступа к оборудованию (работа с объектами пользовательского режима, которые взаимодействуют с объектами режима ядра)

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

− программам выделяется только ограниченное адресное пространство в оперативной памяти.

− Windows Server 2003, также как Windows 2000 использует пространство жесткого диска в качестве квазиоперативной памяти(оперативная память + файл подкачки или совокупность всех видов памяти в система).

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

1.2 Интегральные подсистемы

Применяются для выполнения таких служб, как подсистема безопасности(права пользователя, доступ к сетевым объектам), служба Server – с данной службой связаны все сетевые службы(потому и Windows Server 2003), служба Workstation – как и предыдущая, однако больше ориентирована на доступ пользователя к сети.

2. Режим ядра - уровень на котором осуществляется доступ к системным данным и аппаратному обеспечению. Он состоит из таких компонентов:

1 Диспетчер ввода/вывода

1.1 Файловая система (преобразует запросы к ФС в вызовы, понятные конкретному устройству)

1.2 Драйверы устройства (управляет драйверами устройств)

1.3 Диспетчер кэша (кеширует запросы на запись/чтение и обрабатывает операции записи на аппаратное обеспечение, происходящие в автономном/фоновом режимах)

2 Диспетчер ссылок дескрипторов безопасности – отвечает за активацию политики безопасности.

3 Диспетчер связей между процессами - отвечает за взаимодействие между клиентскими и серверными процессами. Локальный и удаленный вызов процедур.

4 Диспетчер памяти или диспетчер виртуальной памяти. Управляет виртуальной памятью, предоставляет виртуальное адресное пространство. Также контролирует обращение к жесткому диску на предмет получения файла подкачки.

5 Диспетчер процессов. Отвечает за создание и прерывание процессов и потоков, которые порождаются системными службами.

6 Диспетчер устройств Plug&Play. Взаимодействует с драйверами устройств а также сопутствующими службами для настройки последних.

7 Диспетчер электропитания (контролирует управление электропитанием на уровне ОС)

8 Диспетчер окон и графического устройства (вывод инфы на экран)

9 Диспетчер объектов. Контролирует существование системных объектов. Создает объекты, управляет ими, удаляет их (управляет ресурсами памяти).

Микроядро

Микроядро –сердце ОС. Иногда считается, что это и есть сама ОС, а остальное – только ее службы. Управляет потоками, многозадачностью, функционирует в режиме приоритетного прерывания.

1. Аппаратно-зависимый уровень– скрывает детали аппаратного обеспечения от служб и компонентов. Обработка специфических интерфейсов ввода/вывода, прерываний оборудования. Уровень расположен над реальным физическим оборудованием.