>Каша и противоречие в том, что открывать исполняемый бинарник на запись для
>его замены - грзяный хак. О, писец, дожили.Просто запись в файл - это уже, оказывается, грязный хак называется!А костыльные методы - это оказывается правильно.А исполняемый он там или нет в принципе дело десятое.А что, от этого оно перестает быть файлом???
>Правильный способ апдейта - его unlink()
>и создание нового, что опирается на вышеуказанное отделение имени файла от
>самого файла.
Ага, конечно, хитрожопо прикрученый костыль теперь называется правильным решением.А все потому что это называется "двойные стандарты".Если в любомой системе, архитектуре и т.п. сделано через попу - надо сказать что на самом деле это рулез а через попу у всех кто не согласен.Гениальная логика в полном согласии с "каждый кулик хвалит свое болото".Лично я не вижу зачем плодить лишние сущности и все усложнять.Ничего кроме геморроя и глюков от этого не бывает.Что может быть проще обычной записи в файл без всякого траходрома???
>И, следовательно, это отделение в *nix, коли уж шло
>сравнение с виндой, должно было быть четко и ясно описано.
А в винде вообще нет нормального метода замены загруженного в данный момент файла без ребута.Особенно системных DLL касается.Как максимум, можно переименовать файло, передвинув его в другое место (при том только в пределах одного диска, между дисками двигать такие файлы нельзя - привет от нелинейной файловой системы) и положить на его место новый файл.Который однако никто кроме вновь запущенных программ юзать не будет до ребута.В итоге получается что ребут необходим чтобы все программы юзали новую версию ДЛЛ и чтобы завершить удаление файла (стереть переиенованный файл до ребуте ессно нельзя, он используется).
>>"dll-ки являются swap'ом для себя"
И exe-файлы тоже являются свопом для себя.
>>не swap'ом они для себя являются, а мапятся в процесс.
С целью замены своп-файла.Страницы вместо выгрузки в своп просто отбрасываются.Потом при нужде догружаются из образа EXE или DLL с диска.Потому и лочится намертво, собственно.А если б не лочилось - при удалении или замене такого файла все бы крашилось нафиг да и все дела.Довольно дурная затея в целом - получается очень фрагментированный фариант свопа, а экономия на сбросе страниц в своп не столь уж велика, а вот трах с апдейтами - знатный.Просто сие тупорыльство было придумано в те давние поры когда никто еще не собирался заменять системные файлы for security reasons на ходу.
>Марш в учебник - все Mach-derived VM-подсистемы рассматривают ОЗУ лишь как кэш
>для дисковых объектов.
Не знаю, винда и т.п. скорее рассматривают диск как оперативку.Пусть и медленную.Собственно идея свопа проста как топор - если возникло исключение "страницы нет", попытаться ее в свопе накопать.А если уже и там нету - ой, приехали.Получается такая вот безразмерная оперативка в итоге которую при нужде можно расширить куда-то.Ну там на диск или еще в какое-то хранилище не адресуемое напрямую.
>ли это anonymous backing свопа или вполне себе именованный файл -
>без разницы.
Смотря с какой стороны смотреть.Незаменяемость большого своп-файла всем до балды.Незаменяемость бинарника создает траходром с апдейтами.Ы?