
- •Введение
- •1 Тема 7. Подсистема управления вводом-выводом
- •1.1 Язык С как стандарт взаимодействия с ОС
- •1.2 Системные операции для работы с файловой системой
- •1.2.1 Системные вызовы open() и close()
- •1.2.2 Системные вызовы read() и write()
- •1.2.3 Системный вызов lseek()
- •1.3 Создание специальных файлов
- •1.4 Запрос информации о статусе файлов
- •1.5 Каналы
- •1.5.1 Полудуплексные каналы UNIX
- •1.5.2 Именованные каналы FIFO
- •1.6 Дублирование дескрипторов файлов
- •1.7 Монтирование и демонтирование ФС
- •1.8 Ссылки на имена файлов
- •1.9 Лабораторная работа по теме №7
- •1.9.1 Интегрированная среда разработки Eclipse
- •1.9.2 Список заданий выполняемых работ
- •1.9.3 Проблема типов в языке С
- •1.9.4 Анализ структуры MBR блочных устройств
- •1.9.5 Запрос информации о статусе файлов
- •1.9.6 Неименованные каналы ядра ОС
- •1.9.7 Именованные каналы FIFO
- •1.9.8 Монтирование flashUSB
- •1.9.9 Работа с именами файлов
- •2 Тема 8. Подсистема управления памятью
- •2.1 Классификация способов управления ОЗУ
- •2.2 Программный и аппаратный способы адресации памяти
- •2.3 Страничная и сегментная адресации памяти
- •2.4 Комбинированный способ адресации памяти
- •2.5 Лабораторная работа по теме №8
- •2.5.1 Структура поцесса
- •2.5.2 Определяемые сегменты процесса
- •2.5.3 Создание и удаление процессов из памяти
- •2.5.4 Динамическое выделение и освобождение памяти процесса
- •3 Тема 9. Базовое взаимодействие процессов
- •3.1 Подсистема управления процессами
- •3.2 Синхронизация процессов
- •3.3 Стандарты POSIX
- •3.4 Системные вызовы ОС по управлению процессами
- •3.5 Системный вызов fork() и каналы процесса
- •1.5.1 Пример использования каналов процессов
- •1.5.2 Имитация конвейеров языка shell
- •3.6 Нити (Threads)
- •3.7 Сигналы POSIX
- •3.8 Лабораторная работа по теме №9
- •3.8.1 Системные вызовы общей группы
- •3.8.2 Управление потоками процессов
- •3.8.3 Обработка сигналов ОС
- •4 Тема 10. Асинхронное взаиодействие процессов
- •4.1 Проблемы распределения ресурсов ОС
- •4.2 Системный пакет IPC
- •4.3 Утилиты управления средствами пакета IPC
- •Утилита ipcmk
- •Утилита ipcs
- •Утлита ipcrm
- •4.4 Семафоры
- •4.5 Задача об обедающих философах
- •4.5.1 Описание задачи
- •4.5.2 Выбор стратегии решения
- •4.5.3 Модель философа
- •4.5.4 Программа-монитор
- •4.6 Лабораторная работа по теме №10
- •4.6.1 Синхронизация двух процессов
- •4.6.2 Задача «Обедающие философы»
- •5 Тема 11. Эффективное взаиодействие процессов
- •5.1 Прикладные средства пакета IPC
- •5.2 Разделяемые сегменты памяти
- •5.3 Задача о читателях и писателях
- •5.4 Передача сообщений
- •5.5 Лабораторная работа по теме №11
- •5.5.1 Задачи с разделяемыми сегментами памяти
- •5.5.2 Программы передачи сообщений
- •6 Тема 12. Системная шина D-Bus
- •6.1 Графические среды ОС
- •6.2 Рабочий стол пользователя
- •6.3 Различия графических сред ОС
- •6.4 X-сервер UNIX
- •6.5 Архитектура шины D-Bus
- •6.5.2 Бибиотека libdbus
- •6.5.3 Проекции ПО D-Bus на языки программирования
- •6.6 Лабораторная работа по теме №12
- •6.6.1 Утилита qdbus
- •6.6.2 Взаимодействие через шину с приложением evince
- •Заключение
- •Список использованных источников

