Pull to refresh

Comments 22

выпустила первый процессор семейства х86, модели 8086, который предоставлял довольно ограниченную среду для исполнения 16-битного кода, известную под названием «режим реального времени» (Real mode).

Режим называется «реальный», ко времени отношения не имеет. Когда 8086 был выпущен, этот режим никак не назывался, поскольку был единственным. Режим совместимости с 8086 (real mode) был одним из режимов работы процессоров 80286 и выше (другим был защищенный режим).
Что означает «довольно ограниченную среду для исполнения 16-битного кода»? Эта среда использовалась, как минимум, до начала 90-х в DOS (упрощаем тут, не говорим о менеджерах высшей памяти которые использовали защищенный резим 286+), и была полнофункциональной в рамках DOS.
Обидные и серьезные неточности.
Real действительно не имеет отношения к real time, имеет отношение к адресации, а вот «довольно ограниченную» в таком случае вполне справедливо, т.к. адресовать «легально» можно 640К а с определенными ограничениями около мегабайта. И те, кто поработал с DOS помнят борьбу за байты адресного пространства, himem.sys, emm386 и DOS/4GW, вечная им память.
Ну дык исправьте тогда статью. Уберите упоминание реального времени из текста и внесите прочие исправления из комментария itblogger. Да, бумажную версию статьи, которая ушла в «Хакер» от января, уже не исправить. А эту, хабровую версию, исправьте. А то вас щас достанут комментами и заминусуют
Давайте вместе исправим, с вас пароль от их эккаунта.
Есть ещё т.н. «Unreal mode», недокументированный режим в 386 и последующих, позволяющий в реальном режиме адресовать до 4 гиг памяти в линейном виде. А вообще, да, тоже резануло Real mode и Real time две большие разницы.
Я всё жду, что в какой-то из версий Windows, NTVDM наконец допилят до рабочего состояния, но, видимо, я к тому моменту успею состариться.
Наверное, Вы очень расстроитесь, узнав что NTVDM никто не пилит, т.к. в 64-битных системах его нет, а начиная с Windows 9 уже не будет 32-битной версии системы.
Наплевательское отношение к совместимости — это то, что меня всегда больше всего раздражало.

Гигабайты написанного кода, который ничуть не стал хуже от того, что прождал 20 лет своего часа, теперь невозможно использовать. Абсурд.
Используйте DOSBox ru.wikipedia.org/wiki/DOSBox если это окружение действительно нужно. Да и в Windows с обратной совместимостью всё очень даже хорошо.
Да я знаю много способов воевать с модой, но вы же понимаете, всё это костыли.
По этой причине wine и портировали на windows. Что бы тот же софт под 3.x-98 можно было запускать.
От виртуализации 16-битных инструкций в 64-битном режиме отказались производители процессоров. По-моему, это совершенно правильное решение.
Представьте, сколько денег потрачено потребителями за 20 лет развития процессоров на поддержку в них старых инструкций и их виртуализации. Несколько гигабайт кода этого не стоят, тем более что для его выполнения теперь вполне достаточно программной эмуляции, производительность позволяет.
Наплевательское отношение к совместимости — это то, что меня всегда больше всего раздражало.

??!?!!?!?!?!
Вообще-то именно Windows считается эталоном обратной совместимости. На обсуждениях GNU/Linux'а можно найти кучу диалогов вида:
— Почему Linux опять сломал внутренние интерфейсы ядра? / Зачем выпустили Python 3, несовместимый с Python 2? / Зачем выпустили git 2.0, несовместимый с предыдущими версиями? / и т. д. и т. п., нужное подставить
— Если вам так захотелось совместимости, идите в Windows
Вот, скажем, пример такого коммента.
Уж что-что, а совместимость с DOS'ом 20-летней давности — это то, что действительно нужно выкинуть.
Так вот, реально используйте DOSBox. Вы говорите это костыль, почему? Только лишь на том основании, что он не придуман в Microsoft? !??!?!?!?! Т. е. если решение для запуска DOS'овых программ в Windows придумано Microsoft'ом и входит в комплект Windows — то это не костыль, а если поставляется отдельно, то костыль, так что ли??? Вы должны понимать, что совсем необязательно юзать софт только от Microsoft.
Смотрите: DOS и Windows (начиная с WIndows NT) — это две совершенно разные ОС. В Windows NT встала задача обеспечить эмуляцию DOS в Windows. Это разные ОС, поэтому такая эмуляция была совершенно неестественной частью ОС, т. е. фраза «NTVDM является естественной и органичной, необходимой частью Windows NT» тут не подходит совсем.
Так вот, чтобы обеспечить эту эмуляцию, разработчикам Windows пришлось добавить некоторые фичи прямо в код ядра (!!!). Вот это костыль. Самый настоящий костыль. Пробрасывать какую-то там функциональность прямо в ядро, размазывать код NTVDM по всей ОС. И всё ради того, чтобы можно было запускать DOS'овые программы.
А теперь взглянем на DOSBox. Честно говоря, я не знаю, как он работает, но как я понимаю, он работает без использования функциональности, которая вынесена в ядро Windows. Таким образом, DOSBox — это чистое userspace приложение, и это прекрасно. Т. е. DOSBox в куда меньшей степени является костылём. Да, возможно, это приводит к замедлению по сравнению с NTVDM. Но зато нет такого грязного хака как NTVDM. Наверное, вы это замедление и не почувствуете. DOS'овые программы, которые изначально написаны для тормознутого 8086, будут просто летать в DOSBox на современных компах
>>Пробрасывать какую-то там функциональность прямо в ядро, размазывать код NTVDM по всей ОС. И всё ради того, чтобы можно было запускать DOS'овые программы.

