Программирование для Linux. Профессиональный подход
Шрифт:
Описание других операций, выполняемых над совместно используемыми сегментами памяти, можно найти на
5.1.6. Пример программы
Программа, приведенная в листинге 5.1, иллюстрирует методику совместного использования памяти.
5.1.7. Отладка
Команда
Если этот сегмент был по ошибке "забыт" какой-то программой, его можно удалить с помощью команды
5.1.8.
Благодаря совместному использованию памяти можно организовать быстрое двустороннее взаимодействие произвольного числа процессов. Любой пользователь сможет получать доступ к сегментам памяти для чтения/записи, но для этого программа должна следовать определенным правилам, позволяющим избегать конкуренции (чтобы, например, информация не оказалась перезаписанной до того, как будет прочитана). К сожалению, Linux не гарантирует монопольный доступ к сегменту, даже если он был создан с указанием флага
Кроме того, чтобы несколько процессов могли совместно работать с общим сегментом, они должны "договориться" о выборе одинакового ключа.
5.2. Семафоры для процессов
Как говорилось в предыдущем разделе, процессы должны координировать свои усилия при совместном доступе к памяти. Вспомните: в разделе 4.4.5, "Обычные потоковые семафоры", рассказывалось о семафорах, которые являются счетчиками, позволяющими синхронизировать работу потоков. В Linux имеется альтернативная реализация семафоров (иногда называемых семафорами System V), предназначенных для синхронизации процессов. Такие семафоры выделяются, используются и освобождаются подобно совместно используемым сегментам памяти. Для большинства случаев достаточно одного семафора, тем не менее они работают группами. В этом разделе мы опишем системные вызовы, позволяющие реализовать двоичный семафор.
5.2.1. Выделение и освобождение семафоров
Функции
Семафоры продолжают существовать даже после того, как все работавшие с ними процессы завершились. Чтобы система не исчерпала лимит семафоров, последний процесс должен явно удалить группу семафоров. Для этого нужно вызвать функцию
В листинге 5.2 представлены функции, выделяющие и освобождающие двоичный семафор.
Чай и водка в истории России
Дом и Семья:
кулинария
рейтинг книги
Старый тракт (сборник)
Сибириада
Проза:
современная проза
рейтинг книги
Александр Агренев. Трилогия
Александр Агренев
Фантастика:
альтернативная история
рейтинг книги
Тринадцатый II
2. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Газлайтер. Том 6
6. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
рейтинг книги
После Кастанеды: дальнейшее исследование
Религия и эзотерика:
эзотерика
рейтинг книги