- RU.UNIX (2:5077/15.22) -------------------------------------------- RU.UNIX -
From : Yuriy Kaminskiy 2:5020/517.21 16 May 00 08:45:10
Subj : Re: Hикто не прокомментирует ?
-------------------------------------------------------------------------------
Hello, Ricky!
>>>>> On 16:46 15/5/2000, Ricky Berejnoy <2:5020/1604.7> writes:
RB> http://www.hackzone.ru/articles/lcme.html
RB> по Unix, но это не так. Самое простое доказательство - посмотрите
RB> атрибуты сегментов памяти, занимаемых разделяемыми библиотеками
RB> (файл maps в файловой системе /proc). Вы почти никогда не увидите
RB> атрибута s(hared).
Хрр. LMD. man mmap на предмет того, чем же отличается MAP_SHARED и
MAP_PRIVATE. Hint: для read-only mmaping между ними разницы нет.
RB> Почему ? Короткий ответ звучит так - из-за
RB> ELF. Дело в том, что при загрузке ELF файла происходит настройка
RB> его перемещаемых адресов - relocations.
LMD. man gcc на предмет -fPIC. А все шареные библиотеки собирают с
-fPIC (что, впрочем, имеет свою цену - замедление программы; для
частного случая libperl.so - вплоть до 30%; хотя в среднем ситуация
гораздо лучше - ~5%).
RB> При этом сегменту памяти (даже если это сегмент кода)
RB> присваиваются атрибуты Read/Write,
LMD :-E
--
Yuriy Kaminskiy.
PS Ах да, и по поводу /proc/$$/maps, циатата:
40052000-400e1000 r-xp 00000000 03:08 20623 /lib/libc-2.0.7.so
400e1000-400e8000 rw-p 0008e000 03:08 20623 /lib/libc-2.0.7.so
Первое, очевидно, сегмент кода, второе - сегмент данных.
--- Gnus v5.2.25/XEmacs 19.14 * Origin: Kyle Katan's station (2:5020/517.21@fidonet)