- •Краткая история создания ms-dos
- •Архитектура операционной системы
- •1.7. Эффективность и требования, предъявляемые к ос
- •Операционная система qnx
- •10.1. Архитектура
- •10.2. Управление процессами
- •10.3. Средства взаимодействия
- •10.4. Файловая система
- •10.5. Управление устройствами
- •10.6. Сетевые взаимодействия
- •10.7. Графическая система Photon
- •Прогон программы создания процесса
- •Области виртуальной памяти
- •Структура vm_area_struct
- •Современные файловые системы: что выбрать для внешнего накопителя и почему
- •Fat32 — разумный компромисс между совместимостью и прочими характеристиками
- •Ntfs — быстрая, мощная, но избыточная
- •ExFat — будущее флэш-накопителей и не только
- •Прочая экзотика, иногда полезная
- •Faq вместо заключения
10.5. Управление устройствами
Интерфейс между процессами и устройствами обеспечивается менеджером устройств. Устройства включены в общее пространство имен файловой системы как специальные файлы, находящиеся в подкаталоге \.dev. Для процесса устройство представляется как двунаправленный поток байтов. Менеджер устройств управляет прохождением этого потока между процессом и устройством и отчасти осуществляет обработку данных в потоке. С каждым устройством связан блок управления termios, в котором задаются параметры обработки данных, такие как:
алгоритм передачи данных (скорость, контроль четности и т.д.);
отображение символов, вводимых с клавиатуры, на экране;
трансляция вводимых символов;
программное и аппаратное управление потоком данных;
и т.д., и т.п.
Данные, которыми обмениваются менеджер устройств и драйвер, проходят через набор очередей, с каждым устройством связаны по три очереди:
входная очередь;
выходная очередь;
так называемая, каноническая очередь - очередь ввода данных с редактированием.
Общий размер всех трех очередей не превышает 64 Кбайт. Очереди обслуживаются по дисциплине FIFO, независимо от приоритетов процессов, которым принадлежат данные в очередях. Для обеспечения высокой эффективности ввода-вывода сам менеджер устройств выполняется как процесс с высоким приоритетом. Это не сказывается на быстродействии других процессов, так как управление вводом-выводом никогда не занимает процессор надолго. Драйверы также выполняются как отдельные процессы, их приоритеты зависят от особенностей обслуживаемых ими устройств.
Вводимые данные помещаются драйвером во входную очередь. Менеджер устройств выбирает данные из этой очереди только тогда, когда процесс запрашивает данные. Выходные же данные менеджер устройств помещает в выходную очередь и немедленно же активизирует драйвер.
Запрос данных при пустой входной очереди приводит к блокировке процесса. Также блокируется процесс и тогда, когда пытается вывести данные при переполненной выходной очереди.
10.6. Сетевые взаимодействия
С самого начала QNX создавалась как сетевая ОС и это выражается прежде всего в том, что средства взаимодействия локальных и удаленных процессов в QNX одни и те же - сообщения. Процесс не видит разницы во взаимодействии с локальным или удаленным корреспондентом. Такое свойство обеспечивается при помощи "виртуальных каналов", показанных на рисунке 10.5.
|
Виртуальный канал создается процессом-отправителем сообщения При этом на узле отправителя и на узле получателя создаются виртуальные процессы, каждый из которых представляет на локальном узле идентификатор процесса - удаленного корреспондента. Реальный процесс имеет реальный идентификатор (PID), виртуальный процесс - виртуальный идентификатор (VID). VID обеспечивает соединение, которое содержит следующую информацию:
локальный PID;
удаленный PID;
удаленный NID (идентификатор узла сети);
удаленный VID.
Процессы QNX имеют символьные имена, причем эти имена могут быть глобальными, доступными во всей сети. Приложение может по имени получить PID процесса - удаленного корреспондента. При этом система автоматически создает виртуальный канал и для приложения этот канал отождествляется с PID корреспондента.
Администратор сети обеспечивает создание виртуальных каналов, буферизацию данных в канале и контроль целостности виртуальных каналов.

Рисунок
10.5 Посылка сообщения через виртуальный
канал