avva: (Default)
[personal profile] avva
Замечательный образ в записи Реймонда Чена:
MS-DOS is perhaps one of the strongest examples of requiring absolute unyielding backward compatibility. Hundreds if not thousands of programs scanned memory looking for specific byte sequences inside MS-DOS so it could patch them or hunted around inside MS-DOS's internal state variables so it could modify them. If you move one thing out of place, those programs stop working.

MS-DOS contains chunks of "junk DNA", code fragments which do nothing but waste space, but which exist so that programs which go scanning through memory looking for specific byte sequences will find them. (This principle is not dead; there's even some junk DNA in Explorer.)
Я не знал об этом. Я знал, что DOS и Windows проводили политику фанатичной совместимости с предыдущими версиями. Я знал, что во всех версиях Windows хранится и пополняется список "совместимых программ": когда Windows распознает, что бежит такая программа, она специально возвращает ей нестандартные результаты на определенные системные вызовы - потому что такие результаты возвращала какая-то прошлая версия, и данная программа этим пользуется, хоть они и были недокументированы.

Но что в коде MS-DOS специально оставляли куски байтов из предыдущих версий, которые и не запускались никогда, но нужны были для старых программ, которые специально их искали - этого я не знал. Это уже почти за пределами моего понимания.

Когда очередные победители будут в очередной раз писать историю первых десятилетий персональных компьютеров, давайте и это вспомним. Уверенная победа Майкрософта была обусловлена многими причинами: глупыми поступками IBM, недальновидностью Apple, агрессивной тактикой самого Майкрософта по экслюзивным сделкам с OEM... но еще и героическими усилиями во имя совместимости старых приложений с новыми версиями ОС и даже с новыми ОС. Никакой программист не хочет заниматься такой мутной херней - но важность ее для пользователей Майкрософт понимала лучше всех своих конкурентов.
Page 1 of 3 << [1] [2] [3] >>

Date: 2010-05-29 05:56 pm (UTC)
From: (Anonymous)
в IBM тоже очень фанатично относятся к совместимости, по крайней мере в их мейнфреймах. Даже в их последнем - z10, который продается за несколько миллионов долларов, стоит очень много всяких костылей из 60-х, 70-х годов.
From: [identity profile] pargentum.livejournal.com
Как микрософт сумел превратить собственную кривоту и чужие плохие практики в конкурентное преимущество.

Программы патчили дос и меняли внутренние переменные состояния не от хорошей жизни, а от того, что в дос не было штатных API для того, чтобы сделать простые вещи.

А теперь вся эта junk DNA рушится под собственной тяжестью. Люди, которые весь этот джанк писали, ушли на пенсию, и единственный способ, которым микрософт может обеспечить совместимость со старым софтом - это запуск XP в виртуалке.

Date: 2010-05-29 06:08 pm (UTC)
From: [identity profile] pargentum.livejournal.com
Ну да, разъяснение большинства загадок винды начинается с фразы "Когда в 1974 году Гари Кидал начал писать то, что потом стало известно как CP/M, ему в голову не могло прийти..."

Только все-таки одно стандартное микрософтовское вранье они повторяют - что винда основана на VMS.

Date: 2010-05-29 06:08 pm (UTC)
From: [identity profile] ygam.livejournal.com
Он совместим с IBM/360?
From: [identity profile] vasar.livejournal.com
Что такое "штатное API" во времена MS-DOS?

Date: 2010-05-29 06:14 pm (UTC)
From: [identity profile] avva.livejournal.com
Как-то вы очень агрессивны. Ядро Windows NT не то чтобы основано на VMS, но действительно активно пользуется многими его принципами и методами. Ну и люди многие оттуда пришли, как известно.

Я не помню, чтобы Майкрософт как-то особенно настаивала, что Windows основана на VMS, им это с маркетинговой точки зрения могло скорее помешать, чем помочь.

Date: 2010-05-29 06:16 pm (UTC)
From: [identity profile] msh.livejournal.com
Мне не кажется что это причина победы. Это следствие. Майкрософт смог победить с технологией уровня мониторов для 8-битных калькуляторов, которая уже на тот момент лет 10 как устарела. Почему именно они победили - отдельный вопрос, но ничего технического там не было.

Победили они при этом себя тоже - Xenix, OS/2 - все пали жертвой. Им сколько понадобилось чтобы все-таки пропихнуть новую архитектуру ОС - 15 лет?

То что разработка для MS-DOS постоянно требовала копания в кишках, подмены каких-то interrupt handlers и прочих хаков, которые должны бы были уже отмереть вмести с эпохой Sinclair Spectrum - это серьезная проблема архитектуры. Хвалить Майкрософт за то, что они были вынуждены много лет это поддерживать, это примерно как если бы я сейчас сказал с восторгом "смотрите! Это 2010 год, я работаю с своим виртуализированным линуксом в cloud на супер-дупер серверах с 48 процессорами каждый, через канал, три раза зашифрованный так, что никто не расшифрует за сто лет, а внутри, представляете, эмулируется пишущая машинка!"

Date: 2010-05-29 06:17 pm (UTC)
From: (Anonymous)
конечно, IBMщики хвастаются этим. Я же говорю, что у них достаточное количество компонентов остались с совсем давних времен. Отсюда и некоторые проблемы рождаются - существуют некоторые модули о которых ничего не известно никому - люди, которые их кодили ушли, а доки исчезли.
From: [identity profile] tejblum.livejournal.com
int 21h и т.п., очевидно.

Date: 2010-05-29 06:27 pm (UTC)
From: (Anonymous)
Костыли стоят(если стоят) в ОС, а не в процессорах. Z10 - это процессор, не так ли?

Date: 2010-05-29 06:27 pm (UTC)
From: [identity profile] bolk.livejournal.com
подмены каких-то interrupt handlers и прочих хаков, которые должны бы были уже отмереть вмести с эпохой Sinclair Spectrum
Да какие там прерывания были в ZX Spectrum? Оборудование ими не пользовалось, был единственные вектор таймера, сделанный через жопу, а отладочное прерывание запороли.

Там были «точки входа» RSTx, но это было значительно менее удобно, чем прерывания в PC.
From: [identity profile] vasar.livejournal.com
Ну что в 21h влезало, то там и было. Если что-то требовалось сверх этого, надо было лезть и корежить 21h, удалять ненужные куски и вставлять свои.
From: [identity profile] bolk.livejournal.com
Почему только 21? 15/16? 20? и тд
From: [identity profile] bolk.livejournal.com
Требовалось для чего? Взаимодействия программ почти не было. Были резиденты, но они ничего не знали друг о друге. Можно было не трогать 21, зачем? Пользовательских прерываний вагон был.

Date: 2010-05-29 06:31 pm (UTC)
From: [identity profile] ban-dana.livejournal.com
Микрософт сделал ставку на Пользователя. Которому насрать на ОС. Он и слова-то этого чаще всего не знает. Ему комп нужен для решения своих каких-то задач. Поэтому, если переход на новую версию ОС нарушит работу каких-то программ, юзер на эту ОС забьет большой и толстый. И в МС это поняли раньше других, вот и все.

Date: 2010-05-29 06:33 pm (UTC)
From: (Anonymous)
в разных контекстах может употребляться и как процессор, и как мейнфрейм. А вообще да, я имел ввиду ОС.
From: [identity profile] bolk.livejournal.com
Годный был мануал! Я охотился за новыми версиями.
From: [identity profile] vasar.livejournal.com
Ну вот чтобы все работало, как обычно, только с перламутровыми пуговицами, естественно.

Date: 2010-05-29 06:38 pm (UTC)
From: [identity profile] pargentum.livejournal.com
Ну, практически все полезные принципы и методы, которыми пользуется ядро NT: вытесняющая многозадачность, обработка исключений, асинхронный ввод/вывод - уже присутствовали в ядре OS/2. Которое делалось в 1985 году, то есть за некоторое время до прихода людей из DEC.
Сходство механизмов обработки исключений в OS/2 и VMS, как я понимаю, объясняется скорее влиянием MVS, чем заимствованием.
From: [identity profile] trurle.livejournal.com
Были еще важные прерывания 9h и 10h, их надо было не использовать, а перехватывать.
С приятелем мы пили за прерывания ДОСа по номерам, в ожидании что когда дойдем до 21, то начнем пить за отдельные опкоды. Но так ни разу и не добрались.
From: [identity profile] pargentum.livejournal.com
Так вы то же самое и говорите, что и я.
Только немного другими словами.

Документированный API был куцый, малофункциональный и кривой, поэтому и приходилось извращаться. То есть все патчение ядра ДОС происходит от того, что микрософт не подумал предоставить штатную функциональность.

Date: 2010-05-29 06:51 pm (UTC)
From: [identity profile] pargentum.livejournal.com
Все-таки более удачный объект для сравнения - это не сделанный на коленке спектрум, а DEC RT-11. В принципе, те же архитектурные ограничения, что и у спектрума - 64к адресуемого ОЗУ, нет защиты памяти, память надо экономить любой ценой - но в этих условиях была сделана нормальная ОС, которую никому не приходило в голову патчить на ходу, а все нужные вещи делались документированными функциями, для каждой из которых был специальный ассемблерный макрос.
Page 1 of 3 << [1] [2] [3] >>

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 01:40 am
Powered by Dreamwidth Studios