Сообщение Re[2]: Можно ли сделать переключение контекста библиотеки в от 14.11.2020 18:17
Изменено 14.11.2020 18:18 ononim
Re[2]: Можно ли сделать переключение контекста библиотеки в пределах процесса?
A>Нет, потому что MMU работает с контекстами виртуальных адресных пространств. Транслируя адреса из нескольких совершенно разных адресных пространств в одно пространство — реальные адреса физических страниц памяти.
A>Выполняется это посредством ассоциативного кэша в виде TLB (который как правило ещё и двух-уровневый).
A>Т.е. средства ОС не помогут в данном случае избежать необходимости ломать реализацию проблемной библиотеки — таки придётся её переделывать.
Строго говоря промапить файл в АП одного процесса дважды двумя вызовами MapViewOfFile — не проблема. Проблема в том что LoadLibrary* так не умеют (в отличии от юниксового dlmopen, например).
A>Выполняется это посредством ассоциативного кэша в виде TLB (который как правило ещё и двух-уровневый).
A>Т.е. средства ОС не помогут в данном случае избежать необходимости ломать реализацию проблемной библиотеки — таки придётся её переделывать.
Строго говоря промапить файл в АП одного процесса дважды двумя вызовами MapViewOfFile — не проблема. Проблема в том что LoadLibrary* так не умеют (в отличии от юниксового dlmopen, например).
Re[2]: Можно ли сделать переключение контекста библиотеки в
A>Нет, потому что MMU работает с контекстами виртуальных адресных пространств. Транслируя адреса из нескольких совершенно разных адресных пространств в одно пространство — реальные адреса физических страниц памяти.
A>Выполняется это посредством ассоциативного кэша в виде TLB (который как правило ещё и двух-уровневый).
A>Т.е. средства ОС не помогут в данном случае избежать необходимости ломать реализацию проблемной библиотеки — таки придётся её переделывать.
Строго говоря промапить файл в АП одного процесса дважды двумя вызовами MapViewOfFile в два отображения по разным адресам — не проблема. Проблема в том что LoadLibrary* так не умеют (в отличии от юниксового dlmopen, например).
A>Выполняется это посредством ассоциативного кэша в виде TLB (который как правило ещё и двух-уровневый).
A>Т.е. средства ОС не помогут в данном случае избежать необходимости ломать реализацию проблемной библиотеки — таки придётся её переделывать.
Строго говоря промапить файл в АП одного процесса дважды двумя вызовами MapViewOfFile в два отображения по разным адресам — не проблема. Проблема в том что LoadLibrary* так не умеют (в отличии от юниксового dlmopen, например).