RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Ответить на сообщение
Имя:
e-mail:
FIDO:
Home page:
сохранить данные о вас
Тема:
> > тогда вопрос: а почему же пишут, что программы работают каждая в своём изолированном пространстве? то есть, по-идее, они в своём пространстве и должны искать нужные модули? а если их там нет, то загружать из своего каталога. можно же в конфиге в пути первым пунктом поставить точку (вы уже конечно написали, что ядро ищет сначала в памяти, получается, что параметры конфига игнорируются?). > Какая-то у тебя каша в голове. У процесса да, адресное пространство как бы индивидуальное. Под этим имеется в виду, что мапинг этого пространства на общесистемную виртуальную память он может настроить по своему усмотрению. В том числе и на те же страницы, которые уже замаплены в каких-то других процессах. В частности т.н. системная область адресов, в которой лежит ядро и его данные, во всех процессах замаплена одинаково. Модули грузятся тоже в общесистемную память, а потом мапятся на те процессы, которые их попросили. Изначально в адресном пространстве процесса замаплена только системная область, а всё остальное мапится по потребности. В начале ядерный загрузчик EXE файла грузит этот самый файл в виртуальную память (если он ещё туда не загружен) и мапит кусочек адресного пространства на эти данные. Потом по потребности мапятся другие модули или приватная память. > > Поиск идёт, если не сильно вдаваться в подробности, в три стадии: > - среди уже замапленых модулей в текущий процесс. Если нашли, то просто увеличиваем счётчик использований. Это тривиальная стадия и о ней обычно даже не упоминают; > - среди модулей, которые уже есть в виртуальной памяти системы. Если нашли, то остаётся только замапить его в процесс; > - как последний шанс, ищем по диску согласно LIBPATH. Если нашли - грузим в общесистемную память и дальше стадия 2. > > Из конфига ничего не игнорируется, но до LIBPATH может просто не дойти. Сделано так ради скорости поиска. > > Точка в LIBPATH - это зло на самом деле. Она трактуется в самом обычном понимании: как текущий каталог. Расчитывать, что в этом каталоге есть хоть какие-то библиотеки, а уж тем более, нужные - это очень смело.
__, _, __, _,_ _, _
|_ / \ |_) | | |\/|
| \ / | \ | | | |
~ ~ ~ ~ `~' ~ ~
Programmed by
Dmitri Maximovich
,
Dmitry I. Platonoff
,
Eugen Kuleshov
.
25.09.99 (c) 1999,
RU/2
. All rights reserved.
Rewritten by
Dmitry Ban
. All rights ignored.