Главная страница Взаимодействие нетривиальных процессов
Для этих параметров можно указать другие значения по умолчанию, изменив файл /etc/sysconfigtab. Делать это следует с помощью программы sysconfigdb. Этот файл также считывается в процессе начальной загрузки системы. 3.9. Резюме Первым аргументом функций msgget, semget и shmget является ключ IPC System V. Эти ключи вычисляются по полному имени файла с помощью системной функции ftok. В качестве ключа можно также указать значение IPCPRIVATE. Эти три функции создают новый объект IPC или открывают существующий и возвращают идентификатор System V IPC - целое число, которое потом используется для распознавания объекта в прочих функциях, имеющих отнощение к IPC. Эти идентификаторы имеют смысл не только в рамках одного процесса (как дескрипторы файлов), но и в рамках всей системы. Они могут повторно использоваться ядром, но лищь спустя некоторое время. С каждым объектом System V IPC связана структура ipcperm, содержащая информацию о нем, такую как идентификатор пользователя владельца, идентификатор группы, разрещения чтения и записи и др. Одним из Отличий между System V и Posix IPC является то, что для объекта IPC System V эта информация доступна всегда (доступ к ней можно получить с помощью одной из функций XXXctl с аргументом IPC STAT), а в Posix IPC доступ к ней зависит от реализации. Если объект Posix IPC хранится в файловой системе и мы знаем его имя в ней, мы можем получить доступ к этой информации, используя стандартные средства файловой системы. При создании нового или открытии су1Цествующего объекта System V IPC функции getXXX передаются два флага (IPC CREAT и IPC EXCL) и 9 бит разрещений. Без сомнения, главнейщей проблемой в использовании System V IPC является наличие искусственных ограничений в больщинстве реализаций. Ограничения накладываются на размер объектов, причем они берут свое начало от самых первых реализаций. Это означает, что для интенсивного использования средств System V IPC приложениями требуется изменение ограничений ядра, а внесение этих изменений в каждой системе осуществляется по-разному. Упражнения 1. Прочитайте о функции msgctl в разделе 6.5 и измените программу в листинге 3.2 так, чтобы выводился не только идентификатор, но и поле seq структуры ipc perm. 2. Непосредственно после выполнения программы листинга 3.2 мы запускаем программу, создающую две очереди сообщений. Предполагая, что никакие другие приложения не использовали очереди сообщений с момента загрузки системы, определите, какие значения будут возвращены функцией msgget в качестве идентификаторов очередей сообщений. 3. В разделе 3.5 было отмечено, что функции getXXX System V IPC не используют маску создания файла. Напищите тестовую программу, создающую канал FIFO (с помощью функции mkfifo, описанной в разделе 4.6) и очередь сообщений System V, указав для обоих разрещение 666 (в восьмеричном формате). Сравните разрещения для созданных объектов (FIFO и очереди сообщений). Перед запуском программы удостоверьтесь, что значение umask отлично от нуля. 4. Серверу нзно создать уникальную очередь сообщений для своих клиентов. Что предпочтительнее: использовать какое-либо постоянное имя файла (например, имя сервера) в качестве аргумента функции ftok или использовать ключ IPC PRIVATE? 5. Измените листинг 3.1 так, чтобы выводился только ключ IPC и путь к файлу. Запустите программу fi nd, чтобы вывести список всех файлов ващей файловой системы, и передайте вывод ващей только что созданной программе. Скольким именам файлов будет соответствовать один и тот же ключ? 6. Если в ващей системе есть программа sa г (system activity reporter - информация об активности системы), запустите команду sar -m 5 б На экран будет выведено количество операций в секунду с очередями сообщений и семафорами, замеряемыми каждые 5 секунд 6 раз. ЧАСТЬ 2 ОБМЕН СООБЩЕНИЯМИ
|
© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования. |