Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лістинг 6.1b. Програма 2 (06-1b.с) для ілюстрації роботи з пам'яттю, що розділяєтьсяСодержание книги
Поиск на нашем сайте
Ці програми дуже схожі одна на одну і використовують пам'ять, що розділяється, для зберігання числа запусків кожної з програм і їх суми. В пам'яті, що розділяється, розміщується масив з трьох цілих чисел. Перший елемент масиву використовується як лічильник для програми 1, другий елемент – для програми 2, третій елемент – для обох програм сумарно. Додатковий нюанс в програмах виникає через необхідність ініціалізації елементів масиву при створенні пам'яті, що розділяється. Для цього нам потрібно, щоб програми могли розрізняти випадок, коли вони створили її, і випадок, коли вона вже існувала. Ми добиваємося відмінності, використовуючи спочатку системний виклик shmget() з прапорами IPC_CREAT і IPC_EXCL. Якщо виклик завершується нормально, то ми створили пам'ять, що розділяється. Якщо виклик завершується з констатацією помилки і значення змінної errno дорівнює EEXIST, то, значить, пам'ять, що розділяється, вже існує, і ми можемо одержати її IPC дескриптор, застосовуючи той же самий виклик з нульовим значенням прапорів. Наберіть програми, збережіть під іменами 06-1а.с і 06-1b.c відповідно, відкомпілюйте їх і запустіть кілька разів. Проаналізуйте одержані результати. Команди ipcs і ipcrm Як ми бачили з попереднього прикладу, створена область пам'яті, що розділяється, зберігається в операційній системі навіть тоді, коли немає жодного процесу, що включає її в свій адресний простір. З одного боку, це має певні переваги, оскільки не вимагає одночасного існування взаємодіючих процесів, з другого боку, може заподіювати істотні незручності. Припустимо, що попередні програми ми хочемо використовувати так, щоб підраховувати кількість запусків протягом однієї, поточної, сеансу роботи в системі. Проте в створеному сегменті пам'яті, що розділяється, залишається інформація від попереднього сеансу, і програми видаватимуть загальну кількість запусків за весь час роботи з моменту завантаження операційної системи. Можна б було створювати для нового сеансу новий сегмент пам'яті, що розділяється, але кількість ресурсів в системі не безмежна. Нас рятує те, що існують способи видаляти невживані ресурси System V IPC як за допомогою команд операційної системи, так і за допомогою системних викликів. Всі засоби System V IPC вимагають певних дій для звільнення займаних ресурсів після закінчення взаємодії процесів. Для того, щоб видаляти ресурси System V IPC з командного рядка, нам знадобляться дві команди, ipcs і ipcrm. Команда ipcs видає інформацію про всі засоби System V IPC, існуючі в системі, для яких користувач володіє правами на читання: областях пам'яті, що розділяється, семафорах і чергах повідомлень. Команда ipcs ipcs [-asmq] [-tclup]ipcs [-smq] -i idipcs -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, базується на припущенні, що ці засоби були створені при їх роботі, не забувайте перед їх запуском видаляти вже існуючі ресурси.
|
||||
Последнее изменение этой страницы: 2016-12-12; просмотров: 174; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.168.40 (0.007 с.) |