Не уверен что правильно сформулировал заголовок, поэтому поправьте, если что.
Хочется почитать про организацию системы плагинов, не влияющих на данные друг друга. То есть, грубо говоря, что бы один плагин не мог испортить данные в памяти другого, или своим сбоем (например исключением) не «завалил» основное приложение.
Как вообще организуются подобные системы? На сколько я знаю по такому принципу организована система расширений Хрома и ОгнеЛиса.
Пока интересуют общие статьи, что бы понять, куда двигаться дальше в изучении вопроса, поэтому не нужно предлагать скачать исходники и посмотреть как организовано в конкретном приложении :)
Гуглу видимо не могу скормить правильную последовательность, выдает лишь про разного рода коммерческие продукты систем виртуализации.
В Firefox, например, бинарные плагины (NPAPI) работаю в отдельном процессе. В случае падения плагина упадет только процесс плагина, сам же браузер останется жив.
Делайте плагины на каких нибудь интерпретируемых языках, например на Lua, его интерпретатор очень легко встраивается в приложение — Lua часто используют в game-development для написания игровых скриптов, так же на нем пишут плагины к World Of Warcraft )
Плюс — плагин в безопасной песочнице, можно контролировать что он может делать, а что нет. Легко можно отловить исключение в плагине и из-за него не упадет приложение. Один плагин не может испортить данные другого. Кстати расширения FF пишутся на интерпретируемом JavaScript.