Скачиваний:
90
Добавлен:
12.05.2015
Размер:
913.92 Кб
Скачать

17.6. Программы ipcs и ipcrm

Поскольку объектам System V IPC не сопоставляются имена в файловой системе, мы не можем просмотреть их список или удалить их, используя стандартные программы lsиrm. Вместо них в системах, поддерживающих эти типы IPC, предоставляются две специальные программы:ipcs, выводящая различную информацию о свойствах System V IPC, иipcrm, удаляющая очередь сообщений System V, семафор или сегмент разделяемой памяти. Первая из этих функций поддерживает около десятка параметров командной строки, управляющих отображением информации о различных типах IPC. Второй (ipcrm) можно задать до шести параметров. Подробную информацию о них можно получить в справочной системе.

17.7. Ограничения ядра

Большинству реализаций System V IPC свойственно наличие внутренних ограничений, налагаемых ядром. Это, например, максимальное количество очередей сообщений или ограничение на максимальное количество семафоров в наборе. Значения по умолчанию для этих ограничений приведены в табл. 17.2, 18.1 и 20.1. В ОС Linux их можно получить с помощью командыipcs -l. Большая часть ограничений унаследована от исходной реализации System V.

К сожалению, некоторые из накладываемых ограничений достаточно жестки, поскольку они унаследованы от исходной реализации, базировавшейся на системе с небольшим адресным пространством. К счастью, большинство систем, и в их числе ОС Linux, позволяют администратору изменять некоторые из установленных по умолчанию ограничений. Для просмотра и/или изменения значений параметров ядра “на лету” в ОС Linux можно использовать утилиту sysctl. Например, чтобы узнать, какое максимальное количество байтов может содержаться в сообщении, следует вывести значение переменной ядраmsgmaxследующим образом:

$ sysctl kernel.msgmax

kernel.msgmax = 8192

17.8. Выводы по главе 17

Первым аргументом функций msgget,semgetиshmgetявляется ключ IPC System V. Эти ключи вычисляются по полному имени файла с помощью системной функцииftok. В качестве ключа можно также указать значениеIPC_PRIVATE. Эти три функции создают новый или открывают существующий объект IPC и возвращают идентификатор System V IPC – целое число, которое потом используется для ссылки на объект в прочих функциях, имеющих отношение к IPC. Эти идентификаторы имеют смысл не только в рамках одного процесса (как дескрипторы файлов), но и в рамках всей системы. Они могут повторно использоваться ядром, но лишь спустя некоторое время.

С каждым объектом System V IPC связана структура ipc_perm, содержащая информацию о нем, такую как идентификатор пользователя-владельца, идентификатор группы-владельца, разрешения чтения-записи и др. Доступ к этой информации можно получить с помощью одной из функцийXXXctlс аргументомIPC_STAT.

При создании нового или открытии существующего объекта System V IPC функции getXXXможно передать флаги (IPC_CREATиIPC_EXCL) и 6 бит разрешений.

Без сомнения, главнейшей проблемой в использовании System V IPC является наличие искусственных ограничений на размеры объектов IPC в большинстве реализаций. Это означает, что для интенсивного использования средств System V IPC приложениями требуется изменение ограничений ядра; внесение этих изменений в ОС Linux может быть произведено с помощью утилиты sysctl.

Соседние файлы в папке Chapter.4