«Ошибки в ДНК» или как неправильный дизайн может приводить к миллионным убыткам

    Написать эту заметку меня побудили очередная статья с «криком души»: ну почему Windows в очередной раз требует перезагрузки при изменении чего-либо (обычно это установка/удаление программ, но бывают и другие случаи)? Почему разработчики Windows-приложений — такие лохи, а разработчики Linux-программ (где таких сообщений при установке «обычных программ» не бывает) — такие молодцы?

    Этот феномен всем давно известен — но задумывались ли вы о том откуда у него «ноги растут» и почему в других операционных системах (Linux, MacOS X и т.п.) подобные окна являются чем-то исключительным, а в Windows — постоянным?

    Нет, виноваты не только «криворукие писатели софта» — основная вина лежит на компании Microsoft. Все эти бесконечные запросы — сочетание ошибки в дизайне MS DOS, совершённой более 20 лет назад и теории разбитых окон. Это было горячее время для Microsoft — она тогда не была монстром, подобным сегодняшнему, не могла совершать ошибок и годами разрабатывать нечто от чего всех бы воротило, а потом выпускать следующую версию OS, которая бы исправляла ошибки предыдущей (Windows98 => Windows98SE, Windows Vista => Windows 7, etc). Потому когда потребовалось что-то сделать с поддержкой локальных сетей и противопоставить тогдашнему лидеру (это была компания Novell со своей сетевой операционкой Netware) хоть что-нибудь разумное, то долго думать о дизайне не приходилось — было сделано то, что было сделать проще всего и что почти наверняка бы работало без ошибок и нареканий. В MS-DOS появилась утилита SHARE.EXE, позволявшая использовать несколько программ одновременно (вначале — только на разных компьютерах, так как MS DOS оставалась однозадачной, позднее — на одном, после того, как Windows получила распространение) и в ней была совершена та самая ошибка, последствия которой мы и расхлёбываем до сих пор. Причём всего ужаса совершённой тогда ошибки никто не заметил ибо ничего ужасного, на первый взгляд, в ней не было.

    В чём же состояла ошибка? В том, что сказав A Microsoft не сказал B. Когда Microsoft копировал из Unix их основную фишку — иерархическую файловую систему (можете ли вы поверить что первая версия MS DOS даже этой возможности не содержала?) для упрощения он не скопировал оттуда одну важную идею: разделение понятия «файл» и «имя файла». В Unix — эти понятия разделены. Есть файл (или, вернее, inode) и есть его имя (запись в каталоге). Права доступа к inode и права доступа к имени файла никак, вообще говоря, не связаны между собой (на самом деле потом пришлось-таки ввести парочку ограничений, но это другая история). Главное: если программа открыла файл и даже если она сделала это в эксклюзивном режиме — на права доступа к записи в каталоге это не распространяется. Что это значит? Это, в частности, значит, что вы можете любой файл «удалить» (на самом деле если этот файл используется — например это файл подкачки — то он не будет удалён до тех пор пока он будет использоваться) и создать «на его месте» новый (на самом деле новый файл будет создан, скорее всего, в другом месте — но вот запись в каталоге будет размещена там же). В MS DOS же программа SHARE.EXE (и все её потомки включая ядра таких OS как Windows Vista и Windows 7) действуют не так. Если доступ к файлу заблокирован, то заблокирован и доступ к его имени! В MS-DOS (с файловой системой FAT, позволявшей каждому файлу иметь только одно имя) это выглядело логично, в NTFS — это выглядит уже странно (вы можете дать файлу новое имя, но не можете удалить старое), но сделать с этим ничего нельзя так как множество программ полагается на это (решение было принято, напоминаю, более 20 лет назад).

    Каковы последствия этой ошибки? Последствия — самые серъёзные. Многие файлы в Windows вообще не могут быть мофицированы во всемя её работы (так как используются системой) и потому было предложено несколько механизмов позволяющих эту проблему обойти. Можно указывать имя файла (скажем драйвера) в реестре и создавать при обновлении новый файл/каталог — а старый удалять, скажем, при перезагрузке (или в другое «удобное время») — это подход применяется, в частности, в .NET. Можно просто заменять файлы после перезагрузки — но тут не всё просто ибо нужна специальная «заплатка» в OS, позволяющая это делать (и она есть в Windows), но главное — «обновлённый» файл, ждущий своей очереди не виден на своём привычном месте и неясно каким он будет — и потому много программ инсталляции обнаружив что очередь «заказов на изменение конфигурации после перезагрузки» непуста просто форсируют оную перезагрузку. В общем — много чего можно делать и делается, но при всём при этом установка любой программы может потребовать перезагрузки (если разработчики предусмотрели это), либо (что IMNSHO хуже) установка перезагрузки не потребует, но и программа работать не будет. Веселее всего бывает когда установленная программа работает до перезагрузки, а потом — ломается. Так бывает когда одна программа заказала некое изменение «на после перезагрузки», инсталлятор другое программы поставил вторую программу без учёта этих изменений (он же их не видит — они же в очереди! а форсировать перезагрузку вторая программа не решилась чтобы не нервировать пользователя!), а после перезагрузки — система сломалась. Ну и окончательную точку ставит «теория разбитых окон»: если решение части проблем — только перезагрузка системы и никак иначе, то почему бы не потребовать оной перезагрузки и в других случаях когда это прсто упростит жизнь разработчикам?

    В Unix (и, соответственно, в Linux и/или MacOS) ситуация совсем иная: любой файл всегда можно заменить на «улучшенную версию» (если у вас хватит на это прав), так что при установке большинства программ перезагрузка не требуется никогда — разумеется это заставляет разработчиков пытаться избежать её и в других случаях…

    К сожалению в последнее время и в Linux начали «снижать планку»: поробуйте перейти с KDE 3.x на KDE 4.x без остановки системы или хотя бы без перезагрузки X'ов! Это не так-то просто и требует массы костылей… Но в любом случае такие ситуации случаются в Linux/MacOS/etc гораздо реже чем в Windows. Потому что у Windows — «ошибка в ДНК», доставшаяся ей от прародителя — MS DOS.

    Чему нас учит эта история? Тому что ошибки дизайна бывают разные: некоторые можно потом легко исправить, а некоторые — будет вас преследовать десятилетия… Осталось только научиться их различать…
    Share post

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 302

    • UFO just landed and posted this here
        +6
        Что, помешал автор фапать на образ непорочного БГ?
        • UFO just landed and posted this here
          –2
          Это фанатизм или попытка самоутвердиться?
          Факты есть факты. Спорить из-за этого или оскорблять кого-то — только себе хуже. Костыли у МС прикручиваются постоянно. Я не говорю, что их нет в ПО других производителей, но не дальнозоркость обычно и приводил к появлению таких вещей, как .net, 10 версий IE и т.д.
          ведь не просто так ту-же прозрачность окошек без .net не прикрутить в win98(ну это просто для примера)
          • UFO just landed and posted this here
              +4
              Это фанатизм или попытка самоутвердиться?

              Скорее попытка суицида.
                0
                Doppelganger
                Вообще святой человек. Давайте за него помолимся, ведь все его 88 комментов — это оказывается не попытка самоутвердиться и компенсировать свои умственные недостатки путём поливания всех грязью, это что то другое…

                Вообще все обиженные сидят на упячке и т.п. недалёких сайтах, поэтому свободен, тут твоё убогое мнение никому не интересно, деградируй в другом месте.
                –2
                10 версий IE? Их всего 8. У мозилы их сотни, хотя основные 3.
                  +2
                  Таки 10: 1.0, 1.5, 2.0, 3.0, 4.0, 5.0, 5.5, 6.0, 7.0 и 8.0. Это только основные — разных промежуточных типа 5.5SP2 — было дофига, а если HotFix'ы посчитать… мало не покажется.
                    0
                    мак и юникс-версии забыли
                • UFO just landed and posted this here
                  • UFO just landed and posted this here
                      0
                      1. я говорю про версии а не про версии исправлений. исправлений — дураку понятно… за несколько тысяч у любой софтины
                      2. говоря про версии IE я имею в виду кардинальную его переработку.
                    –8
                    Жаль у меня не хватает заряда, чтобы тебя заминусовать…
                    • UFO just landed and posted this here
                      +2
                      ты знаешь а мне что-то тебя немного жаль )
                      но минус таки ты заслужил
                      • UFO just landed and posted this here
                        • UFO just landed and posted this here
                          +2
                          Какой толстенный тролль ))
                          • UFO just landed and posted this here
                              +4
                              Ты что, для этого как минимум трое нужны ))
                              • UFO just landed and posted this here
                            0
                            зачем кидаться зря словами? это ведь просто мнение автора =) а вот мне Вас искренне жаль, зато Вы первый в рейтинге… с конца… какой смысл идти на осознанное понижение собственной кармы?
                            • UFO just landed and posted this here
                            +1
                            жирный троль?
                              0
                              (это предыдущему оратору)
                                +8
                                он настолько толст, что еле пролез в форму коментов
                                давайте уменьшим textarea :)
                                –13
                                что-то я не понял причем тут дизайн… ошибка вроде как не в дизайне… или я чего-то не понял?
                                  +13
                                  дизайн архитектуры приложения, системы…
                                    +9
                                    аа… не въехал сходу )
                                      +2
                                      А есть же слово «проектирование».
                                      Да и gramota.ru говорит, что «дизайн» относится больше к внешнему облику.
                                        +6
                                        design patterns широко используемый термин.
                                          +2
                                          Ну да, «паттерны проектирования».
                                          В английском-то одно слово.
                                            +2
                                            Даже пишут «шаблоны проектирования».
                                              –1
                                              Нет не одно
                                            0
                                            Это заблуждение. К примеру, гейм-дизайнер не имеет прямого отношения к внешнему виду игры.
                                              +3
                                              Согласен.
                                              Но я почему-то больше привык слышать «проектирование системы», чем «дизайн».
                                              Для меня «проектирование» — это внутреннее устройство, а «дизайн» так или иначе связан с пользователем (потому за играбельность отвечает дизайнер, а за внутреннее устройство архитектор), но это моё мнение, я его никому не навязываю. Да и грань в моём случае тоже достаточно тонкая, так что за правило не сгодится.
                                                +7
                                                а клининг-менеджер — это вам не уборщица! Речь идет не о заимствованном названии профессии, а о том, что «проектирование» в русском звучит не только понятней, но и лучше отражает суть, чем смешанное «дизайн».
                                                  0
                                                  игровой проектировщик — звучит как то не очень
                                                    0
                                                    Да, согласен. Но это в игровой индустрии такое название прижилось (потому что оно красивей). А есть еще много профессий — проектировщик человеко-машинных интерфейсов, архитектор системы, — которые перешли в русский язык с более точным определением, хотя в английском везде было designer.
                                                      0
                                                      Теперь я согласен. Графический — дизайнер, системы — архитектор. Так действительно было бы лучше :)
                                                +1
                                                В английском языке слово «design» используется и как существительное, и как глагол.
                                                В форме глагола, «дизайн» следует понимать, как процесс проектирования и разработки чего-либо.
                                              +5
                                              дизайн — это не только внешний вид.
                                                0
                                                «Дизайн» — обширное понятие, это совсем необязательно рисование веб-страницы в фотошопе (или где там их рисуют) :)
                                                  0
                                                  сейчас в универе(техническом) учим англ, в основном Итшную терминологию, так что могу по свежему опыту сказать — design в IT сфере это даже скорее разработка, чем непосредственно дизайн
                                                  +3
                                                  Буквально вчера перешел на четвертые кеды не выходя из третьих (причем удалив половину оных по пути). Все работало.
                                                    0
                                                    Эх, значит у меня настолько кривые руки, что мне apt почти сломал систему? Обновив только половину пакетов, при попытке обновления из третьих кедов:)
                                                  • UFO just landed and posted this here
                                                      0
                                                      тут говорилось не про linux, а про unix подобные, что в windows сделано лучше чем в *nix системах(*bsd, linux, macosx, etc) системах? кажется, только костыли…
                                                        +2
                                                        Если брать все виды *nix'ов, то, пожалуй, ничего, а если какой-нибудь конкретный — то, например, видеоподсистема в Linux ужасна. То, что всё управление видеокартой вынесено в отдельный процесс во-первых противоречит основной идее (ядро является посредником между программами и железом), а во-вторых имеет важные практические последствия (supend/hibernate становятся «русской рулеткой»). Опять-таки dnotify имеет кучу проблем (следить за сменными носителями нельзя — а на них, как раз, это полезнее всего).

                                                        Другое дело что в *nix принято ошибки исправлять (inotify сменил dnotify и работа над полноценными ядрёными драйверами сейчас весьма активно ведётся), а не искать к ним оправдание и пристраивать костыли к костылям как в Windows…
                                                      +9
                                                      из статьи непонятно про чьи «миллионные убытки» идет речь, автор поясните плиз
                                                        +5
                                                        Пользователей, которые были вынуждены перезагружать компьютеры. Компаний, которые вынуждены платить за восстановление работоспособности программ. Разработчиков (в том числе в самой Microsoft), которые вынуждены изобретать кучу костылей, а затем — заплаток к этим костылям.

                                                        Миллионы — это консервативная оценка.
                                                          0
                                                          Скорее это упущенная возможность получить прибыль.
                                                          Помните анекдот про солдата с косой?
                                                            0
                                                            Это не упущенная прибыль, а именно убыток.
                                                            Чтобы написать костыль, нужно затратить дополнительное время, то есть заплатить работнику за лишние человекочасы.
                                                            Чтобы восстановить работоспособность программы, нужно заплатить работнику за время, которое он потратит на ее восстановление.
                                                          +1
                                                          Необходимость перезагрузки сервера может многого стоить. ИМХО. А если он потом ещё и не заведётся (из-за описанной выше проблемы), будет совсем кисло. Ну это скорее теория, чем практика.

                                                          Насколько я помню, существуют техники, которые позволяют без перезагрузки даже обновлять ядро линукса (работающее в данный момент!). Хотя это уже немного иная тема.
                                                            +1
                                                            А если он потом ещё и не заведётся (из-за описанной выше проблемы), будет совсем кисло. Ну это скорее теория, чем практика.
                                                            В моём случае это практика. Оправлять человека в другой город плюс время простоя — это недёшево. Правда это было лет 10 назад — сейчас этим занимается техподдержка хостинг-провайдера, что не значит что она от этого дела в восторге.
                                                              0
                                                              Причём, что интересно, что на тестовой машине всё может пройти успешно, т.к. обновления ставили не все пачкой, а по очереди, регулярно перезагружаясь.
                                                              0
                                                              ага, тот же kexec.
                                                                0
                                                                нет, ksplice. kexec, все таки, перезагрузка, просто не касающаяся железа.
                                                            +9
                                                            Что меня бесит, так это когда она настырно просит перезагрузиться! А у тебя работы куча. И вываливается это окошко постоянно!..

                                                            Или же еще прикольней, когда комп на ночь оставляешь чтобы он что-то выполнял (например торренты качал), а утром оказывается, что комп перезагружался ночью! :)

                                                            Хороший топик, заметно, что наболело уже…
                                                              –11
                                                              сам он никогда не перезагрузится
                                                                +3
                                                                да ладно
                                                                  +5
                                                                  у меня никогда такого не было, но когда работала на ноуте парня — каждые 5 минут вылезало это окошко, которое отсчитывало сколько-то там секунд(минута, чтоли) и ребутает систему, если не отменить.

                                                                  И бывало такое, что подходишь минут через 10, а винда ребутнулась. Опять же, у меня такого никогда не было. Мб какие-то параметры отключены. Не знаю
                                                                    +3
                                                                    Это был Вирусяка ;)
                                                                    Очень забавная штука. В универе не было прав поставить заплатку, так за то время, пока тикал таймер запускал консоль и выполнял shutdown -a (отмену). Правда преподаватель как-то странно после этого на меня смотрел :(
                                                                      0
                                                                      успел раньше меня ))
                                                                        0
                                                                        замечательно… За безобидное описание ушла в минус.
                                                                          0
                                                                          Чем смог — тем помог ;)
                                                                            0
                                                                            спасибо. И за объяснение в том числе
                                                                        +4
                                                                        Ребята! ну вы даете… Да, был вирус такой который систему ребутил, но сейчас насколько я знаю любой уважающий себя антивирус его отловит и накажет. А тут человек говорит про автоматическую перезагрузку после апдейта. Там окошко вылезает и говорит что через только-то перезагрузит систему. можно нажать отмена. но если не успел то система перезагрузится и эту «фичу» можно отключить в сервисах.
                                                                        Другое дело что у некоторых товарищей автоматические апдейты вообще выключены и про такую штуку он вообще не знают
                                                                          +1
                                                                          Не думаю, у меня когда я сидел на корпоративной винде такое было заботливо добавлено IT, чтобы особо хитрые пользователи не забивали на security updates.
                                                                          0
                                                                          Мне кажется это вирус :)
                                                                          Только после падения svchost появляется окошко с одной минутой и комп ребутается :)
                                                                            +2
                                                                            Нет, не вирус. Если обновление автоматическое, то и перезагрузка тоже, если не успеешь отменить.
                                                                            Пришлось во всем офисе перенастроить на автоматическое скачивание обновлений, но ручную их установку.

                                                                            Это в настройках автообновления делается.
                                                                              0
                                                                              хммм… может давно не сидел за XP… но не помню чтобы автоматическая служба сама ребутала комп
                                                                                +1
                                                                                Более того оно точно так же работает и в 2003 Server. Я как раз пару дней назад с этим столкнулся, прихожу утром, а мне сервак так весело, дескать, тут апдейт был и я перегрузился. Хорошо ночью. Первый раз поставил автоматическую установку обновлений, до этого всегда было автоматическое скачивание и ручная установка.
                                                                            0
                                                                            Windows Update на ручной режим и не будет требовать.
                                                                              +2
                                                                              Это если права есть :)
                                                                            0
                                                                            перезагрузится, когда обновления скачает, тоже один раз попал так, будильник на компе завел, а то перегрузился ночью, утром проспал, смотрю на комп, а так радостная надпись что обновление установлено
                                                                              +4
                                                                              поэтому будильник заводить лучше на кроне))
                                                                              0
                                                                              Вы код писали? ;) Или откуда вам это известно.

                                                                              Я говорю факт. Более того, в этот же день обновлялись компы в офисе. Поэтому я так и решил. Сам ноут у меня не перезагружался ни разу при мне.
                                                                                +3
                                                                                Перезагрузится, если приехали важные заплатки. Ну и конечно если Update не отключен.
                                                                                  –3
                                                                                  у меня комп как-то сам включался через несколько минут после включения, а вы говорите, он перезагрузиться сам не может :)
                                                                                    0
                                                                                    У меня тоже комп по ночам сам включался и будил меня )
                                                                                    Наверное что-то с блоком питания было
                                                                                      0
                                                                                      *после выключения
                                                                                        0
                                                                                        это называет Wake on Lan
                                                                                      0
                                                                                      Хм… компьютер сам перегружался только когда что — то падало, системная ошибка! Других вариантов пока не наблюдал.
                                                                                        0
                                                                                        Автоматическое обновление стоит?
                                                                                          0
                                                                                          Сейчас всё обновляю вручную, а до этого стояло — только уведомлять о доступных обновлениях.
                                                                                        +8
                                                                                        Чтобы не просил настырно перезагрузиться: www.online-tech-tips.com/computer-tips/disable-restart-now/
                                                                                        Чтобы не перезагружался сам: www.askstudent.com/techtips/disable-automatic-reboot-after-windows-update/
                                                                                          –3
                                                                                          Ну вот и разобрались! Спасибо вам.
                                                                                          Плюсик не могу поставить… «У вас недостаточно кармы чтобы голосовать»… :)))
                                                                                        –1
                                                                                        Все не так просто. FAT намного проще чем любая UNIX-система. Более того, если всё так, как написано, то почему не случилось чуда при использовании NTFS? Там метаинформация отделена от данных.
                                                                                          0
                                                                                          FAT проще, возможно… Но не совершенна… Посмотреть только на количество ограничений, в мир нанотехнологий некоторые из них просто недопустимы.
                                                                                          support.microsoft.com/kb/314463/ru
                                                                                            0
                                                                                            Дык никто про соврешенство и не говорит, но на тот момент это была весьма современная ОС. В 128 КБ ОЗУ и такое затолкать сумать нужно. Не слудет забывать, что юникс на тот момент был уделом больших ЭВМ.
                                                                                              +1
                                                                                              Только ушли от FAT они не так уж и давно.
                                                                                                +3
                                                                                                На тот момент Unix производства Microsoft работал на PC. Так что всё у них было.
                                                                                                  0
                                                                                                  Размер :) В начале 80х Xenix был слишком больших для персональных компьютеров. А в 1986 уже было поздно — слишком много пользователей работало под DOS
                                                                                                  +3
                                                                                                  уникс разрабатывался на пидипи-7 с непонятно сколько памятью, а потом был перенесён на пидипи-11 с… гм… гм… возможно, с 64-мя килобайтами? и сам занимал 12кб :).
                                                                                                  А в фате метаинформация от файла тоже отделена, это ошибка именно в днк, а не в файловой системе.
                                                                                                    0
                                                                                                    А в фате метаинформация от файла тоже отделена, это ошибка именно в днк, а не в файловой системе.
                                                                                                    Это не совсем так. Длина файла записана именно в каталоге. В FAT нет понятия inode, которое бы хранило эту важную информацию о файле, а файлы длиной 10 байт и 100 байт — всё-таки разные файлы.
                                                                                                      0
                                                                                                      Пожалуй, да. Информация о длине «хвоста» будет утеряна, а это часто важно.
                                                                                                      +1
                                                                                                      Юниксзародился на мейнфрейме GE-600. А на PDP-7 долго влачил жалкое существование — группа разрабочиков очень хотела перейти на более мощную машину, т.к. ресурсов PDP-7 не хватало. Второе дыхание проект получил перейда на PDP-11/20, а это уже весьма мощный компьютер. Там же он обрёл соврtменные черты. Уже в конце 80х ядро линукса (только ядро!) превышало 40КБ — по тем временам очень много! Предшественник DOS — CP/M, в котором и родился FAT, занимал лишь несколько килобайт.
                                                                                                        +1
                                                                                                        Тьфу, в конце 70х, конечно же. А именно — в 1979 году. Это было одно из первых ядер обладающие основными характерыми особенностями *nix.
                                                                                                          +1
                                                                                                          И в 1979 г., очевидно, не Линукса.
                                                                                                            0
                                                                                                            А причём тут Линукс? Речь о том, что на момент появления персональных ЭВМ, естественным выбором для них была FAT и CP/M (DOS), как нименее ресурсоёмкие решения полностью удовлетворяющие тогдашние потребности.
                                                                                                              0
                                                                                                              Вы написали:
                                                                                                              Уже в конце 80х ядро линукса (только ядро!) превышало 40КБ

                                                                                                              Опечатка? В 1979 г. была выпущена 7-я версия UNIX и появился её порт на VAX — 3BSD.
                                                                                                                0
                                                                                                                конечно :) я имел ввиду unix :)
                                                                                                          0
                                                                                                          >Уже в конце 80х ядро линукса (только ядро!) превышало 40КБ — по тем временам очень много! Предшественник DOS — CP/M, в котором и родился FAT, занимал лишь несколько килобайт.

                                                                                                          Ну наверное всё-таки Юникса, а не Линукса, а во-вторых: что умел тот ДОС — и что умел Юникс? ;)
                                                                                                    0
                                                                                                    метаинформация в файловой системе и в FAT отделена :) но вот внутри самой операционной системы… в linux FAT к примеру тоже поддерживается, но внутри ядра линуха это все теже inode's+dirnode's
                                                                                                      0
                                                                                                      а разве драйверы файловых систем не реализуют стандартные операции вроде create/open/read/open/write/delete?
                                                                                                      что значит внутри ядра всё теже inode? внутри драйвера ext2? тогда внутри драйвера fat — своя специфика
                                                                                                      • UFO just landed and posted this here
                                                                                                          0
                                                                                                          спасибо, полезный комментарий
                                                                                                            0
                                                                                                            собственно cyberzx всё сказал структурой, интерфейс инодный
                                                                                                          +4
                                                                                                          Это прекрасно. Ноу Linux нет COM. А у Windows она есть давным давно. Что прикажете с ней делать? Объясняю на пальцах.
                                                                                                          У вас есть некий DLL являющийся контейнером объекта COM. Этот объект загружен и используется. И тут вы волшебным образом подменяете файл используя волшебную силу inodes. Внимание вопрос — если ещё одно приложение попробует создать этот объект — какая версия будет создана?
                                                                                                          Вторая проблема — ресурсы. Ресурсы в Windows загружаются не в момент загрузки приграммы, а по мере использования или по запросу.
                                                                                                          Третья проблемма — DLL. У вас есть некая системная DLL, которую использует множетсво приложений. И тут вы её находу заменяете. А потом запускается новое приложение и пытается вручную загрузить ещё один экземпляр этотй DLL. Но это уже другая DLL! А теперь учтите, что у DLL есть методы, вызываемые при первоначальной загрузке, а тут первоначальных загрухок получается две.
                                                                                                          Не нужно считать других глупее себя. Просто пример — запустите в Windows любой исполняемый файл. А теперь переименуйте его. Фокус-покус! Файл перименовался! Причём фал не просто продолжает работать, но и может использовать ресурсы. Хотя, следуя логиrе автора быть такого ну, никак не может. Inodes в данном случае заменяет module instance handle. И не важно какая файловая система.
                                                                                                          Не нужно считать других глупее себя. Microsoft сознательно отказалась от идеи виртуальной файловой системы ядра, так, как развязывало ей руки в применении множества других перспективных технологий.
                                                                                                            0
                                                                                                            вообщето CORBA есть и в линухе…
                                                                                                            а COM, загибает и сама мелкософт
                                                                                                              0
                                                                                                              .NET и MS IE — с ног до головы сплошной COM — кто и где его загибает?
                                                                                                              COM намного мощнее CORBA. Интересная политика его продвижения микрософтом — это уже несколько иная история.
                                                                                                                0
                                                                                                                вообще имеются данные что намного мощнее как раз CORBA хотя бы потому что работает не только на Win :-)
                                                                                                              0
                                                                                                              прекоммент: да кстати, ваш комментарий, ну совсем не в тему.

                                                                                                              1) корба есть (про dll ниже)

                                                                                                              2) ресурсы в линухе тоже загружаются по мере необходимости, даже от экзешника в памяти будет лежать только то что исполняется

                                                                                                              3) нет никакой проблемы, заменяйте наздоровье, в линухе совместимость dll (.so) обеспечивается версионированием. Если версия одинакова, то для приложений dll'ка абсолютно заменяемая. Запустили одно приложение со старой dll, во время работы обновили dll, новое приложение запустится с новой версией, старая будет работать со старой версией.

                                                                                                              3) В линухе можно переименовать запущенный файл, и даже переместить его и даже, о боже, удалить! И тоже он будет использовать все ресурсы которые ему нужны были для запуска. Файл в линухе удаляется с диска только после того как его освободили все приложения.

                                                                                                              microsoft не отказалась от виртуальной файловой системы ядра, и это никак не сковывало ей руки в новых технологиях
                                                                                                                +1
                                                                                                                1. Корба и COM — вещи сильно разные. COM (а имено — маршалинг) поддерживается на уровне OS. Замена DLL содержащей объект COM приведёт к краху. Поясняю — COM объект исполняющий код может быть один. А вот пользовательских объектов которые с ним работают может быть много. и хранится всё это в одном файле. Если у вас имеется созданый объект COM, а потом вы пытетесь к нему обратится из объекта другйо версии — это приведёт к краху или загадочным глюкам.
                                                                                                                2. Именно, но кривые руки периодически пытаются обратится к ресурсам «вручную» — через повтроное открытие файла. Как правило этого можно избежать, но решение не всегда тривиальное.
                                                                                                                3. DLL при загрузке её приложением может выполнять некие действия. Есть функции DLL которые автоматически Вызываются системой при её загрузке приложением. Причём эти функции различны для первой загрузки ипоследующих — очень, кстати, удобно.Если вы заменили DLL, то при последующей загрузке она опять попытается произвести некоторую инициализацию — а такого быть не должно! Да, и кроме этого там много интересных эффектов возникает.
                                                                                                                4. Это прекрасно. Как вы думаете если Windows позволяет переименовать используемый файл, сложно ли было добавить возможность его удаления?
                                                                                                                  +1
                                                                                                                  1. в данном примере проблемы реализации COM пытаются привестись как приемущества?

                                                                                                                  2. что значит кривые руки? в винде тоже можно обратиться «вручную», в чем проблема?

                                                                                                                  3. опять же — проблемы реализации пытаются привести как приемущество?

                                                                                                                  4. у вас в руках черный ящик, вы обнаружили что черный ящик может выполнять действие A только при некоторых условиях, с чего вы решили что этот черный ящик очень прост для переделки выполнения А при всех условиях?
                                                                                                                0
                                                                                                                Как-то ваш ответ сам себе противоречит. Вы прочитайте что вы написали:
                                                                                                                Просто пример — запустите в Windows любой исполняемый файл. А теперь переименуйте его. Фокус-покус! Файл перименовался! Причём файл не просто продолжает работать, но и может использовать ресурсы.
                                                                                                                А теперь
                                                                                                                вы волшебным образом подменяете файл используя волшебную силу
                                                                                                                переименования файлов — что дальше произойдёт? А вот все возможные ваши беды и произойдут.
                                                                                                                Microsoft сознательно отказалась от идеи виртуальной файловой системы ядра, так, как развязывало ей руки в применении множества других перспективных технологий.
                                                                                                                Каких именно? Какая именно технология существенным образом опирается на невозможность «удаления» открытого файла? И почему это не мешает им работать в WINE? Или может речь идёт о каких-то суперсекретных технологиях, которые WINE никак может скопировать из-за того, что Linux не использует гениального подхода Microsoft?
                                                                                                                  +1
                                                                                                                  На тот момент времени возможность удаления файлов на лету, во-первых, сильно усложняло систему, во-вторых создавало дополнительные трудность с COM, которую делала ставку MS. На данный момент это пердставляет никаких бролем, но очень дорго из-за проблем с соместимостью. MS — коммерческая котора и руководствуется прежде всего экономической целесообразность. ЗАчем делать то, что не выгодно? На тот момент это было не выгодно. Выгодно ли это сейчас — только микрософт знает
                                                                                                                  +2
                                                                                                                  Чувак, glibc обновляется БЕЗ перезагрузки.
                                                                                                                    0
                                                                                                                    xpcom
                                                                                                                      0
                                                                                                                      Если автор программы считает, что переименование dll вызовет крах системы, он может использовать flock.
                                                                                                                    +3
                                                                                                                    Чуда не случилось потому что нужно было поддерживать совместимость. В Linux и FAT и NTSC ведут себя как любая обычная файловая система…

                                                                                                                    Просто когда в файловой системе у одного файла может быть только одно имя то идея что «блокировка файла == блокировка имени» не кажется странной.
                                                                                                                      +2
                                                                                                                      > В Linux и FAT и NTSC ведут себя как любая обычная файловая система…
                                                                                                                      NTFS наверное, NTSC — вроде как система аналогового телевидения :)
                                                                                                                    +1
                                                                                                                    >Главное: если программа открыла файл и даже если она сделала это в эксклюзивном режиме — на права доступа к записи в каталоге это не распространяется.

                                                                                                                    Мне непонятно — вот программа открыла файл в эксклюзивном режиме, мы его удалили или перезаписали, после чего эта программа, у которой он всё еще открыт в эксклюзивном режиме, пытается из него что-то прочитать, или в него что-то записать. Что произойдёт? Данные пойдут в inode, которое больше не ассоциируется с этим именем файла и будет при первой возможности стёрто? Программа должна проверять какие-то флаги файла перед записью, типа что он не удалён?
                                                                                                                    • UFO just landed and posted this here
                                                                                                                        +1
                                                                                                                        программа сможет свободно писать и читать из него. inode останется в живых, пока программа не закроет файл.
                                                                                                                        Т.е. запись в каталоге про этот файл удалится сразу. А вот сам файл — только тогда, когда программа его закроет.

                                                                                                                        Может кого-то путает терминология. Так что поясню на всякий случай — каталог (или «папка» в терминологии Microsoft) — это на самом деле просто специальный файл, который хранит список файлов «содержащихся в» этом каталоге.
                                                                                                                        При удалении файла отдельно удаляется запись в каталоге и отдельно сам файл (т.е. данные, которые в нем содержаться). По крайней мере так происходит в *nix
                                                                                                                          0
                                                                                                                          А такой метод не имеет собственных проблем, отличных от тех, что есть в Windows?
                                                                                                                            0
                                                                                                                            Потенциально прога удалившая файл не сможет его занового создать в случае если место на диске кончилось. Но это клиника, забивать диск под завязку плохо по множеству причин (к примеру с точки зрения фрагментации диска).
                                                                                                                              0
                                                                                                                              Конечно имеет! Например что будет если программа на вашем компьютере открыла файл на машине соседа… и повисла… вместе с вашим компом! Имя же файла было удалено — что тут делать? Когда файл-то удалять? Собственно потому SHARE.EXE и делает то, что он делает: если программа с машины соседа заблокировала файл и умерла вместе с машиной соседа — то вам достаточно перезагрузиться и всё будет Ok. Потерянного места не будет. Но за 10 лет эксплуатации Unix (а теперь уже за 40 лет) было выяснено что эти недостатки не перевешивают достоинств…
                                                                                                                            0
                                                                                                                            >вот программа открыла файл в эксклюзивном режиме

                                                                                                                            открыта inode этого файла

                                                                                                                            >мы его удалили или перезаписали

                                                                                                                            удалили или перезаписали метку в таблице размещения файлов

                                                                                                                            >после чего эта программа, у которой он всё еще открыт в эксклюзивном режиме, пытается из него что-то прочитать…

                                                                                                                            и прочитает inode

                                                                                                                            >… или в него что-то записать [skipped] Данные пойдут в inode, которое больше не ассоциируется с этим именем файла и будет при первой возможности стёрто?

                                                                                                                            если файловая запись была удалена — она будет создана заново. если имела место замена на другой файл — сабжевый будет сохранен под именем file~
                                                                                                                            +5
                                                                                                                            А я просто скажу Спасибо автору за интересную статью: Р
                                                                                                                              +2
                                                                                                                              ну, 1-е — вообще — то, первая DOS, которую MS впарили IBM разрабатывалась совсем не Гейтсом! Поэтому что там и как было изначально теперь не разобрать чьи просчёты как программистов, не с точки зрения маркетинга!
                                                                                                                              2 — думаете сама MS не пересматривала свой взгляд на такие вещи как перестрой архитектуры? Мне кажется что в Майкрософте и рады бы внести изменения, но они не могут!!! Потому что это означает конец обратной совместимости, палка в колесо как разработчикам софта так и, в большей степени, — конечным пользователям! Они ведут разработку другой ОС, не связанной с Windows — Microsoft Singularity, как вы, наверное уже знаете, где таких проблем, в принципе, не должно быть.
                                                                                                                              3 — пользуюсь на работе Windows Vista, дома — Windows 7, требования перезагрузки встречаю ооочень редко, только после обновления в основном, а большинство программ даже требуя перезагрузки запускаются и без оной (как пример сегодня ставил на рабочую станцию .Net 3.5 SP1, потребовала перезагрузки, но приложения использующие её запустились без таковой!).
                                                                                                                                0
                                                                                                                                Вполне верно, DOS была продуктом Сиэттл Компьютерс, а у Майкрософта повидимому не было времени очень дорабатывать систему.
                                                                                                                                Вся история Майкрософта состоит из жестких дедлайнов. А это не полезно любой системе.
                                                                                                                                Вспомните, в какой спешке они создавали Windows, что бы успеть к выходу Макинтоша, как все последующие версии создавались в спешке. Из за спешки и глупостей поломали висту.
                                                                                                                                  +1
                                                                                                                                  Вся история ИТ-индустрии состоит из сплошных и жутких дедлайнов. Начиная от IBM System/360 и заканчивая тем же iPhone. Все сплошные дедлайны. Если б их не было, то не было бы очень и очень многих продуктов.
                                                                                                                                    +4
                                                                                                                                    Особенность индустрии. Но ИМХО Майкрософт всегда выкручивалась из них в убыток качеству.
                                                                                                                                      –2
                                                                                                                                      Победителей не судят :)
                                                                                                                              • UFO just landed and posted this here
                                                                                                                                  +1
                                                                                                                                  Требует перезагрузки только апдейты либо безопастности, либо quicktime, ну и ядра. Остальное разве требует?
                                                                                                                                  • UFO just landed and posted this here
                                                                                                                                      0
                                                                                                                                      Потому что для тайгера обновлений выходит меньше, ибо система уже устарела и на новые компьютеры более не предустанавливается
                                                                                                                                      0
                                                                                                                                      safari ещё, и мб java.

                                                                                                                                      а iLife'у с iWork'ом не положено, ведь апдейты офиса, или там defender'а под виндой тоже перезагрузки не просят.
                                                                                                                                      +1
                                                                                                                                      не все. толко системные и секьюрити апдейты.
                                                                                                                                        +1
                                                                                                                                        да именно секьюрити апдейты и заставляют ребутиться. сам замечал, что если нету критических, то система работает дальше
                                                                                                                                      +4
                                                                                                                                      Так вот откуда растут ноги у «перезагружабельности» Windows! Познавательно, спасибо!
                                                                                                                                      С учетом того, что решение имеет 20ти летнюю историю — рефакторинг производить немного поздновато?
                                                                                                                                        0
                                                                                                                                        а почему mac os x часто тоже ребута после апдейтов просит?
                                                                                                                                          0
                                                                                                                                          В OS X перезагрузка требуется только тогда, когда:
                                                                                                                                          1. Меняется ядро или его расширения — замена происходит при перезагрузке
                                                                                                                                          2. Апдейты фирмварей — производятся при запуске EFI и запускаются из EFI раздела.
                                                                                                                                            +1
                                                                                                                                            а квиктайм и сафари — это ядро или его расширения?
                                                                                                                                              0
                                                                                                                                              Сафари не скажу, а вот QT — опирается на ядро и Quartz-расширение оного. Откуда, по-вашему, такая нативная(проще говоря, мега-стремительная) работа с H.264 ?!
                                                                                                                                                +1
                                                                                                                                                ээ… я, честно говоря, не замечал мега-страмительной скорости работы с H.264…
                                                                                                                                                вот в новых буках — да, используется видеокарта для ускорения…
                                                                                                                                          +2
                                                                                                                                          Меня больше интересует связана ли «ошибка в ДНК» системы с «ошибкой в ДНК» людей, которые пишут под нее приложения и всячески способствуют ее распространению…
                                                                                                                                            0
                                                                                                                                            Money, money, money… Вы думаете, работники ВАЗа задумываются над тем, что они делают…
                                                                                                                                            Есть работа, а есть религия.
                                                                                                                                              0
                                                                                                                                              Безусловно, как-то так. Система вынуждает многих писать свои приложения под известную платформу.
                                                                                                                                              Но все-таки есть религия, а есть здравомыслие.
                                                                                                                                                0
                                                                                                                                                А здравомыслие большинства людей заключается в обеспечении пропитания семье, а не в защите абстрактных ценностей :).
                                                                                                                                                Ну, и… вы можете не верить… я сам в это верю с трудом :), но есть люди, которым именно что нравится писать «под неё приложения» :) :)
                                                                                                                                              –2
                                                                                                                                              Т.е. самая популярная ОС совершивашая революцию в использовании персональных компьютеров написана людьми с «ошибкой в ДНК». Не ошибаются только те, кто ничего не делают :) А распространение она получила сугубо благода магии Вуду и жертвоприношениям младенцев? Видимо, нужно было сидеть в консоли, плясать с бубном вокруг каждой программы, а софт писать сугубо на кошерном C.
                                                                                                                                                +1
                                                                                                                                                Не они совершили эту революцию…
                                                                                                                                                  0
                                                                                                                                                  Но зато они хорошо на ней заработали! Собственно чего у Microsoft не отнять — так это умения доводить до ума чужие идеи и получать на них прибыль. А что реализация получается хуже чем у оригинала — так это путём грамотного маркетинга несложно компенсировать…

                                                                                                                                                  Сравните Microsoft Word и Wordperfect, сравните MacOS и Windows, сравните что угодно — и увидите что всё что делает Microsoft хуже чем то, что делают другие, но оно появляется на рынке чуть раньше, стоит чуть дешевле, выглядит чуток покрасивше или просто лучше работает с другими технологиями, разработанными Microsoft — за счёт чего и завоёвывает популярность. Причём зачастую определяющим фактором является последний.

                                                                                                                                                  Почему с дизайном файловых систем что-либо должно быть по-другому?
                                                                                                                                                  0
                                                                                                                                                  если коротко, то да :-)
                                                                                                                                                0
                                                                                                                                                может я ошибаюсь, но мне казалось, что основная проблема необходимости перезагрузки после установки ПО кроется не в свойствах файловой системы и системе разделения доступа к файлам, а в механизме dll (so в unix). Или я не прав?
                                                                                                                                                  –1
                                                                                                                                                  А изменения в реестре? Нормально написанный софт вообще не волнует проблема dll.
                                                                                                                                                    0
                                                                                                                                                    я не большой знаток нутра Windows, но все таки куча софта делает изменения в реестре, и при этом не заставляет перезагружаться. Часто виста перегружается, когда ставит критические обновления, и обновляет она системные dll… в этом случае, если идет замена системных dll, разве есть другой способ обновления, без перезагрузки?
                                                                                                                                                      +1
                                                                                                                                                      Я, наверное, неправильно выразился. Под софом имелся в виду прикладной, а не сама ОС.

                                                                                                                                                      >в этом случае, если идет замена системных dll, разве есть другой способ обновления, без перезагрузки?

                                                                                                                                                      Ну, в принципе, софт, запущенный после апдейта, может начинать пользоваться новой версией библиотеки. Запущенный до — жить со старой, загруженной в память. Зачем ребут? На всякий случай?
                                                                                                                                                        0
                                                                                                                                                        а если он сам обновил системную библиотеку? :) например, msvcrt*.dll? такого софта мало, но он все таки есть… кстати, мсофис, по-моему, не требует перезагрузки
                                                                                                                                                          0
                                                                                                                                                          Не требует.
                                                                                                                                                          >>а если он сам обновил системную библиотеку? :) например, msvcrt*.dll?

                                                                                                                                                          а зачем он это делает? если она ему нужна для работы — кладите в папочку с собой и пользуйтесь. или ностальгия по dll-hell? :)
                                                                                                                                                            0
                                                                                                                                                            ну это уже вопрос скорее к производителю софта, а не к архитектуре Windows :)
                                                                                                                                                            +2
                                                                                                                                                            Какая разница кто и что обновил? Принцип тот же: что было запущено пока старая версия была «жива» — использует старую версию библиотеки, что после — уже новую. Могут пострадать только программы, которые постоянно загружают и выгружают библиотеки — но их не так много.
                                                                                                                                                              –1
                                                                                                                                                              за прошедший год не было ни единого разрыва, ни единого ребута, ни единой перезагрузки приложений… было установлено 10 новых версий системной библиотеки… только вот память стала подводить — её всё меньше и меньше… ибо запущенные 20 приложений юзают 10 её версий одновременно и они, каким-то чудесным и непостижимым образом, друг с другом совершенно не конфликтуют…
                                                                                                                                                                +1
                                                                                                                                                                10 версий системной библиотеки — это порядка 10MB памяти (если считать только «горячий» код, загруженный в память). Вы реально верите что вы почувствуете потерю такого количества памяти на компьютере где её объёмы меряются гигабайтами? И да — ничто ни с чем не конфликтует. И ничего непостижимого тут нет. Эти 10 версий отличаются друг от друга минимально: там функция исправлена, тут функция добавлена. Вам не нужно ждать пока изменений накопится дофига и больше или собирать ежемесячные сборники обновлений, чтобы обновлять системные библиотеки: если обнаружена ошибка, исправь, не жди!
                                                                                                                                                                  –1
                                                                                                                                                                  нет, не так. 10 версий системной библиотеки — это в 10 раз увеличившееся потребление памяти. а библиотека в системе не одна — их много. и если не думать о мегабайтах — гигабайтов начинает быстро нехватать.
                                                                                                                                                                  новые версии — это далеко не только латание дыр.
                                                                                                                                                                    +1
                                                                                                                                                                    а библиотека в системе не одна — их много
                                                                                                                                                                    Это уменьшает проблему, а не увеличивает.
                                                                                                                                                                    10 версий системной библиотеки — это в 10 раз увеличившееся потребление памяти
                                                                                                                                                                    С чего вдруг? Если в вашей системе код занимает большую часть памяти, то вы что-то делаете не так. В большинстве современных систем код занимает не так много, основная часть — это данные. Плюс большинство библиотек после 10 upgrade'ов будут иметь в памяти 2-3 версии, а не 10. Ибо чтобы у вас получилось 10 версий библиотеки вам нужно как минимум 10 программ, которые перезапускаются в разное время. Что это за программы и откуда у вас в системе образовался такой бардак? Обычно речь идёт в /sbin/init и тому подобных демонах (которые запускаются один раз и работают до перезагрузки системы), обычных демонах (типа MySQL и Apache), которые перезапускаются скопом после обновления библиотек и программах, которые запускаются из скриптов. Итого — 2-3 версии библиотеки и то если вам сильно не повезёт.
                                                                                                                                                                    и если не думать о мегабайтах — гигабайтов начинает быстро нехватать.
                                                                                                                                                                    Насколько быстро? Вы проводили измерения? Некоторые библиотеки обновляются часто (10-20 раз в год), но среднее количество обновлений — весьма мало (пресловутый закон Паретто), так что ваша проблема — высосана из пальца.
                                                                                                                                                                    новые версии — это далеко не только латание дыр.
                                                                                                                                                                    Та же самая история. 80-90% «новых» версий — это именно латание дыр. А в тех редких случаях когда версия кардинально отличается — можно и систему перезагрузить. Цель ведь состоит не в том, чтобы избежать перезагрузок любой ценой, а чтобы снизить потери от них! Каждая перезагрузка — это потеря времени, сил и денег, но если для отказа от перезагрузки требуется «горы свернуть» — то можно систему и перезагрузить, криминала тут нет. Простое решение используемое в *nix-системах позволяет отказаться от 90% перезагрузок легко и до 99% — если в вашем случае перезагрузки — действительно большая проблема, но отказ от 100% перезагрузок на повестке дня не стоит.
                                                                                                                                                    +3
                                                                                                                                                    Странно, у меня наоборот ощущение, что суси линукс требует перезагрузку намного чаще, чем просила бы виста. А в висте перезагрузка нужна только на апдейты, которые ставятся автоматом и несрочно, соотвественно ненапряжно.
                                                                                                                                                      0
                                                                                                                                                      На что сузя просит ребута? Я серьезно спрашиваю, ибо последний раз видел ее во времена 8.0
                                                                                                                                                        +2
                                                                                                                                                        Ну, на апдейты из SLED10 репозитория вообще часто требует ребута. Например пытался тут вебкамеру подключить, тоже ребут потребовался. С русификацией когда игрался, тоже ребут часто требовался, абсолютно для меня в удивительных местах. Еще какие-то мелочи, которые сейчас не вспомню. Например, изменение разрешения экрана внешнего монитора, тоже часто криво проходит, только ребут спасает.

                                                                                                                                                        Какието такие базовые вещи, которые в винде в жисть не подумаешь, что ребута потребовать могут.
                                                                                                                                                          +4
                                                                                                                                                          жесть какая. энтерпрайзненько — ребутаться ради modprobe.
                                                                                                                                                            0
                                                                                                                                                            Ну вот сегодняшний практический пример, ставлю я алсу.
                                                                                                                                                            www.linlap.com/wiki/Configuring+the+audio+and+updating+ALSA+for+SuSE-OpenSuSE+10.3#configuring+the+audio+and+updating+alsa+for+suse-opensuse+10.3

                                                                                                                                                            Вот мне как пользователю удивительно, что тут необходим рестарт.
                                                                                                                                                              0
                                                                                                                                                              Если кто-то написал, что рестарт нужен — это ещё не говорит о том, что он действительно нужен.

                                                                                                                                                              Тут на Хабре тоже кто-то советовал после сборки модуля на wifi перезапускать иксы — но это же не говорит о том, что этот рестарт необходим ;)

                                                                                                                                                              Я уже молчу про make install в пакетном дистрибутиве, что лично меня заставляет усомниться в квалификации автора статьи по приведённой Вами ссылке.
                                                                                                                                                                0
                                                                                                                                                                Я уже молчу про make install в пакетном дистрибутиве
                                                                                                                                                                <irony>Ну не умеет автор хауту собирать пакеты, и что yum — это не только install не подозревает; так что теперь — гайды не писать, что ли?</irony>
                                                                                                                                                                  0
                                                                                                                                                                  Вот после таких вот гайдов народ и начинает думать, что линуксу нужна перезагрузка после установки алсы.
                                                                                                                                                      • UFO just landed and posted this here
                                                                                                                                                          +1
                                                                                                                                                          При обновлении ядра убунта говорит: «ну, как бы эта… Можно и перезагрузиться» :) А можно и не перезагрузиться :) Можешь работать на прежнем ядре сколько влезет.

                                                                                                                                                          Я обычно когда приходит обновление ядра просто его ставлю, а загружаюсь в него уже только на следующий день.
                                                                                                                                                            0
                                                                                                                                                            Вот винда как раз настаивает. Каждые 15 минут (или сколько там) бросается окошком «Рекомендоваю перезагрузиться!». Здорово мешает, да.
                                                                                                                                                            –1
                                                                                                                                                            Помнится, на рабочем сервере переразбивал(изменял размеры, добавлял новые разделы) несколько разделов.
                                                                                                                                                            Перезагрузку не пришлось делать.
                                                                                                                                                            Так что не вижу причин перезагрузки linux, кроме как смена ядра.
                                                                                                                                                              0
                                                                                                                                                              Есть технологии, позволяющие и сменить ядро на ходу.
                                                                                                                                                                0
                                                                                                                                                                Ресайзить смонтированную файлуху иногда опасно.
                                                                                                                                                                  0
                                                                                                                                                                  а и не получится )
                                                                                                                                                                  ресайзил, предварительно отмонтировав
                                                                                                                                                                    +1
                                                                                                                                                                    Online resizer есть только для некоторых файловых систем. Btrfs обещает решить эту проблему, но когда она ещё выйдет…

                                                                                                                                                                    А на AIX это всё работало уже 10 лет (а может и 20 — я не помню сколько тел было железяке в которой мы «на ходу» меняли винт) назад…
                                                                                                                                                                      0
                                                                                                                                                                      XFS _надо_ ресайзить смонтированой! The filesystem must be mounted to be grown.
                                                                                                                                                                        0
                                                                                                                                                                        Я знаю. Но я бы не рискнул держать корень на XFS, зная, как она может рассыпаться от потери питания.
                                                                                                                                                                        И я не писал, что опасно всегда.
                                                                                                                                                                  –5
                                                                                                                                                                  Да чего тут разграгольствовать?! Автору спасибо за статью, под утреннюю чашку кофе хорошо легла. В программерской деятельности не сталкивался с необхожимостью ребута, но, конечно наблюдал этот эффект…

                                                                                                                                                                  P.S. Так было, есть и будет Microsoft — позади планеты всей. Только и умеют, что совать нос в прибыльные отрасли, каждый раз поража какой-то недоработкой. Я не то, чтобы критикую их. В конце-концов есть же альтернативы… Но нехорошо, лидер индустрии и каждый раз тапком в г****. Вот если бы Google так делала, вот бы шороху было… :)
                                                                                                                                                                  • UFO just landed and posted this here
                                                                                                                                                                    • UFO just landed and posted this here
                                                                                                                                                                      • UFO just landed and posted this here
                                                                                                                                                                        • UFO just landed and posted this here
                                                                                                                                                                        +4
                                                                                                                                                                        тсссс. На хабре микрософт сообщество сильное (ну или как минимум активное), надо молчать и сидеть в подполье. :) Улыбайтесь!
                                                                                                                                                                        • UFO just landed and posted this here
                                                                                                                                                                          +3
                                                                                                                                                                          Слышали слово «Singularity»? Это оно. Переписано с нуля. Только весь софт не совместим и нужно переписывать заново. Предложишь такое пользователям — все разбегутся. Скажут хотим чтобы работали наши старые программы.
                                                                                                                                                                          0
                                                                                                                                                                          Наверное самый поучительный пример.
                                                                                                                                                                            0
                                                                                                                                                                            отличный холиварный топик. так и хочется у каждого спросить, под каой ОС он тролит.
                                                                                                                                                                            и про «миллионные убытки» совсем непонятно.
                                                                                                                                                                            • UFO just landed and posted this here
                                                                                                                                                                                +1
                                                                                                                                                                                Думаю имеются в виду убытки связанные с down-time серверов которые работают на этой ОС.
                                                                                                                                                                                0
                                                                                                                                                                                Возможно, имеется ввиду потеря заказов на установку/покупку ОС в тех случаях, когда важна обновляемость, но недопустимы перезагрузки (некоторые серверные задачи, например).
                                                                                                                                                                                –15
                                                                                                                                                                                КГАМ, не читал.
                                                                                                                                                                                  +1
                                                                                                                                                                                  Думаю, что Майкрософт поступит правильно, резко оторвав задницу от разработки того самого Windows, за который тянется хвост из Доса. Apple поступила очень резко по мнению многих, похоронив девятку, а вскоре и ее эмуляцию. Как выяснилось, это оказалось к лучшему. Черт знает, во что выльется Сингулярити, но думаю, что категорически отказавшись от «хвоста», а возможно и от совместимости, у них получится отличный продукт.
                                                                                                                                                                                    +1
                                                                                                                                                                                    Удерживать 90% рынка это совсем не то же, что удерживать 9% рынка.
                                                                                                                                                                                    То есть на бытовом уровне, те ходы, которые может себе позволить ларек на остановке, будут неприемлемы для районного гипермаркета.

                                                                                                                                                                                    P.S. Линукс выносим за скобки, считая рынком только то, что продается за деньги.
                                                                                                                                                                                    +2
                                                                                                                                                                                    «не будет адалён»
                                                                                                                                                                                    опечатка

                                                                                                                                                                                    На тему холивара:
                                                                                                                                                                                    На компе стоит Mandriva, иногда после апдейтов просит перезагрузить иксы, ничего страшного в этом нет
                                                                                                                                                                                    На ноуте стоит виста, иногда требует ребута, но ничего, мне не жалко)
                                                                                                                                                                                      +1
                                                                                                                                                                                      Автор забыл сказать, что перезагрузка нужна в общем-то не для затирания файла (что можно сделать в любой ФС), а для того что бы все заинтересованные приложения получили обновленные версии файлов.

                                                                                                                                                                                      И никакой ошибки в работе с ФС нет — есть отдельные криворукие программисты, пишущие прикладной софт.
                                                                                                                                                                                        +1
                                                                                                                                                                                        >Автор забыл сказать,
                                                                                                                                                                                        Нет, вы просто не поняли что он хотел сказать :)
                                                                                                                                                                                        >не для затирания файла (что можно сделать в любой ФС)
                                                                                                                                                                                        В том-то и дело, что нельзя. Эксклюзивно открытый файл нельзя затереть в любой нормальной системе, но в венде его ещё и нельзя подменить, поскольку у них файл == имя файла.
                                                                                                                                                                                        >а для того что бы все заинтересованные приложения получили обновленные версии файлов
                                                                                                                                                                                        Ага. И для этого достаточно создать новый файл с тем же именем (а старое имя удалить) — то есть подменить файл. Но венда этого делать не позволяет, поэтому приходится перегружаться.
                                                                                                                                                                                          +2
                                                                                                                                                                                          Я прекрасно все понял — автор считает, что принципы работы с ФС в одной ОС являются «багом».

                                                                                                                                                                                          Все претензии в итоге сводятся к тому, что нельзя подменить эксклюзивно открытый файл. Однако само по себе «можно» или «нельзя» это не плюс или минус конкретной ОС, это особенности ее реализации.

                                                                                                                                                                                          К примеру, замена эксклюзивно открытой библиотеки может привести к непредсказуемым сбоям. Приложение A имеет в памяти версию 1.0, а приложение B, запущенное позднее — версию 1.5. Что произойдет, если приложения взаимодействуют друг с другом? Правильно — НЛО его знает что…

                                                                                                                                                                                          Единственный способ корректно провести замену библиотеки во всех приложениях, это перезагрузка всех приложений. То есть — перезагрузка ОС.

                                                                                                                                                                                          Если у вас есть другое решение — предложите.
                                                                                                                                                                                            +1
                                                                                                                                                                                            Про то почему это не «особенность», а минус — в статье тоже описано. В вашем гипотетическом случае дело ограничется (возможно, а возможно и так пройдёт) рестартом этих двух приложений. При более чем двух последовательных инсталяциях в венде есть неслабый шанс получить вообще неработоспособную систему (перекроятся файлы из «очередей»). Бага там не только и не столько в необходимости перезагрузки на ровном месте, а именно этом.
                                                                                                                                                                                              0
                                                                                                                                                                                              «В вашем гипотетическом случае дело ограничется (возможно, а возможно и так пройдёт) рестартом этих двух приложений»

                                                                                                                                                                                              Не двух — а всех, так или иначе использующих библиотеку. В т.ч. системных сервисов — что по-сути и есть рестарт все системы.

                                                                                                                                                                                              «При более чем двух последовательных инсталяциях в венде есть неслабый шанс получить вообще неработоспособную систему „
                                                                                                                                                                                              Только эта проблема к ФС никакого отношения не имеет.

                                                                                                                                                                                              “Бага там не только и не столько в необходимости перезагрузки на ровном месте, а именно этом. „
                                                                                                                                                                                              Баги нет — потому что единственный способ ГАРАНТИРОВАННО обеспечить стабильность системы это как раз перезагрузка после обновления отдельных системных модулей, а не тихая подмена исполняемых модулей без ведома приложених, их использующих

                                                                                                                                                                                              У вас есть другое решение? Поделитесь пожалуйста.

                                                                                                                                                                                                0
                                                                                                                                                                                                Баги нет — потому что единственный способ ГАРАНТИРОВАННО обеспечить стабильность системы это как раз перезагрузка после обновления отдельных системных модулей, а не тихая подмена исполняемых модулей без ведома приложених, их использующих.
                                                                                                                                                                                                Не пишите чепухи. Единственный способ ГАРАНТИРОВАННО обеспечить стабильность системы — это писать модули так, чтобы версия 1.0 и версия 1.5 были совместимы. Если же этого нет, то кто гарантирует что ваше ненаглядное приложение A вообще сможет стартовать после замены библиотеки 1.0 на библиотеку 1.5?

                                                                                                                                                                                                У вас есть другое решение? Поделитесь пожалуйста.
                                                                                                                                                                                                От вас жду того же — расскажите мне, идиоту, как перезагрузка сможет вдруг сделать библиотеку 1.5 совместимой с 1.0 если без перезагрузки она с ней несовместима. И как часто такое случается на практике.
                                                                                                                                                                                                  0
                                                                                                                                                                                                  «писать модули так, чтобы версия 1.0 и версия 1.5 были совместимы. Если же этого нет, то кто гарантирует что ваше ненаглядное приложение A вообще сможет стартовать после замены библиотеки 1.0 на библиотеку 1.5?»

                                                                                                                                                                                                  Речь не о взаимодействии приложения с модулями версии 1.0 и 1.5. Речь о взаимодействии ОДНОВРЕМЕННО ЗАГРУЖЕННЫХ модулей версии 1.0 и 1.5 с системой и друг с другом.

                                                                                                                                                                                                  «расскажите мне, идиоту, как перезагрузка сможет вдруг сделать библиотеку 1.5 совместимой с 1.0 если без перезагрузки она с ней несовместима»
                                                                                                                                                                                                  Вы неправильно поняли условия задачи. 1.5 совместима с 1.0 (иначе это не обновление, а хз что) — только вот приложение, в которое загружена 1.5, будет портить данные, передаваемые из приложения с модулем 1.0.

                                                                                                                                                                                                  Именно поэтому нельзя обновлять систему постепенно, не закрывая работающие приложения. Обновить вы обновите — но стабильность под вопросом.
                                                                                                                                                                                                    0
                                                                                                                                                                                                    Вы неправильно поняли условия задачи. 1.5 совместима с 1.0 (иначе это не обновление, а хз что) — только вот приложение, в которое загружена 1.5, будет портить данные, передаваемые из приложения с модулем 1.0.
                                                                                                                                                                                                    То есть вы обеспечиваете совместимость ABI, но не совместимость с порождаемыми данными? Бред какой-то. В 90% (если не в 99%) случаев бывает наоборот. Ибо иметь 2, 3, да даже 10 библиотек в системе — не проблема (посмотрите на количество версий msvcrt в последних версиях Windows или на количество версий libdb в *nix), а вот данные — часто собираются годами.

                                                                                                                                                                                                    Именно поэтому нельзя обновлять систему постепенно, не закрывая работающие приложения. Обновить вы обновите — но стабильность под вопросом.
                                                                                                                                                                                                    Когда вы обновляете библиотеки — стабильность всегда под вопросом. Но возможность сделать это «на ходу» позволяет (и очень часто позволяет) уменьшить downtime.
                                                                                                                                                                                                      0
                                                                                                                                                                                                      «То есть вы обеспечиваете совместимость ABI, но не совместимость с порождаемыми данными?»
                                                                                                                                                                                                      Вы путаете внешний интерфейс библиотеки, и ее реализацию.

                                                                                                                                                                                                      Внешний интерфейс очевидно не изменяется, обеспечивая обратную совместимость. Но вот реализация библиотеки может (и наверняка будет — мы же что-то обновили) иной.

                                                                                                                                                                                                      И когда в системе взаимодействуют несколько разных реализаций одной и той же библиотеки (причем в роизвольных комбинациях) — жди беды.

                                                                                                                                                                                                      «посмотрите на количество версий msvcrt в последних версиях Windows или на количество версий libdb в *nix»
                                                                                                                                                                                                      Вы уходите в сторону — если библиотеки имеют разные имена, то никаких проблем с ФС нет в принципе. Не надо путать описанный мной сценарий с DLL-hell

                                                                                                                                                                                                      «Но возможность сделать это «на ходу» позволяет (и очень часто позволяет) уменьшить downtime.»
                                                                                                                                                                                                      Вы не поверите — возможность обновить библиотеку «на ходу» есть и в винде. Речь идет лишь о том, что это крайний случай, и подобные трюки необходимо использовать с большой осторожностью.
                                                                                                                                                                                                        0
                                                                                                                                                                                                        Речь идет лишь о том, что это крайний случай, и подобные трюки необходимо использовать с большой осторожностью.
                                                                                                                                                                                                        Если это — крайний случай, то его никто не будет тестировать и отлаживать, а обновления будут копиться ибо нельзя же перезагружать комп каждый час! Так и до несовместимости можно дойти. Если же это штатный способ, который применяют миллионы — то об этом разработчики должны додуматься и сделать всё «как надо». Что вовсе не так сложно, как вам кажется.

                                                                                                                                                                                                        Внешний интерфейс очевидно не изменяется, обеспечивая обратную совместимость. Но вот реализация библиотеки может (и наверняка будет — мы же что-то обновили) иной.

                                                                                                                                                                                                        И когда в системе взаимодействуют несколько разных реализаций одной и той же библиотеки (причем в роизвольных комбинациях) — жди беды.
                                                                                                                                                                                                        С чего вдруг? Внутри процесса всегда работает одна версия библиотеки (загрузчик просто не будет загружать уже загруженную библиотеку), там конфликтов не будет, а если ваша библиотека имеет другой интерфейс с вшеним миром, то с какого перепугу она имеет тот же номер?
                                                                                                                                                                                                  +2
                                                                                                                                                                                                  «Не двух — а всех, так или иначе использующих библиотеку. В т.ч. системных сервисов — что по-сути и есть рестарт все системы.»
                                                                                                                                                                                                  Вы знаете, я много лет работаю на линуксе и описаное вами происходило от силы раза два, если происходило вообще. В конце-концов, можно и перезагрузиться, если очень надо, но для этого должны быть действительно веские причины, а не установка какого-нибудь банального драйвера принтера. Сейчас в линуксах даже ядро можно патчить без перезагрузок. Ну, ей богу, всё уже сто лет как есть и всё уже давно и прекрасно работает. Там выше кто-то писал, что перелез с кде3 на кде4 не выходя из кде. Вот это могучий человек! :)

                                                                                                                                                                                                  «Только эта проблема к ФС никакого отношения не имеет. „
                                                                                                                                                                                                  Верно. К ФС не имеет. Имеет отношение к баге в ДНК :).

                                                                                                                                                                                                  “Баги нет — потому что единственный способ ГАРАНТИРОВАННО обеспечить стабильность системы это как раз перезагрузка после обновления отдельных системных модулей»
                                                                                                                                                                                                  Угу. А мужики-то и не знают. Это единственный способ гарантированно обеспечить стабильность венды, — это верно. Из-за бага. Все остальные прекрасно обходятся просто подменой библиотек и, если уж край как нужно, перезапуском отдельных сервисов.

                                                                                                                                                                                                  «У вас есть другое решение? Поделитесь пожалуйста.»
                                                                                                                                                                                                  Да, вроде бы, всё в статье и описано. Повторюсь — сейчас сделана даже возможность патчить ядро линукса без перезагрузки. Это может быть важно в продакшене. Где минутный простой на перезагрузку означает огромные убытки. Я вообще-то с трудом могу представить ситуацию когда это было бы необходимо, но раз сделали, значит это кому-то нужно. Можно просто работать, а можно бесконечно вздыхать о мнимой невозможности этого. Ради чего? Ради веры в сомнительную непогрешимость микросовта? :)
                                                                                                                                                                                                    –4
                                                                                                                                                                                                    «Вы знаете, я много лет работаю на линуксе и описаное вами происходило от силы раза два»
                                                                                                                                                                                                    Типа если у вас нет СПИД'а то предохраняться не нужно? Согласитесь, странная логика.

                                                                                                                                                                                                    «В конце-концов, можно и перезагрузиться, если очень надо»
                                                                                                                                                                                                    Вы готовы заниматься анализом исходных кодов обновления, дабы точно установить — нужна перезагрузка, или нет?

                                                                                                                                                                                                    «установка какого-нибудь банального драйвера принтера»
                                                                                                                                                                                                    Установка принтера в винде уже давно-давно не требует перезагрузок. Не знаете — не пишите.

                                                                                                                                                                                                    «Ну, ей богу, всё уже сто лет как есть и всё уже давно и прекрасно работает»
                                                                                                                                                                                                    И винде все прекрасно работает. Но речь про ФС.

                                                                                                                                                                                                    «Все остальные прекрасно обходятся просто подменой библиотек и, если уж край как нужно, перезапуском отдельных сервисов»
                                                                                                                                                                                                    Вы видимо не в курсе — народ массово перезапускает иксы (вместе со ВСЕМИ приложениями) после обновлений, и т.п.

                                                                                                                                                                                                    Особенно умиляет показательно-небрежное отношение к своему времени — мол, если жахнет, то и фиг с ним.

                                                                                                                                                                                                    «Это может быть важно в продакшене. Где минутный простой на перезагрузку означает огромные убытки. „
                                                                                                                                                                                                    А теперь подумайте, сколько может стоить получасовое загаживание базы мусором вместо данных из-за подмены библиотеки, и вытекающих отсюда проблем.

                                                                                                                                                                                                    Мне повезло — на нашем движке работает mtv.com и иже с ним. Поэтому последствия “простой подмены» и дикий вой после развала продакшена мне хорошо знаком.
                                                                                                                                                                                                      +3
                                                                                                                                                                                                      >Типа если у вас нет СПИД'а то предохраняться не нужно? Согласитесь, странная логика.
                                                                                                                                                                                                      Странная логика — надевать презерватив на огурец, как в том анекдоте.
                                                                                                                                                                                                      >Вы готовы заниматься анализом исходных кодов обновления, дабы точно установить — нужна перезагрузка, или нет?
                                                                                                                                                                                                      Ага. Вероятно, я что-то делаю не так. Всё работает, но я что-то делаю не так. Аминь.
                                                                                                                                                                                                      >Установка принтера в винде уже давно-давно не требует перезагрузок. Не знаете — не пишите.
                                                                                                                                                                                                      Вы попросту врёте. Позавчера ставил дома на венду драйвер принтера — перезагрузка :(. Потом обнаружил, что забыл поставить драйвер сканера — ещё раз :(. Кучу времени на это барахло бездарно убил :( :(
                                                                                                                                                                                                      >Вы видимо не в курсе — народ массово перезапускает иксы (вместе со ВСЕМИ приложениями) после обновлений, и т.п.
                                                                                                                                                                                                      Я реально не в курсе. И опять что-то делаю не так :). Кстати, при перезапуске иксов далеко не все приложения перезапускаются. Я бы даже сказал, что только очень некоторые из запущенных у меня.
                                                                                                                                                                                                      >Особенно умиляет показательно-небрежное отношение к своему времени — мол, если жахнет, то и фиг с ним.
                                                                                                                                                                                                      Особо умиляет показательно-небрежное отношение к своему времени — перезагружаться после каждого драйвера принтера :(. Мои перезагрузки на работе — от ядра до ядра. Тратить время на всякий бред мне просто жалко.
                                                                                                                                                                                                      >А теперь подумайте, сколько может стоить получасовое загаживание базы мусором вместо данных из-за подмены библиотеки, и вытекающих отсюда проблем.
                                                                                                                                                                                                      Сломать палец можно даже ковыряя в носу. Если очень постараться. Но… зачем???
                                                                                                                                                                                                      >Поэтому последствия “простой подмены» и дикий вой после развала продакшена мне хорошо знаком.
                                                                                                                                                                                                      Наверное, это один из показателей качества вашей системы. :) А вы… это… перезагружаете сервера, после того, как обновляете гифчики на сервере? Это же ЕДИНСТВЕННЫЙ гарантированый способ убедиться, что ваш новый гифчик совместим со всеми приложениями, его использующими.
                                                                                                                                                                                            +1
                                                                                                                                                                                            Да? Если я хочу обновить к примеру user32.dll, который подгружен большинством процессов — мне это не удастся. Потому что он подгружен большинством процессов :)

                                                                                                                                                                                            А вот если бы было так как в Linux, то: мы удаляем старый user32.dll, но он остается открыт уже запущенными программами. А потом вместо него записываем новый.
                                                                                                                                                                                            Таким образом новозапущеные программы будут использовать новый файл, а те который уже работают — будут работать со старым.
                                                                                                                                                                                            Естественно, если в старом файле была какая-то ошибка связанная с безопасностью — то лучше перезагрузить систему, что бы все программы использовали новый файл.

                                                                                                                                                                                            Но если мы его обновляем просто из-за каких-то новых функций — то зачем перезапускать всё?
                                                                                                                                                                                              +1
                                                                                                                                                                                              «Таким образом новозапущеные программы будут использовать новый файл, а те который уже работают — будут работать со старым. „

                                                                                                                                                                                              Можно ли гарантировать стабильную работу системы в этом случае? Очевидный ответ — “нет», т.к. при тестировании обновлений невозможно проверить все возможные сочетания версий загруженных одновременно разными приложениями.

                                                                                                                                                                                              «Естественно, если в старом файле была какая-то ошибка связанная с безопасностью — то лучше перезагрузить систему, что бы все программы использовали новый файл»
                                                                                                                                                                                              Постарайтесь понять — что наличие в памяти двух (трех, десяти — в зависимости от количества запущенных установщиков) версий одной библиотеки в памяти это ОГРОМНАЯ проблема. Не столько с безопасностью, сколько со стабильностью.

                                                                                                                                                                                              «Но если мы его обновляем просто из-за каких-то новых функций — то зачем перезапускать всё? „
                                                                                                                                                                                              Потому что у вас нет гарантии, что СТАРЫЕ функции в данном модуле продолжают работать так же, как и раньше.

                                                                                                                                                                                              Поэтому при любых изменениях в коде любой проект всегда полностью пересобирается, и на нем заново прогоняются тесты.
                                                                                                                                                                                                0
                                                                                                                                                                                                Очевидный ответ — “нет», т.к. при тестировании обновлений невозможно проверить все возможные сочетания версий загруженных одновременно разными приложениями
                                                                                                                                                                                                Если исходить из этого критерия то стабильную работу системы вообще никогда нельзя гарантировать.

                                                                                                                                                                                                Постарайтесь понять — что наличие в памяти двух (трех, десяти — в зависимости от количества запущенных установщиков) версий одной библиотеки в памяти это ОГРОМНАЯ проблема.
                                                                                                                                                                                                Почему вдруг?

                                                                                                                                                                                                Потому что у вас нет гарантии, что СТАРЫЕ функции в данном модуле продолжают работать так же, как и раньше.
                                                                                                                                                                                                В этом случае менять старый модуль на новый вообще нельзя и вся обсуждаемая проблема не стоит выеденного яйца.

                                                                                                                                                                                                Поэтому при любых изменениях в коде любой проект всегда полностью пересобирается, и на нем заново прогоняются тесты.
                                                                                                                                                                                                Тесты заново прогнать — это завсегда полезно, но пересобирать-то зачем? Это ни в какие ворота не лезет — так только Microsoft делает и то только для Windows. При изменении системной библиотеки в Windows MS Office и MS Visual Studio никто заново не пересобирает.
                                                                                                                                                                                                  0
                                                                                                                                                                                                  >«Но если мы его обновляем просто из-за каких-то новых функций — то зачем перезапускать всё?»
                                                                                                                                                                                                  Потому что у вас нет гарантии, что СТАРЫЕ функции в данном модуле продолжают работать так же, как и раньше.


                                                                                                                                                                                                  Извините, а как в этом случае поможет перезагрузка? Если СТАРЫЕ функции перестали работать по-старому, то при перезагрузке (и, соответственно, задействовании новой версии с поломанными старыми функциями) всё как раз гарантированно сломается :)

                                                                                                                                                                                                  А вот если старые функции работают как и прежде, то всё будет работать и без перезагрузки, тихой подменой библиотеки, в то время как уже запущенные программы продолжают использовать старую версию.
                                                                                                                                                                                                    0
                                                                                                                                                                                                    «Извините, а как в этом случае поможет перезагрузка?»
                                                                                                                                                                                                    Речь идет о том, что в памяти одновременно живут старая и новая библиотеки. Их реализация может отличаться, равно как могут отличаться внутренние форматы данных, наборы вспомогательных компонентов и т.п.

                                                                                                                                                                                                    Как следствие — разного рода конфликты, ошибки при доступе к общим ресурсам, и т.п.

                                                                                                                                                                                                    «всё будет работать и без перезагрузки, тихой подменой библиотеки, в то время как уже запущенные программы продолжают использовать старую версию.»
                                                                                                                                                                                                    Библиотека существует не в вакууме. Она обращается к ОС, создает объекты ядра, выделяет память, что-то пишет в нее и т.п. И чем сложнее библиотека, тем больше вероятность коллизий.

                                                                                                                                                                                                    Простейший пример (если вы немножко в теме) — базовый адрес загрузки библиотеки в винде. Для многих нужд внутри исполняемого модуля требуются не просто относительные адреса (типа «прыгнуть отсюда вперед на 35 байт»), а полноценные логические адреса (для x86 — 32-х битные) — по которым расположен определенный код, либо данные. Поэтому при компиляции исполняемого модуля необходимо указывать его базовый адрес, скажем 0x40000000, по которому модуль будет загружен в память. В этом случае данные, расположенные по смещению 0x200 относительно начала файла, будут иметь виртуальный адрес 0x40000200.

                                                                                                                                                                                                    Все будет идеально работать до тех пор, пока ОС может загрузить модуль по этому адресу. Но что делать, если по нему уже загружен другой модуль? Ведь если наша библиотека получит базовый адрес 0x50000000, то сгенерированный компилятором адрес 0x40000200 будет мягко скажем навалидным…

                                                                                                                                                                                                    Для решения этой проблемы исполняемый файл МОЖЕТ иметь специальную секцию, содержимое которой после загрузки по другому базовому адресу позволит ОС «подкрутить» адреса внутри модуля, дабы избежать проблем.

                                                                                                                                                                                                    Однако если библиотеку делал недобросовстный программист, решивший сэкономить место с помощью купирования «ненужной» секции, или в ней пропишет себя вирус, то мы получаем бомбу с часовым механизмом. Когда произойдет «бум» — сказать сложно.

                                                                                                                                                                                                    При этом лично у вас все может быть ок, я и сам (каюсь, грешен) часто делал библиотеки без секции .reloc — ну удобнее мне так, удобнее (я просто ставил хитрый базовый адрес, но не об этом речь). Но на машинах пользователей все может жахнуть в любой момент.
                                                                                                                                                                                                      0
                                                                                                                                                                                                      Речь идет о том, что в памяти одновременно живут старая и новая библиотеки.
                                                                                                                                                                                                      Нет двух библиотек в памяти «одновременно». Вернее есть — но в памяти разных процессов. Один процесс работает со старой библиотекой и только с ней, другой — с новой и только с ней. Откуда конфликты?

                                                                                                                                                                                                      Однако если библиотеку делал недобросовстный программист, решивший сэкономить место с помощью купирования «ненужной» секции, или в ней пропишет себя вирус, то мы получаем бомбу с часовым механизмом. Когда произойдет «бум» — сказать сложно.
                                                                                                                                                                                                      Если у вас вирусы в системе, то вам уже ничего не поможет. Что будет если обновление поместит по адресу 0x40000000 user.dll? И вашу библиотеку придётся перемещать несмотря на перезагрузку?

                                                                                                                                                                                                      При этом лично у вас все может быть ок, я и сам (каюсь, грешен) часто делал библиотеки без секции .reloc — ну удобнее мне так, удобнее (я просто ставил хитрый базовый адрес, но не об этом речь). Но на машинах пользователей все может жахнуть в любой момент.
                                                                                                                                                                                                      Ну если вы хотите ездить на машине без тормозов и руля, то это не повод заявлять что все дороги должны быть только прямыми — и шоб никаких перекрёстков! Во-первых я не понял причём тут проблемы с базовыми адресами (две библиотеки в память одного процесса никогда не попадают), а во-вторых от использования базовых адресов в Unix мире все уже давно отказались (Linux — 1996й год, FreeBSD — 1998й год, NetBSD — 2000й год)…
                                                                                                                                                                                                        0
                                                                                                                                                                                                        1. запускаем программу А работающему с свн 1.4 и натравливаем на рабочую копию.
                                                                                                                                                                                                        2. обновляем свн до 1.5.
                                                                                                                                                                                                        3. запускаем программу Б, которая заюзает свн 1.5 и конвертнёт рабочую копию в новый формат.
                                                                                                                                                                                                        4.…
                                                                                                                                                                                                        5. фейл.
                                                                                                                                                                                                          0
                                                                                                                                                                                                          Ничего не понял. С какого перепугу у вас случился «фейл» и почему его не было если между 2 и 3 у вас была перезагрузка?
                                                                                                                                                                                                            0
                                                                                                                                                                                                            с того, что старый клиент не совместим с новым форматом. после перезагрузки все гарантированно будут юзать новый клиент.
                                                                                                                                                                                                              0
                                                                                                                                                                                                              Понял. Ну это значит что соответствующее обновление должно быть снабжено большим количеством предупреждений. Часто ли выходят подобные обновления? Если сравнить их частоту с выходом «простых» обновлений?
                                                                                                                                                                                              +1
                                                                                                                                                                                              И не смотря на ошибку в ДНК, это привело не к миллионым убыткам, а к миллиардным доходам. Ведь главное — маркетинг :)
                                                                                                                                                                                                0
                                                                                                                                                                                                Хабрапарсер сьел тег :)
                                                                                                                                                                                                –7
                                                                                                                                                                                                Столько пафоса, что в заголовке, что в статье. У вас есть какие-то цифры об этих мистических миллионых убытках?

                                                                                                                                                                                                Представьте себе, что вы пишите диплом в ворде и написали уже более 9000 страниц, но до сих пор не сохраняли сохраняли документ и вот какая-то сторонняя программа или виндовс апдейт хочет обновить системную dll-ку, которую изпользует в данных момент ворд (например какую-нибудь функцию из неё импортирует) и опа — дллка заменена, но ворд ничего об этом не знает и пытается вызвать ту же самую функцию, а эта функция возможно тоже изменена и возвращает несколько иной результат или принимает другое количество параметров в итоге имеем креш ворда вместе с документом.

                                                                                                                                                                                                Это простой пример того, что поведение системы может стать непредсказуемым если всем подряд дать заменять используемые в данный момент файлы.

                                                                                                                                                                                                Другое дело, что можно было бы дать пользователю решать — заменять ли дллки например с помощью мессадж бокса «Заменить файл, который используется в данный момент?», но видимо до этого ещё не скоро дойдет.
                                                                                                                                                                                                  +3
                                                                                                                                                                                                  но ворд ничего об этом не знает и пытается вызвать ту же самую функцию
                                                                                                                                                                                                  и, представьте себе, он вызовет ту же самую функцию. Ибо у него открыта старая версия dll-ки и ни о каких новых фичах он ничего не узнает до того, как его перезапустят. Или вы о том, что он может закрыть dll'ку, потом открыть её и вот тут как раз получить облом? Ну так это и в Windows возможно: если программа dll'ку закрыла — то её и подменить можно в любой OS, даже в Windows.

                                                                                                                                                                                                  Это простой пример того, что поведение системы может стать непредсказуемым если всем подряд дать заменять используемые в данный момент файлы.
                                                                                                                                                                                                  Это простой пример показывает что бывает если статьи читать не вчитываясь и не думая.

                                                                                                                                                                                                    –1
                                                                                                                                                                                                    «представьте себе, он вызовет ту же самую функцию. Ибо у него открыта старая версия dll-ки и ни о каких новых фичах он ничего не узнает до того, как его перезапустят.»
                                                                                                                                                                                                    Вот только беда — обновилась еще один компонент в системе, который вообще не тестировался на совместимость со старой версией библиотеки.

                                                                                                                                                                                                    Как следствие — вылет приложения и потеря данных.

                                                                                                                                                                                                    Странно, такое впечатление что подавляющее кол-во оставляющих комменты либо никогда не занимались программированием, либо никогда не работали с большими проектами, где за трюки в стиле «да я же одну библиотеку изменил, и все» бьют по рукам. Очень, очень больно.
                                                                                                                                                                                                      0
                                                                                                                                                                                                      >Вот только беда — обновилась еще один компонент в системе, который вообще не тестировался на совместимость со старой версией библиотеки.
                                                                                                                                                                                                      Ерунда какая-то. Если старая версия библиотеки ещё загружена, то она и будет использовать ещё свой старый компонент. Или это такое хитрое приложение, которое только тем и занимается, что загружает-выгружает библиотеки? Тогда да, против лома нет приёма. :)
                                                                                                                                                                                                      >Как следствие — вылет приложения и потеря данных.
                                                                                                                                                                                                      А если бы он вёз патроны? А если одно обновление произошло, а второе — нет? Вы ведь говорите о двух обновлениях?
                                                                                                                                                                                                      >Странно, такое впечатление что подавляющее кол-во оставляющих комменты
                                                                                                                                                                                                      Странно, такое впечатление, что вы только в досе работали. Причём с какими-то безумными проектами, у которых библиотеки новых версий абсолютно несовместимы со старыми и нет отслеживания зависимостей. Это баг, батенька. В днк ваших проектировщиков. Они вас больно бьют по рукам, вероятно, потому, что их больно били по голове и что-то там сдвинули. :)
                                                                                                                                                                                                        0
                                                                                                                                                                                                        >никогда не работали с большими проектами, где за трюки в стиле «да я же одну библиотеку изменил, и все» бьют по рукам. Очень, очень больно.

                                                                                                                                                                                                        Между проектом в разработке и выпущенным продуктом ОГРОМНАЯ разница. А если ваш продукт выдает такие трюки в виде несовместимости со старой версией, но при этом затирает эту старую версию, то конечно нужно бить по рукам таких разработчиков… и вообще их разработками не пользоваться
                                                                                                                                                                                                        Неужели не понятно, при проблемах несовместимости возможно свой файл на 9000 и еще 500 страниц вы сохраните(хотя механизм *nix тоже даст возможность это сделать), но после перезагрузки тоже нифига не будет работать

                                                                                                                                                                                                        > Вот только беда — обновилась еще один компонент в системе, который вообще не тестировался на совместимость со старой версией библиотеки.
                                                                                                                                                                                                        Вот чтоб такого не было в *nix существует механизм контроля зависимостей. Да и вообще эта ситуёвина создаст проблемы не зависимо от перезагружаемости
                                                                                                                                                                                                          0
                                                                                                                                                                                                          Ну, тогда поставьте новый Firefox на старый Debian Sarge. Посмотрите на механизм контроля зависимостей. Придётся обность всю систему и большую часть софта. А потом поставьте Firefox на Win95.
                                                                                                                                                                                                          Это я к тому что у недостатки везде есть :)
                                                                                                                                                                                                          +1
                                                                                                                                                                                                          Странно, такое впечатление что подавляющее кол-во оставляющих комменты либо никогда не занимались программированием, либо никогда не работали с большими проектами, где за трюки в стиле «да я же одну библиотеку изменил, и все» бьют по рукам. Очень, очень больно.
                                                                                                                                                                                                          Всё верно — такие вещи нужно проверять на тестовых системах, а потом уже ставить то же обновление на 10'000 компьютеров. Но перезагружаться-то зачем?

                                                                                                                                                                                                          Ещё раз: установка новой версии компонента достаточно часто приводит к проблемам — и в Windows и в Linux. Но вот такого, чтобы проблемы после этого в Linux лечились перезагрузкой — практически никогда не бывает. Не нужно бороться с ветряными мельницами. Ваша проблема — надуманна, на практике её не существует.
                                                                                                                                                                                                          –1
                                                                                                                                                                                                          > Это простой пример показывает что бывает если статьи читать не вчитываясь и не думая.

                                                                                                                                                                                                          Это да. Я пропустил абзац из своих размышлений, поэтому получилась каша. Итак:

                                                                                                                                                                                                          Вы пишите, что в винде используемый в данный момент файл заменить невозможно, т.к. «ошибки в ДНК» и т.д. — строго говоря это не совсем верно, потому что можно найти приложение использующее этот файл — «засуспендить» его и удалить хендл на файл, который необходимо заменить. Именно так работает утилитка Unlocker и после этого то же самое приложение «разсуспендить» и оно подхватит уже новую библиотечку без перезапуска. И в принципе в МС могли такую штуку реализовать вместо всем известного PendingFileRenameOperations.

                                                                                                                                                                                                          А теперь можно вставлять содержимое моего комментария выше.

                                                                                                                                                                                                          Такие дела.
                                                                                                                                                                                                            +1
                                                                                                                                                                                                            Вот как раз трюки с суспендом/разсуспендом — чреваты слезьми ибо совместимость интерфейса библиотеки «с внешним миром» — вещь, о которой заботятся всегда, но чтобы внутренние структуры данных не менялись — так бывает редко.
                                                                                                                                                                                                          0
                                                                                                                                                                                                          Эм… вы видимо не совсем поняли. Если вы открыли dll, то она для вас останется старой, той которую вы открыли, ее замена в файловой системе вас никак не каснется. Так в *nix.