| |
После того, как структура удалена, она может быть удалена ``окончательно'' (это осуществляется во всех случаях, когда имеются очереди сообщений и наборы семафоров). Поскольку структура удаляется окончательно, referee информируется об этом, а также referee окончательно удаляет данную машину из своих таблиц - как ``держателя'' данной структуры. Ниже показано, что происходит в этом случае:
Сеть (Запрашивающий компьютер) | (Арбитрирующий компьютер) | |-1->back_end~>-2-+ | | | | ядро | employer--3------|-> referee |
Когда на компьютере окончательно удаляется структура IPC, об этом сообщается back_end (1). Он раздваивает employer (2) и ``приносит'' эти новости referee (3), который окончательно удаляет свои соответствующие элементы, проверяет наличие такой структуры в разделяемой памяти и является ли действующий компьютер единственным, содержащим эту структуру. Он должен быть владельцем. В этом случае referee действует как показано на схеме:
Сеть (Арбитрирующий компьютер) | (Владелец разделяемой памяти) | referee --4------|-> front_end --5-->shm_man
В итоге referee сообщает shm_man об отсоединении (4 и 5). Все похоже на случай с простым удалением из разделяемой памяти структуры IPC.
Далее следует все остальное:
Сеть (Компьютер-владелец) | (Арбитрирующий~компьютер) | | | ядро |<----8--employer | referee | | | | | +-7-< front_end <-|------6-+
Здесь referee информирует employer о том, что все действия сделаны (6 и 7); employer информирует ядро о том, что исходный пользовательский процесс, который вызвал окончательное удаление, может продолжаться.
Никаких специальных действий не предпринимается, когда
referee
не может быть информирован об окончательном удалении: referee
будет считать, что компьютер по-прежнему имеет структуру и давать ошибочные ответы
о данной структуре другим машинам (См. программы в каталоге tools,
позволяющие частично решить такую задачу).
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |