|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Andrey Sapozhnikov 2:5020/400 22 Oct 2003 17:58:04 To : Victor Wagner Subject : Re: ModPerl vs FastPerl vs PHP --------------------------------------------------------------------------------
Victor Wagner wrote:
> Konstantin Tokar <fido7@tokar.ru> wrote:
>
> KT> Hаверно он об этом не думает больше того, что даёт операционная система.
>
> Операционная система дает весьма много. Она дает честный Copy on Write.
>
> И то, что Perl мешает (неизменяемый) байткод с (изменяемыми) данными, не
> давая операционной системе возможности держать страницы с байткодом
> общими для всех процессов - проблемы перла, а не операционной системы.
Полагаю, что все же это проблемы, или точнее - следствие проблем
операционной системы. А именно стандартной функции malloc(3).
Для того, чтобы разделить изменяемые и неизменяемые данные
необходимо несколько пулов памяти и аллокаторы позволяющие
возвращать данные из раздельных пулов. И "умную" free(3),
которая бы знала к какому пулу принадлежит высвобождаемый
блок. Можно навернуть собственный аллокатор поверх штатного,
но это все равно криво, потому как придется запрашивать у
системы существенно больше памяти чем надо. Во первых за счет
лишних заголовков лишнего уровня, во вторых потому, что
malloc(3) возвращает блоки не выровненные по границе страницы.
Можно самим лепить аллокатор поверх brk/sbrk, но это
не портабельно и к тому же наверняка вылезет боком при
линковании с другими библиотеками и бинарниками. Станет
невозможно передавать указатели на память аллокированную
в одной части программы в другую, где она может
быть освобождена. К тому же многие аллокаторы не любят
сосуществовать с конкурентами (т.е. никто кроме них
не должен трогать brk/sbrk). Вот такие пироги.
--
Андрей
--- ifmail v.2.15dev5
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по:
Архивное /ru.cgi.perl/6577bf87f1b7.html, оценка из 5, голосов 10
|