Лит
Лайф
Жанры
Авторы
Книги
Серии
Форум
Подборки
Цилюрик Олег Иванович
Книга "QNX/UNIX: Анатомия параллелизма"
Оглавление
Главы
154
Вложения
1
Ключевые слова
QNX/UNIX Анатомия параллелизма Олег Цилюрик, Егор Горошко
Предисловие
1. Введение
Параллелизм
Семейства API
Общее множество вызовов API (Application Program Interface — интегральное наименование вс...
Native QNX API
POSIX (BSD) API
System V API
2. Процессы и потоки
При внимательном чтении технической документации [8] и литературы по ОС QNX [1] отчетливо б...
Процессы
Создание параллельных процессов настолько полно описано в литературе по UNIX, что здесь м...
Создание нового процесса
Созданию процессов (имеется в виду создание процесса из программного кода) посвящено ст...
Использование командного интерпретатора
Клонирование процесса
Запуск нового программного кода
Завершение процесса
Соображения производительности
Потоки
Последующие расширения [14]POSIX специфицируют широкий спектр механизмов «легк...
Создание нового потока
Создание нового потока в программном коде осуществляет вызов: ...
Атрибуты потока
Присоединенность
Дисциплина диспетчеризации
Приоритет
Отличия от POSIX
Передача параметров потоку
Данные потока
В реальном коде часто возникает ситуация, когда одновременно исполняются несколько экзе...
Собственные данные потока
Безопасность вызовов в потоковой среде
Диспетчеризация потоков
Каждому потоку, участвующему в процессе диспетчеризации, соответствует экземпляр структ...
Спорадическая диспетчеризация
Соображения производительности
Завершение потока
Как и в случае обсуждавшегося ранее завершения процесса, для потоков мы будем отчетливо...
Возврат результата потока
Уничтожение (отмена) потока
Стек процедур завершения
«Легковесность» потока
Пример: синхронное выполнение кода
3. Сигналы
Сигналы инициируются некоторыми событиями в системе и посылаются процессу для его уведомлен...
Традиционная обработка сигнала
В этой части изложения мы рассмотрим традиционные модели перехвата сигналов и установки д...
«Старая» модель обработки сигнала
Модель надежных сигналов
Модель сигналов реального времени
Сигналы реального времени были добавлены в POSIX относительно недавно (1996 г.). Эта нова...
Соображения производительности
Сигналы в потоках
За пределы POSIX: сигналы в сети
4. Примитивы синхронизации
ОС QNX Neutrino предоставляет широкий набор элементов синхронизации выполнения потоков, как...
Семафор (счетный)
Семафор является весьма специфическим (в сравнении с прочими) для ОС QNX средством синхро...
Операции над семафорами
Создание семафора
Операции блокировки
Операции освобождения
Получение статуса семафора
Использование семафора
Мьютекс
Мьютекс (от mutual exclusion — взаимное исключение) — это один из базовых примитивов синх...
Параметры мьютекса
Параметры мьютекса хранятся в структуре pthread_mutexattr_t, которая опред...
Инициализация параметров
Установка граничного приоритета
Определение протокола защиты от инверсии приоритетов
Внешний доступ
Разрешение рекурсивного захвата
Определение типа мьютекса
Освобождение параметров
Операции над мьютексом
Инициализация мьютекса
Операции с граничным приоритетом
Захват мьютекса
Освобождение мьютекса
Разрушение объекта мьютекс
Операции, не поддерживаемые POSIX
Пример применения мьютекса
Сравнение и эффективность
Атомарные операции
Условная переменная
Одним из важнейших принципов использования мьютексов является максимальное сокращение раз...
Операции над условной переменной
Параметры условной переменной
Разрушение блока параметров
Инициализация условной переменной
Ожидание условия
Выполнение условия
Разрушение условной переменной
Ждущая блокировка
QNX предоставляет упрощенный вариант использования условной переменной для блокирования (...
Операции со ждущей блокировкой
Захват и освобождение ждущей блокировки
Функции ожидания
Ожидание завершения потока
Барьер
Барьер как раз и предназначен для разрешения выше обозначенной проблемы — ожидания услови...
Операции с барьерами
Параметры барьера
Инициализация и разрушение барьера
Ожидание на барьере
Блокировки чтения/записи
Блокировка чтения/записи является специфическим механизмом, отличающимся от рассмотренных...
Операции с блокировками чтения/записи
Инициализация объекта блокировки
Захват блокировки чтения/записи
Освобождение блокировки
Использование блокировок чтения/записи
Спинлок
Спинлок, или «крутящаяся» блокировка, предназначен исключительно для применения в система...
Операции со спинлоком
Инициализация и разрушение спинлока
Захват и освобождение спинлока
5. Специфические механизмы QNX
Операционная система QNX изнутри вся построена на клиент-серверных принципах, которые вытек...
Обмен сообщениями микроядра
Динамический пул потоков
Менеджеры ресурсов
QNX вводит технику программирования, которая единообразно проходит сквозь всю систему. ...
Многопоточный менеджер
Множественные каналы
Сообщения или менеджер?
Этот вопрос возникает (должен возникать!) у каждого, кто приступает к разработке реальног...
Две стороны единого механизма
При рассмотрении базовой для QNX (собственно, для всех микроядерных ОС) техники обмена ...
Простота и трудоемкость
Гибкость и мобильность
Эффективность реализации
Что же в итоге?
Приложение Организация обмена сообщениями (Владимир Зайцев)
Обмен сообщениями (message passing) является основой архитектуры ОС QNX, на которой строитс...
Организация обмена сообщениями на основе «семейных» процессов
Рассмотрим, как можно организовать обмен сообщениями между потоками, принадлежащими проце...
Пример кода родительского процесса
Пример кода порожденного процесса
Обмен сообщениями на основе менеджера ресурсов
Описанный выше способ построения функционирующей в сети системы процессов может быть реал...
Пример обмена сообщениями с помощью менеджера ресурсов
Код файла заголовков
Код процесса-клиента
Код процесса-сервера (менеджера ресурсов)
Использование менеджера службы глобальных имен
Начиная с QNX версии 6.3 сервис глобальных имен, обеспечиваемый GNS-менеджером службы (ут...
Код процесса-сервера, использующего службу глобальных имен
Код процесса-клиента, использующего службу глобальных имен
Заключение
Литература
Результаты поиска:
×
QR код текущей страницы
×