- •Практичне заняття 4 Засоби System V ipc. Організація роботи з пам'яттю, що розділяється, в unix. Поняття ниток виконання (thread):
- •Переваги і недоліки потокового обміну даними.
- •Поняття про System V ipc
- •Простір імен. Адресація в System V ipc. Функція ftok()
- •Дескриптори System V ipc
- •Пам'ять, що розділяється, в unix. Системні виклики shmget(), shmat(), shmdt()
- •Прогін програм з використанням пам'яті, що розділяється
- •Команди ipcs і ipcrm
- •Використовування системного виклику shmctl() для звільнення ресурсу
- •Пам'ять, що розділяється і системні виклики fork(), exec() і функція exit()
- •Поняття про нитку виконання (thread) в unix. Ідентифікатор нитки виконання. Функція pthread_self()
- •Створення і завершення thread'а. Функції pthread_create(), pthread_exit(), pthread_join()
- •Прогін програми з використанням двох ниток виконання
- •Необхідність синхронізації процесів і ниток виконання, що використовують загальну пам'ять
Команди ipcs і ipcrm
Як ми бачили з попереднього прикладу, створена область пам'яті, що розділяється, зберігається в операційній системі навіть тоді, коли немає жодного процесу, що включає її в свій адресний простір. З одного боку, це має певні переваги, оскільки не вимагає одночасного існування взаємодіючих процесів, з другого боку, може заподіювати істотні незручності. Припустимо, що попередні програми ми хочемо використовувати так, щоб підраховувати кількість запусків протягом однієї, поточної, сеансу роботи в системі. Проте в створеному сегменті пам'яті, що розділяється, залишається інформація від попереднього сеансу, і програми видаватимуть загальну кількість запусків за весь час роботи з моменту завантаження операційної системи. Можна б було створювати для нового сеансу новий сегмент пам'яті, що розділяється, але кількість ресурсів в системі не безмежна. Нас рятує те, що існують способи видаляти невживані ресурси System V IPC як за допомогою команд операційної системи, так і за допомогою системних викликів. Всі засоби System V IPC вимагають певних дій для звільнення займаних ресурсів після закінчення взаємодії процесів. Для того, щоб видаляти ресурси System V IPC з командного рядка, нам знадобляться дві команди, ipcs і ipcrm.
Команда ipcs видає інформацію про всі засоби System V IPC, існуючі в системі, для яких користувач володіє правами на читання: областях пам'яті, що розділяється, семафорах і чергах повідомлень.
Команда ipcs
ipcs [-asmq] [-tclup]
ipcs [-smq] -i id
ipcs -h
Опис команди
Команда ipcs призначена для отримання інформації про засоби System V IPC, до яких користувач має право доступу на читання.
Опція -i дозволяє вказати ідентифікатор ресурсів. Видаватиметься тільки інформація для ресурсів, що мають цей ідентифікатор.
Види IPC ресурсів можуть бути задані за допомогою наступних опцій:
–s для семафорів;
-m для сегментів пам'яті, що розділяється;
-q для черг повідомлень;
-a для всіх ресурсів (за умовчанням).
Опції [-tclup] використовуються для зміни складу вихідної інформації. За умовчанням для кожного засобу виводяться його ключ, ідентифікатор IPC, ідентифікатор власника, права доступу і ряд інших характеристик. Вживання опцій дозволяє вивести:
-t часи здійснення останніх операцій над засобами IPC;
-p ідентифікатори процесу, що створив ресурс, і процесу, що вчинив над ним останню операцію;
-c ідентифікатори користувача і групи для творця ресурсу і його власника;
-l системні обмеження для засобів System V IPC;
-u загальний стан IPC ресурсів в системі.
Опція -h використовується для отримання короткої довідкової інформації.
Зі всього різноманіття інформації, що виводиться, нас цікавитимуть тільки IPC ідентифікатори для засобів, створених вами. Ці ідентифікатори використовуватимуться в команді ipcrm, що дозволяє видалити необхідний ресурс з системи. Для видалення сегменту пам'яті, що розділяється, ця команда має вигляд:
ipcrm shm <IPC ідентифікатор>
Команда ipcrm
ipcrm [shm | msg | sem] id
Опис команди
Команда ipcrm призначена для видалення ресурсу System V IPC з операційної системи. Параметр id задає IPC ідентифікатор для ресурсу, що видаляється, параметр shm використовується для сегментів пам'яті, що розділяється, параметр msg – для черг повідомлень, параметр sem – для семафорів.
Якщо поведінка програм, що використовують засоби System V IPC, базується на припущенні, що ці засоби були створені при їх роботі, не забувайте перед їх запуском видаляти вже існуючі ресурси.