|
Удержание объектов
ADO в Delphi AJAX Android C++ CakePHP CMS COM CSS Delphi Flash Flex HTML Internet Java JavaScript MySQL PHP RIA SCORM Silverlight SQL UML XML Бази даних Веб-розробка Генетичні алгоритми ГІС Гітара Дизайн Економіка Інтелектуальні СДН Колір Масаж Математика Медицина Музика Нечітка логіка ООП Патерни Подання знань Розкрутка сайту, SEO САПР Сесії в PHP Системне програмування Системний аналіз Тестологія Тестування ПЗ Фреймворки Штучний інтелект
|
Знання
→
Архитектура пк
→
ДИСПЕТЧЕР ОБЪЕКТОВ И КОНТРОЛЬ ДОСТУПА
→
Управление объектами
→
Описатели объектов
Удержание объектов
Так как все процессы пользовательского режима, осуществляющие доступ к некоторому объекту, должны вначале открыть его описатель, то диспетчер объектов может легко отслеживать, сколько процессов, и даже какие именно, используют данный объект. Отслеживание открытых описателей — это первый шаг в реализации удержания объектов (object retention), т.е. сохранения временных объектов только на то время, пока они используются, с последующим удалением. Удержание объектов включает две фазы. Первая фаза называется удержанием имени (name retention) и управляется количеством открытых описателей данного объекта. Всякий раз, когда процесс открывает описатель объекта, диспетчер объектов увеличивает счетчик открытых описателей в заголовке объекта (см. рис. 3-1.) После того, как процесс закончил работу с объектом и закрыл имеющиеся у него описатели данного объекта, диспетчер объектов уменьшает счетчик. Когда счетчик обнуляется, диспетчер объектов удаляет объект из своего пространства имен. В результате новые процессы не могут открыть описатели данного объекта. (Имена постоянных объектов не удаляются, поскольку эти объекты представляют такие сущности, как физические устройства, которые остаются на месте, даже если их не использует ни один процесс. Прежде чем удалить постоянный объект, ОС должна сделать его временным.) Вторая фаза удержания объектов — это прекращение удержания (т.е. удаление объектов), когда они более не используются. Так как ОС обычно осуществляет доступ к объектам посредством указателей, а не описателей, диспетчер объектов должен также учитывать количество указателей на объект, которое он передал процессам ОС. Всякий раз при выдаче нового указателя на объект диспетчер объектов увеличивает счетчик ссылок объекта (reference count); когда поток ОС заканчивает работу с объектом, он обращается к диспетчеру объектов для уменьшения счетчика ссылок. Таким образом, даже после того, как счетчик описателей достиг нуля, счетчик ссылок может оставаться положительным, указывая, что ОС продолжает использовать объект. В конце концов счетчик ссылок обнуляется. Когда это происходит, диспетчер объектов удаляет объект из памяти. Благодаря такой реализации удержания объектов приложение гарантирует, что объект и его имя остаются в памяти, просто сохраняя открытым описатель этого объекта. Программистам, пишущим приложения, которые состоят из двух или более взаимодействующих между собой процессов, не нужно беспокоиться о том, что один процесс может удалить объект, прежде чем другой закончит работу с ним. Кроме того, закрытие описателей объекта приложениями не приводит к удалению объекта, если его по-прежнему использует ОС. Например, один процесс может создать другой процесс для выполнения некоторой программы в фоновом режиме; сразу же после этого первый процесс закрывает описатель второго. Так как второй процесс нужен ОС для выполнения программы, то она сохраняет ссылку на объект-процесс. Только после того как фоновая программа закончит выполнение, диспетчер объектов уменьшит счетчик ссылок второго процесса и затем удалит этот процесс. Зверніть увагу на додаткові посиланняЯкщо вас цікавить...Головний розділзагрузка...
|
Сторінки, близькі за змістом
|
|
Copyright © 2008—2026 Портал Знань.
При використанні матеріалів посилання, для інтернет-ресурсів — гіперпосилання, на Znannya.org обов'язкове.
Зв'язок
|
НТУУ "КПІ" Інженерія програмного забезпечення КПІ Лабораторія СЕТ |
|