Re[2]: Можно ли сделать переключение контекста библиотеки в пределах процесса?
От: alexraynepe196  
Дата: 16.11.20 06:19
Оценка:
Здравствуйте, netch80, Вы писали:

N>Здравствуйте, alexraynepe196, Вы писали:


A>>3) в текущей реализации загружается библиотека, а для каждого экземпляра хранится копия области данных используемая библиотекой. Исполняемый код остается общим. Для выполнения кода над конкретным экземпляром — область данных библиотеки перезаписывается из контейнера экземпляра.


N>Библиотека чужая? Перекомпилировать с отвязкой от глобальных данных — никак?

Библиотека то своя, но постановказадачи — симуляция продукта, и он должен быть максмально приближенным к проду. Переделывать архитектуру под моделирование никто не станет.

N>А то постановка вопроса выглядит совершенно дикой, потому что привычно, что есть объект "контекст" (как бы он ни назывался), из которого ссылки на все данные.


A>>Единственное решение обойти это место, я пока нашел — скопировать файл библиотеки в несколько независимых, и загружать эти библиотеки как независимые, получится одна библиотека/одоно устройство.


N>Они не дерутся за одноимённые экспортируемые имена?

Дерутся. НО обеспечить разные имена для пары методов АПИ моделера можно, этим и пользуются — моделируемый код собирается в обертке, которая предоставляет АПИ для моделируемого класса.
Пока я моделирую для разных классов по одному устройству — вопросов нет. Когда надо смоделить сотню устройств одного класса — вот о чем задача.

A>>MMU современных процессоров с другой стороны просто предназначено для решения подобных задач — достаточно создать несколько сегментов данных — по одному на каждое устройство, и переключать эти сегменты при исполнении одного общего сегмента кода. Но как это сделать реально?


N>Звать mmap() на такое будет явно ещё дороже.


N>Зачем такие извращения вообще были нужны?


примерно затем же для чего и системы виртуализации, тока безопасность ненужна.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.