Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » sem14 - Средства System V IPC. Семафоры. Разделяемая память. Очереди сообщений.

sem14 - Средства System V IPC. Семафоры. Разделяемая память. Очереди сообщений. (Мини-учебник с ejudge = Чернокнижка)

PDF-файл sem14 - Средства System V IPC. Семафоры. Разделяемая память. Очереди сообщений. (Мини-учебник с ejudge = Чернокнижка) Практика расчётов на ПЭВМ (37200): Книга - 3 семестрsem14 - Средства System V IPC. Семафоры. Разделяемая память. Очереди сообщений. (Мини-учебник с ejudge = Чернокнижка) - PDF (37200) - СтудИзба2019-05-08СтудИзба

Описание файла

Файл "sem14 - Средства System V IPC. Семафоры. Разделяемая память. Очереди сообщений." внутри архива находится в папке "Мини-учебник с ejudge = Чернокнижка". PDF-файл из архива "Мини-учебник с ejudge = Чернокнижка", который расположен в категории "". Всё это находится в предмете "практика расчётов на пэвм" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст из PDF

1СемафорыСемафоры — одно из старейших средств разделения доступа к критическим ресурсампараллельно работающих процессов. Дейкстра определил две операции над семафорами:P(s) и V (s). Операция P блокирует семафор, операция V — деблокирует семафор. Болееточно, операции P и V определены следующим образом:Операция P(s) проверяет, что семафор s открыт. Если семафор открыт, операция закрывает семафор и завершается. Операция проверки и открытия является атомарной, то естьни один другой процесс не может наблюдать ситуации, когда семафор проверен, но ещё незакрыт.

Если на момент проверки семафор уже закрыт, операция P приостановит процессдо тех пор, пока некоторый другой процесс не откроет семафор. После того, как некоторыйпроцесс открыл семафор, система выбирает из множества процессов, ожидающих открытиясемафора, какой-то один и разблокирует его.Операция V (s) разблокирует семафор. Эта операция никогда не приостанавливает выполнение процесса.Обычно сам по себе семафор s — это переменная некоторого целого типа. Значению 0может соответствовать открытый семафор, а значению 1 — закрытый семафор.

Если семафор может принимать только два значения, такой семафор называется бинарным.Фрагмент программы, использующей бинарный семафор, может выглядеть следующимобразом:semaphore s;/* программа */P(s);/* критическая секция */V(s);Расширением бинарного семафора является считающий семафор. У считающего семафора значение 0 соответствует закрытому семафору, а значения, большие 0, открытомусемафору. Операции P и V тогда принимают не один, а два параметра.Операция P(s, i) атомарно уменьшает значение семафора s на i. Если на момент проверкизначение семафора уже было меньше i, процесс приостанавливается до тех пор, пока значение семафора не станет больше или равно i.Операция V (s, i) увеличивает значение семафора s на i.

Операция всегда выполняется безблокировки процесса. У семафора может быть некоторое максимальное значение, котороеопределяется типом данных, отведённым для хранения значения семафора.В случае считающих семафоров может потребоваться начальная инициализация семафора значением, отличным от нуля, так как в случае считающих семафоров 0 означает закрытый ресурс, а в начале программы ресурс, скорее всего, должен быть открыт. Считающийсемафор можно использовать тогда, когда разделяемый ресурс имеет ограниченную ёмкость,и мы хотим блокировать процесс, когда ёмкость ресурса временно исчерпана.Поскольку операция P должна быть атомарна, кроме того, эта операция включает приостановку работы процесса и пробуждение процесса, эта операция может быть корректно реализована только в ядре операционной системы.

Поэтому ядро должно предоставлятьнекоторые системные вызовы для работы с семафорами.11.1 Семафоры в System VРазвитые средства межпроцессной коммуникации, включающие именованные каналы,очереди сообщений, семафоры и разделяемую память появились в Unix System V. Примерно в то же время в Unix BSD появились сокеты и файлы, отображаемые в память. До этогоединственными средствами межпроцессного взаимодействия были файлы, анонимные каналы и сигналы. Позднее все эти средства межпроцессного взаимодействия были реализованыв обеих разновидностях UNIX. Семафоры, разделяемая память и очереди сообщений частообъединяются в понятие «средства межпроцессного взаимодействия UNIX System V».

Далее в этом документе мы будем иногда на них ссылаться как на SysV IPC.Понимание семафоров в System V ещё более расширено по сравнению с оригинальнымопределением. Позволяется задавать массивы семафоров, в котором каждый отдельный семафор может рассматриваться или как бинарный, или как считающий. Более того, позволяется задавать несколько операций с семафорами одного массива семафоров за один вызов.В этом случае система гарантирует атомарность выполнения всех операций, то есть либовсе операции выполнились, либо ни одна из указанных операций не выполнилась, а процесспереведён в состояние ожидания.

Никакой другой процесс не может наблюдать ситуацию,когда часть операций выполнилась, а часть ожидает своего выполнения.Семафоры хранятся в адресном пространстве ядра. Но, в отличие, например, от файловых дескрипторов, время жизни массивов семафоров не ограничено временем работы создавшего его процесса.