Это не костыль. Ровно так и надо делать. Чтобы DOS- бинарники были запускались не в невнятной вымороченной виртуальной машине, а имели полный доступ ко всем функциям системы, в том числе прямой доступ к железу. Только так может достигаться полная совместимость со 100% DOS софта, и более того, сохраняется возможность писать новый DOS-софт.
Я вот с вами абсолютно согласен. Но просто для протокола добавлю следующее:

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

Есть два слова, которые убивают досбокс наповал — принтеры и IPX. Да, я прекрасно понимаю, что Богу слеловало бы проклясть меня за использование ЛПТ портов и за IPX я могу получить молнию в лоб и чуму в придачу. Но, как бы то ни было, пару раз пришлось столкнуться. Последняя винда, которая работала и с тем и с другим — наша родимая хрюша.

И даже на хрюше попытка настроить netbios over tcpip при включеном IPX приводила к тому, что мне приходилось приносить в жертву двух девственных кроликов, убивать летучих мышей, читать заклинания и заниматься чернокнижием. В конце концов мне удалось призвать демона и мы с ним договорились — я ему показал как это работает, он ужаснулся и сказал, что нет на свете существ, которым стало столько мучаться. В итоге у меня остался листок с инструкциями по настройке хрюши, которые включает в себя три перезагрузки.

После всей этой свистопляски, на машинах c Windows 7 всё начиналось с установки эмулятора и запихивания хрюшки в этот эмулятор. На эмуляторе ставился бридж и всё это дело работало на IPX. В висте и далее про IPX благополучно забили. Правильно зделали. Image этого эмулятора с XP мы благололучно прозвали Квадратной свиньёй с Марса. На том и остановились.

Досбокс был слит в исходниках в Megabuild версии и путём обработки напильником было выяснено, что стек IPX был написан только для того, чтобы четверо ребят могли гонять досовские игрушки по сети. Когда поличество клиентов поднималось до восьми — всё падало. Надо было больше. Пришлось переписать всё с начала. Да и стек был такой, что для просторы задачи просто взяли и впилили туда pCap и заставили его напрямую жрать данные с карты. Только прикол в том, что я и сам не разобрался с тем, как этот грёбанный порт-кэп работает и в итоге с вероятностью 50% система просто падает на шестидесятичетырёхбитных машинах.

Короче…

Хочется просто пойти и найти этих людей, которые написали всё это в восьмидесятых годах… И… Не на хабре будет сказано что с ними надо сделать.

Когда я пишу маленькое корпоративнео приложение, которым будут пользоваться больше двух человек я всегда проверяю что:
1) Оно написано на последней версии .NET фреймворка
2) В нём никогда нет никаких вызовов каких либо системных функций
3) Даже если вызовы есть, они обёрнуты в библиотеки и язвляются польностью переписываемыми и хорошо документируемыми
4) Я никогда не использую НИКАКИХ недокументированных функций
5) Когда выходит новый фреймворк я делаю пулл всех репозиториев и пересобираю все приложения

Страх имплементатора. Страх сисадмина.

Так что не говорите про дос-бокс как про замену или панацею, она напильника требует просто в нереальных количествах.
Сейчас NTVDM пилится в ReactOS, хотя это уже другой NTVDM (скорее аналог DOSBox).
Оно-то хорошо, что NTVDM там пилится. Вот только один момент. Сама ReactOS тоже ещё (и уже сколько) всё пилится и пилится… Чтобы вспомнить, насколько это весомый факт, достаточно посмотреть историю релизов.
Сейчас это существование ради самого факта существования. Практического смысла нет.
А полный текст эксплоита можно? :)
«А вот этого нельзя, — серьезно сказал Воланд.»
j00ru на русском теперь пишет или это перевод с разрешения автора?
Sign up to leave a comment.