150
4.3Утилиты управления средствами пакета IPC
Упользователя ОС, для работы со средствами межпроцессного взаимодействия System V IPC, имеются три основные утилиты, которыми следует пользо-ваться по мере необходимости:
•ipcmk — создание различных ресурсов средств IPC;
•ipcs - вывод отчёта о состоянии средств межпроцессного взаимодействия;
•ipcrm - удаление очередей сообщений, наборов семафоров и разделяемых сегментов памяти.
Утилита ipcmk
ipcmk [options]
ipcmk позволяет открывать разделяемые сегменты памяти, очереди сообщений и массивы семафоров.
Имеются следующие опции:
-M, --shmem size
Открытие разделяемого сегмента памяти размером size байт;
-Q, --queue
Открытие очереди сообщений;
-S, --semaphore number
Открытие массива семафоров с number элементами;
-p, --mode mode
Установка доступа к ресурсу; по-умолчанию = 0644;
-V, --version
Отображение версии пакета; -h, --help
Утилита ipcs
ipcs [-abcmopqstMQSTy] [-C дамп] [-N система] [-u пользователь]
ipcs выводит информацию о системных средствам межпроцессного взаимодействия System V (IPC).
Имеются следующие опции (используйте ipcs -h, для конкретной системы):
-a Показать максимально возможное количество информации во время вывода данных об активных семафорах, очередях сообщений и разделяемых сегментах памяти. Это эквивалентно указанию опций -b, -c, -o, -p и -t.
-b Показать максимально допустимые размеры активных семафоров, очередей сообщений и разделяемых сегментов памяти. ``Максимальный допустимый размер'' -- это максимальное количество байт в сообщении в очереди сообщений, размер разделяемого сегмента памяти или количество семафо-

151
ров в наборе семафоров.
-c Показать имя и группу создателя активных семафоров, очередей сообщений и разделяемых сегментов памяти.
-m Вывести информацию об активных сегментах разделяемой памяти.
-o Показать пиковое использование активных очередей сообщений и разделяемых сегментов памяти. ``Пиковое использование'' -- это количество сообщений в очереди сообщений, или количество процессов, подключенных к разделяемому сегменту памяти.
-p Показать информацию об идентификаторе процесса для активных семафоров, очередей сообщений и разделяемых сегментов памяти. ``Идентификатором процесса'' является последний процесс, отправивший или получивший сообщение из очереди сообщений, процесс, создавший семафор, или последний процесс, подключившийся или отключившийся от разделяемого сегмента памяти.
-q Вывести информацию об активных очередях сообщений. -s Вывести информацию об активных семафорах.
-t Показать время доступа к активным семафорам, очередям сообщений и
разделяемым сегментам памяти. Время доступа -- это время последней операции управления IPC объектом, последняя отправка или приём сообщения, последнее подключение или отключение от разделяемого сегмента памяти, или последняя операция с семафором.
-C дамп
Извлечь значения из списка имён (namelist) указанного дампа памяти ядра, вместо определённого по умолчанию /dev/kmem. Подразумевает -y.
-M Вывести системную информацию о разделяемой памяти.
-N система
Извлечь список имён из указанной системы, вместо определённой по умолчанию /boot/kernel/kernel. Подразумевает -y.
-Q Вывести системную информацию об очередях сообщений. -S Вывести системную информацию о семафорах.
-T Вывести системную информацию о разделяемой памяти, очередях сообщений и семафорах.
-y Использовать интерфейс kvm вместо интерфейса sysctl для извлечения необходимой информации. Если ipcs запущена на работающей системе, использование kvm(3) потребует привилегии чтения из /dev/kmem.
-u пользователь
Вывести информацию о механизмах IPC для указанного пользователя. Пользователь может быть задан либо числовым идентификатором UID, либо регистрационным именем.
Замечание
Если не указана ни одна из опция -M, -m, -Q, -q, -S, или -s, то выводится информация обо всех активных средствах IPC.