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

    Написать эту заметку меня побудили очередная статья с «криком души»: ну почему 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.

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

    Подробнее
    Реклама
    Комментарии 302
    • НЛО прилетело и опубликовало эту надпись здесь
      • +6
        Что, помешал автор фапать на образ непорочного БГ?
        • НЛО прилетело и опубликовало эту надпись здесь
        • –2
          Это фанатизм или попытка самоутвердиться?
          Факты есть факты. Спорить из-за этого или оскорблять кого-то — только себе хуже. Костыли у МС прикручиваются постоянно. Я не говорю, что их нет в ПО других производителей, но не дальнозоркость обычно и приводил к появлению таких вещей, как .net, 10 версий IE и т.д.
          ведь не просто так ту-же прозрачность окошек без .net не прикрутить в win98(ну это просто для примера)
          • НЛО прилетело и опубликовало эту надпись здесь
            • +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
                    мак и юникс-версии забыли
                • НЛО прилетело и опубликовало эту надпись здесь
                  • 0
                    А у оперы сколько версий? А если учтем возраст оперы и IE? А если посчитаем минорные релизы? Как бы у оперы за сотню не перевалило…
                    • 0
                      1. я говорю про версии а не про версии исправлений. исправлений — дураку понятно… за несколько тысяч у любой софтины
                      2. говоря про версии IE я имею в виду кардинальную его переработку.
                  • –8
                    Жаль у меня не хватает заряда, чтобы тебя заминусовать…
                    • НЛО прилетело и опубликовало эту надпись здесь
                    • +2
                      ты знаешь а мне что-то тебя немного жаль )
                      но минус таки ты заслужил
                      • НЛО прилетело и опубликовало эту надпись здесь
                        • НЛО прилетело и опубликовало эту надпись здесь
                        • +2
                          Какой толстенный тролль ))
                          • НЛО прилетело и опубликовало эту надпись здесь
                            • +4
                              Ты что, для этого как минимум трое нужны ))
                              • НЛО прилетело и опубликовало эту надпись здесь
                          • 0
                            зачем кидаться зря словами? это ведь просто мнение автора =) а вот мне Вас искренне жаль, зато Вы первый в рейтинге… с конца… какой смысл идти на осознанное понижение собственной кармы?
                            • НЛО прилетело и опубликовало эту надпись здесь
                          • +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 почти сломал систему? Обновив только половину пакетов, при попытке обновления из третьих кедов:)
                                                  • +17
                                                    Ну почему прямо ошибка, это особенность, различие в операционных системах. Таких особенностей много, какие-то лучше у Windows, какие-то у Linux.
                                                    • 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 — своя специфика
                                                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                        • 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, которое больше не ассоциируется с этим именем файла и будет при первой возможности стёрто? Программа должна проверять какие-то флаги файла перед записью, типа что он не удалён?
                                                                                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                      • +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
                                                                                                                                      Победителей не судят :)
                                                                                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                                • +1
                                                                                                                                  Требует перезагрузки только апдейты либо безопастности, либо quicktime, ну и ядра. Остальное разве требует?
                                                                                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                                    • 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, разве есть другой способ обновления, без перезагрузки?