То есть, массив семафоров не уничтожается, когда завершает работу последний процесс, использующий данный массив семафоров. Для уничтожения массива необходимо использовать явную команду уничтожения. Поэтому процесс, работающий смассивом семафоров, должен аккуратно обрабатывать завершение работы процесса. Впрочем, эта проблема не свойственна только средствам межпроцессного взаимодействия SystemV, но и временным файлам, файлам замков и именованным каналам.Каждый массив семафоров должен иметь имя, уникальное в системе, чтобы разные никак не связанные друг с другом процессы могли использовать данный массив семафоров.Для объектов SysV IPC именем является некоторое целое положительное число, причём пространства имён для массивов семафоров, сегментов разделяемой памяти и очередей сообщений различны, то есть одно и то же число может обозначать и массив семафоров, и очередьсообщений, и сегмент разделяемой памяти. Это число имеет тип key_t, и мы будем ссылаться на него как на ключ массива семафоров.Чтобы процесс мог работать с массивом семафоров, он должен «получить» массив семафоров, то есть преобразовать ключ массива семафоров в идентификатор массива семафоров, действительный для данного процесса (аналог файлового дескриптора).

При этом могутуказываться дополнительные флаги, например, флаг создания массива семафоров и правадоступа к нему. Затем процесс может выполнять операции с массивом семафоров, используя идентификатор массива семафоров, полученный ранее.1.2 Функции работы с массивами семафоровКак было сказано ранее, ключ семафора — это некоторое положительное целое число.Чтобы «облегчить» программисту задачу выбора этого числа, предусмотрена специальнаяфункция ftok.#include <sys/types.h>#include <sys/ipc.h>key_t ftok(char *pathname, char proj);2Функция применима к любым средствам межпроцессного взаимодействия SysV IPC: массивам семафоров, очередям сообщений, сегментам разделяемой памяти. Эта функция генерирует ключ объекта SysV IPC по имени существующего файла pathname. Аргумент proj— это некоторый идентификатор проекта.

В описании функции не специфицируется, что этодолжно быть за число, соответственно, это значение может быть произвольным. При генерации ключа используется номер устройства и номер индексного дескриптора файла, поэтомуфайл не должен удаляться и создаваться заново в промежутке между обращениями к ftok,иначе будут получены разные ключи. Используется только часть бит номера индексного дескриптора и номера устройства, поэтому вполне возможна (хотя и маловероятна) коллизиягенерируемых ключей, когда двум разным файлам соответствует один и тот же ключ объекта.1.2.1 Получение массива семафоров#include <sys/types.h>#include <sys/ipc.h>#include <sys/sem.h>int semget(key_t key, int nsems, int semflg);Функция semget позволяет связать с массивом семафоров с ключом key идентификатор семафора.

Этот идентификатор должен использоваться при всех обращения к функциямработы с этим массивом семафоров. Параметр nsems задаёт количество семафоров в массиве семафоров. Он может быть равен 0, если процесс не пытается создать новый массивсемафоров. Параметр semflg определяет флаги создания массива семафоров и права доступа к создаваемому массиву семафоров.IPC_CREAT Если этот флаг установлен, массив семафоров будет создан.IPC_EXCLЕсли установлен этот флаг, и установлен флаг IPC_EXCL, выполнение завершится с ошибкой, если массив семафоров с таким ключом уже существует.9 младших бит параметра semflg определяют права доступа к создаваемому массивусемафоров. Назначение бит прав доступа точно такое же, как у бит прав доступа к файлу,но бит x, естественно, игнорируется.

Например, права 0600 обозначают доступ на чтение изапись только для создателя семафора.Функция инициализирует значение семафоров нулями. Если необходима инициализация массива семафоров какими-либо другими значениями, нужно использовать функциюsemctl. Чтобы избежать при этом race condition, необходимо в массиве семафоров завестиещё один семафор, который примет значение 1, когда все семафоры будут корректно проинициализированы. Один процесс создаёт и инициализирует семафоры, а другие процессыдолжны пытаться создавать массив с флагом IPC_EXCL, и если создание не удалось из-затого, что массив семафоров был уже создан, приостановить своё выполнение до тех пор, покаупомянутый выше семафор завершения инициализации не примет значение 1.Если функция завершилась успешно, возвращается идентификатор массива семафоров.При ошибке возвращается -1, а переменная errno устанавливается в код ошибки.

Возможные коды ошибок приведены ниже.3EACCES Для заданного ключа массив семафоров уже существует, но процесс не имеетправ доступа к нему.EEXIST Массив семафоров существует, а параметр semflg содержит флагиIPC_CREAT и IPC_EXCL.EIDRMЗаданный массив семафоров помечен на удаление.ENOENT Массив семафоров с заданным ключом не существует, а флаг IPC_CREAT небыл указан.ENOMEM Недостаточно памяти ядра для создания семафора.ENOSPC Превышено максимальное количество семафоров или массивов семафоров всистеме.1.2.2 Управление массивом семафоровПод управлением массивом семафоров понимается выполнение разных дополнительныхопераций, например, инициализация массива семафоров, или удаление массива семафоров.Все эти операции выполняются с помощью функции semctl.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
427
Средний доход
с одного платного файла
Обучение Подробнее