Издержки реального мира
АрхивЧерновик этого текста я случайно обнаружил в папке с документами, когда пытался найти тему для очередной "13-й комнаты". В свое время он не понадобился, но не пропадать же добру. Тем более что вопросы эти всплывают регулярно, хотя, казалось бы, все уже давно ясно.
Черновик этого текста я случайно обнаружил в папке с документами, когда пытался найти тему для очередной «13-й комнаты». В свое время он не понадобился, но не пропадать же добру. Тем более что вопросы эти всплывают регулярно, хотя, казалось бы, все уже давно ясно. А может, не все так просто?
Нарекания на операционные системы Microsoft вошли уже не просто в моду, а в привычку. За что же так ненавидят их пользователи?
Ваша Windows 98 слишком часто падает? Основная проблема этой ОС - тяжкое наследие Windows 3.1 и DOS в виде значительного количества 16-разрядного кода. Но дело не просто в его наличии, а в его нереентерабельности, то есть невозможности одновременного использования разными потоками. Вы же хотели многозадачную систему? К нереентерабельному коду в Windows 95/98/Me относится множество модулей системного сервиса, в частности большинство функций управления окнами и графическим интерфейсом. И не рассчитывайте, что 32-разрядные приложения исправят дело: несмотря на наличие в ОС 32-разрядного планировщика, поддерживающего вытесняющую многозадачность и многопоточность (последние два термина представители самой компании любят употреблять, опуская слово «планировщик»), при вызове нереентерабельного системного сервиса все равно применяется общесистемная блокировка - для предотвращения использования кода другими потоками. А уж с 16-разрядными приложениями дела обстоят совсем плохо: блокировка сохраняется в течение всего времени их выполнения.
Но не следует думать, что такое решение было принято разработчиками по недомыслию: техническая сторона - далеко не единственная, и в середине 1990-х главной целью Microsoft в отношении новой тогда Windows 95 было вовсе не воплощение технического идеала многозадачной системы, а обеспечение стопроцентной совместимости с Windows 3.1 и MS-DOS. И, надо заметить, задача эта была решена более чем успешно. Однако за прошедшее десятилетие она практически потеряла актуальность. Не верите? Я тоже не верил, пока не попробовал полностью избавиться на своем компьютере от FAT вместе со всей тщательно отобранной коллекцией DOS-программ. Как ни странно, за год работы ни одна из них так и не потребовалась, а если потребность в выполняемых ею функциях и возникала, я легко находил программе замену. В этом отношении Microsoft на общем фоне компьютерной индустрии вообще выглядит по-джентльменски: вспомните, например, как обошлись производители «железа» с шиной ISA и ее последовательницей VLB (у вас еще остались VLB-карты? Смело можете их выбросить). Вам нужна совместимость? Увы, за нее надо расплачиваться.
В такой ситуации имевшаяся у Microsoft Windows NT, создававшаяся параллельно на базе ранних версий OS/2, оказалась весьма кстати - эту систему, не связанную столь жесткими требованиями совместимости, компания изначально нацелила на серьезные серверные приложения, не забыв при этом и о необходимости постепенного переманивания на новую платформу обычных пользователей: недаром Windows NT выпускалась в версии Workstation, являвшейся всего лишь урезанной версией Server. Важным шагом на этом пути стала унификация графического интерфейса, воплощенная в Windows 2000.
Впрочем, и в отношении Windows NT (как и последующих версий на ее основе) разработчики Microsoft никогда не были идеалистами: недаром имевшийся у компании 32-разрядный интерфейс программирования Presentation Manager API от OS/2 был заменен новым - Win32 API, совместимым по именам функций, семантике и типами данных с 16-разрядным Windows API. Таким шагом компания значительно облегчила разработчикам бремя переноса 16-разрядных приложений на платформу NT и залучила себе «под крылышко» очень и очень многих разработчиков приложений, без которых новая система вряд ли заняла бы те позиции, на которых она находится сейчас.
Легендарный Blue Screen of Death (BSOD) - синий экран, сопоставляемый большинством пользователей с внутренними ошибками системы, - обусловлен в основном совсем другими причинами. Исходя из собственного опыта, могу утверждать, что в семи случаях из десяти BSOD есть следствие неполадок или некорректной конфигурации аппаратной части, еще в двух - неквалифицированных действий пользователя по изменению конфигурации ОС, и, наконец, последний случай я отношу к категории невыясненных (точнее, здесь следует говорить о банальном нежелании разбираться в его причинах). На самом деле, непосредственных причин, приводящих к краху системы, не так уж и много. Это, во-первых, ошибки аппаратного контроля четности оперативной памяти, кэш-памяти или шин передачи данных, а также немаскируемое прерывание (NMI). Во-вторых, обнаружение системой поврежденных внутренних данных или ситуации, в которой продолжение работы грозит потерей данных. В-третьих, необработанными исключениями (ошибками), которые вызваны драйвером устройства или функцией ОС, выполняемой в режиме ядра. Во всех перечисленных случаях именно ОС вызывает BSOD через специальную системную функцию, и такое решение позволяет как минимум сигнализировать о ситуации, в которой ничего исправить уже нельзя.
Вам нужна надежность? Увы, чтобы ее обеспечить, одной ОС недостаточно.
Я вовсе не собирался защищать здесь Microsoft от нападок пользователей. Мы с вами живем не в Америке, чтобы верить сладким речам г-на Гейтса о скором и всеобщем компьютерном рае. Но не забывайте, что и Microsoft существует в реальном мире. Вы считаете, что пора строить «наш новый мир»? А может быть, проще научиться жить в существующем? Кстати, чтобы строить, не всегда нужно следовать тактике большевиков, разрушая все до основания.