Структура драйверу символьного пристрою в ОС 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. Аппаратно-зависимый уровень– скрывает детали аппаратного обеспечения от служб и компонентов. Обработка специфических интерфейсов ввода/вывода, прерываний оборудования. Уровень расположен над реальным физическим оборудованием.