Pull to refresh

Comments 46

Вспомнил древний сайт filimon.tk с подобной идеей (к сожалению, сейчас не доступен). Тогда еще и React не было. Автору, если читает, привет.
Там еще и работающий JS Paintbrush есть, можно даже файл с своего компьютера загрузить и выгрузить обратно!
причем в этом пейнте даже оригинальная пасхалка с увеличением в 10 раз работает! :)
(нужно ткнуть на белую линию под 8x)
Windows 9x — это общее обозначение систем с Windows 95 до ME. Они были довольно некачественно построены на основе MS-DOS и во многом оказались отстойными.
Нет, Windows 9x не являлись надстройками над DOS. DOS была по сути загрузчиком для Windows. По этой логике Linux — надстройка над GRUB.
Интересно, что спустя 20 миф все ещё жив. Особенно мне нравится суждение о «качестве» системы от человека, считающего что Windows просто надстройка над DOS. Ах да, пусть люди говорящие о качестве сами попробуют написать многозадачную ОС, с графическим интерфейсом, способную работать на 8мб памяти.
UFO just landed and posted this here
В добавок еще и совместимую с msdos кроме того самого win16, что по мне посложнее.
А вот как раз в этом месте — собака и порылась.
Вопрос «является ли Windows 9x надстройкой над DOS или нет» — очень сильно в это упирается.
На самом деле там два режима: если int 13h указывает в BIOS — DOS не используется, если не в BIOS — всё идёт через DOS (и начинает тормозить особенно сильно).
А как иначе совместимость с загрузочными DOS-вирусами обеспечить?
Уточнение: если int 21h указывает в DOS — DOS не используется, если не в DOS, а в какого-то резидента — всё идёт через этого резидента (и начинает тормозить особенно сильно). Через сам DOS не идёт ничего никогда.
Во-первых всё-таки INT 13h (загрузочные вирусы загружаются раньше DOS и перехватить 21h никак не могут), а во-вторых — в этом случае вообще всё идет через DOS. Так как считается, что мы не можем знать — что ещё там какие резиденты натворили).
Гуглёж подсказывает, что если int 13h перехвачен, то действительно используется перехватчик; но только для HDD (MS не нашли незлонамеренных прог, перехватывающих работу с дискетами) и всё равно мимо DOS: 32-битный драйвер FAT будет обращаться к перехватчику int 13h.
Гуглёж подсказывает

До этой статьи догуглились?

Там тоже не все сложные случаи разобраны, но, в конечном итоге может как оказаться, что у вас Windows 9x как всё делает в защищённом режиме своими драйверами, так и вариант, когда всё обращение к железу (кроде графики) идёт и через DOS и через BIOS.

Отсюда и рассказы об «оболочке». Novell NetWare никто «оболочкой» не называл имено в силу отсутствия этих гибридных режимов: нет у тебя драйвера для конроллера HDD? Значит ничего работать не будет.

А Windows 9x не так: она вполне может использовать драйвера DOS при необходимости…

всё равно мимо DOS: 32-битный драйвер FAT будет обращаться к перехватчику int 13h
Это где так написано? Насколько я знаю всё равно всё идёт через DOS. Int 25 и Int 26.

Впрочем сильно спорить не буду: давно это было, да и я школе не сильно во всём этом копался. Но народную примету — если дикие тормоза, то нужно Windows 95 перезалить (у нас была налажена процедура, успевающая это сделать с сервера как раз за перемену) — запомнил накрепко.
До этой статьи догуглились?

И более того, эта же самая ссылка была в моём предыдущем комменте :)

она вполне может использовать драйвера DOS при необходимости…

Кажется, у нас расхождение в терминологии. Вы имеете в виду «драйвера в составе DOS» или «3rd-party драйвера для DOS»?
В первых никогда не возникает необходимости — эквивалентная функциональность встроена в саму винду; а последние она действительно может использовать, но сам DOS при этом не задействуется.

Это где так написано? Насколько я знаю всё равно всё идёт через DOS. Int 25 и Int 26.

Это я открыл VFAT.VXD в IDA и увидел, что обращения к диску идут через VxDCall IOS_SendCommand, а не через прерывания. В свою очередь, IOS.VXD дёргает непосредственно int 13h при необходимости, а 25h/26h не дёргает.
Вы имеете в виду «драйвера в составе DOS» или «3rd-party драйвера для DOS»?
Я имею в виду «драйвера для операционной системы DOS».

Вот те самые, которые «настоящие» операционки (Windows NT, OS/2 или там Unix какой) использовать не могут. Ни напрямую, ни через DOS, никак.

а последние она действительно может использовать, но сам DOS при этом не задействуется.
Что значит “не задействуется”? Вот взял я какой-нибудь Stacker for OS/2, который про Windows 95 ни сном ни духом. Как Windows 95 умудряется с ним работать, если она DOS не задействует? А как тогда вся эта конструкция работает? Драйвер Stacker'а требует наличия DOS…

Это я открыл VFAT.VXD в IDA и увидел, что обращения к диску идут через VxDCall IOS_SendCommand, а не через прерывания. В свою очередь, IOS.VXD дёргает непосредственно int 13h при необходимости, а 25h/26h не дёргает.
Ну откуда-то же берутся заявления Windows 95 can be installed on systems that use Stacker 2.x, 3.x, or 4.x; however, versions earlier than 4.1 do not support long file names.

Так что есть ощущение, что вы не все тайные тропы в Windows исследовали и она-таки может использовать куда больше DOS'а, чем положено «полноценным операционкам». Понятно, что всё это «только если прижмёт», в «нормальном» режиме она использует DOS только как загрузчик… но в этом случае непонятно зачем её «прибивать гвоздями» к одной, конкретной, версии DOS. А вот для такого интимного общения, когда DOS может использовать «по полной» — да, пожалуй зафиксировать версию DOS было бы неплохо.

OS/2 и Novell Netware могут у себя в Dosbox'е использовать любую версию DOS, к примеру. Именно потому что сами они в его услугах не нуждаются.
А как тогда вся эта конструкция работает? Драйвер Stacker'а требует наличия DOS…

В посте Чэня как раз об этом и написано: Windows создаёт mock-среду DOS специально для того, чтобы драйвера для DOS могли продолжать работать. Драйвер дёргает int 21h, а вызов на самом деле идёт в VFAT.VXD или ещё в какой-нибудь VXD. И наоборот тоже: код защищённого режима дёргает какой-нибудь VXD, а вызов на самом деле идёт драйверу, перехватившему int 21h до загрузки Windows.

Ну откуда-то же берутся заявления Windows 95 can be installed on systems that use Stacker 2.x, 3.x, or 4.x; however, versions earlier than 4.1 do not support long file names.

Вы уверены, что Stacker перехватывал int 13h, а не int 21h? Судя по тому, что в Q85194 написано «If you use any special drivers for your hard drive, such as Disk Manager or Stacker, make sure the drivers are in your new CONFIG.SYS and AUTOEXEC.BAT files», Stacker загружался после DOS.
В посте Чэня как раз об этом и написано: Windows создаёт mock-среду DOS специально для того, чтобы драйвера для DOS могли продолжать работать.
С этого момента — поподробнее. Какие именно слова вас навели на такие мысли.

Наоборот, вот это вот
When a program issued an int 21h call to access MS-DOS, the call would go first to the 32-bit file system manager, who would do some preliminary munging and then, if it detected that somebody had hooked the int 21h vector, it would jump back into the 16-bit code to let the hook run.
выглядит как «работа оболочки, а не полноценной OS».

Там даже у него разноцветная картинка есть и там видно, что в этом случае к железу обращение идёт через 16-битный DOS-драйвер, а не через что-то в Windows 95.

А IFSMGR — это как раз врезка в DOS (нифига не мокнутую DOS, а самую обычную), чтобы в нужный момент обратиться в Windows 95.

Вы уверены, что Stacker перехватывал int 13h, а не int 21h?
Это-то понятно, про INT 13h вы вроде бы правы, а я неправ.

Но и эта статья и страничка из MSDN и вообще все описания указывают на то, что Windows 95 может встать в таком кривом варианте, когда она и Int 21h и Int25h/Int26h и Int13h — вообще всё, что возможно — будет «пропускать» через DOS.

Чем не «оболочка»?

Только графика будет нативной — ну так это потому, что DOS вообще средств для работы с графикой не предоставляет.

Word for DOS же операционкой не называют? А графические драйвера у него свои…
Там даже у него разноцветная картинка есть и там видно, что в этом случае к железу обращение идёт через 16-битный DOS-драйвер, а не через что-то в Windows 95.

Верно: через 16-битный драйвер, написанный для DOS — а не через какие-либо компоненты самой DOS.

Windows 95 может встать в таком кривом варианте, когда она и Int 21h и Int25h/Int26h и Int13h — вообще всё, что возможно — будет «пропускать» через DOS.

Пропускать через перехватчики, загрузившиеся до Windows (то ли под DOS, то ли до DOS) — да, будет. Эти перехватчики могут быть кодом для DOS, но это не сама DOS.

Какие именно слова вас навели на такие мысли.

Notice that all the work is still being done by the 32-bit file system manager. It’s just that the call gets routed through all the 16-bit stuff to maintain the charade that 16-bit MS-DOS is still running the show. The only 16-bit code that actually ran (in red) is the stuff that the TSR and network driver installed, plus a tiny bit of glue in the 16-bit IFSMGR hook. Notice that no 16-bit MS-DOS code ran.
Notice that all the work is still being done by the 32-bit file system manager. It’s just that the call gets routed through all the 16-bit stuff to maintain the charade that 16-bit MS-DOS is still running the show. The only 16-bit code that actually ran (in red) is the stuff that the TSR and network driver installed, plus a tiny bit of glue in the 16-bit IFSMGR hook. Notice that no 16-bit MS-DOS code ran.
Ну это ему повезло так, что IFSMGR «отфутболил» запрос обратно в Windows.

Там не mock'и, а драйвер специальный, который перехватывает переход из других драйверов (загруженных позднее) в DOS. Но у него получается не всегда.

Могло и не повезти. В частности со Stacker'ом — точно не везёт, почему и длинные имена файлов становятся недоступны.
Верно: либо резидент вызывает функции DOS, и IFSMGR их перенаправляет в ядро Windows; либо резидент делает всю работу сам (возможно, задействуя BIOS), и тогда ядро Windows, равно как и DOS, остаются не у дел. Второй случай, по всей видимости, описывает ситуацию со Stacker — я думаю, он сам парсил каталоги ФС, а не использовал для этого функции DOS.

Наверное, единственный случай, когда бы DOS задействовался после запуска Windows — это если резиденты при загрузке до Windows искали в памяти образ DOS и обращались непосредственно по этим адресам, не глядя на вектора прерываний. Какие-то вирусы точно вытворяли что-то такое для маскировки.
Верно: через 16-битный драйвер, написанный для DOS — а не через какие-либо компоненты самой DOS

Для того, чтобы загрузить 16-битный драйвер, написанный для DOS — придется загрузить саму DOS. Более того, она уже загружена со всеми драйверами реального режима до запуска win.com.


Что еще забавнее, вы говорите о DOS в v86mode, игнорируя системный DOS.

Никто не спорит, что DOS необходим для загрузки и 16-битных драйверов, и самой Windows. Дискуссия зашла о роли DOS в уже загруженной Windows.
Даже Windows 3.11 является ОС — умеет своими силами виртуализировать память. Но «профессиональная» NT, которой мы пользуемся до сих пор, стала гораздо надёжнее «потребительской» 9х.
И память, и устройства, и многозадачность, и межпроцессную коммуникацию… Конечно ОС.
Попробуйте самостоятельно найти информацию о том, в чём заключается принципиальное отличие линейки Windows 95/Windows 98/Windows Me от линейки Windows NT/Windows 2000/Windows XP/Windows Vista/Windows 7…

Замечу, что Windows 95 и Windows 98 сосуществовали с Windows NT, а Windows Me — с Windows 2000.
Они также сосуществовали с MacOS, с OpenVMS, с OS/390 и с чёртом в ступе — и дальше что? Среди всего этого только одна труъ-ОС, а всё остальное — надстройки?
UFO just landed and posted this here
причем написать на WASM и запустить в браузере 8)
До Windows 3х включительно, вроде, были надстройками.
Начиная с Windows/386 у неё своё собственное ядро с собственными драйверами устройств.
Windows/386 — это вообще очень странный гибрид. Я про эту хохму совсем недавно узнал.
Вы можете поставить Windows/386 и, внезапно, использовать её даже на оригинальной IBM PC. И никаких драйверов устройств там не будет. Только нужно использовать для запуска win86.com.

Но при этом там есть отдельный файлик win386.exe. Который как раз и содержит дравера устройств, поддерживает вытесняющую многозадачности и всё такое прочее… такой себе «DesqView от Microsoft» и вот именно вот это оно запускает в одном из сеансов DOS win86.com (и всё остальное, что есть в Windows).

Так что правильнее говорить, что у Windows/386 в коробке есть нечто со своим собственным ядром.
До Windows 3х включительно, вроде, были надстройками.

А причем здесь Windows 3х? Речь в статье о Windows 9x.
У меня на старом Сименсе Windows 3 загружалась батником ¯\_(ツ)_/¯

Вообще, системы того времени, вплоть до XP, весьма были отточены в плане удобства использования, удобства восприятия элементов управления и ввода: за счет цветов, границ, отступов, да даже смена курсора влияет. В этом плане все современные системы очень сильно проигрывают в угоду "дизайну".

Да, сквероморфный дизайн был самым удобным. И тогдашняя цветовая гамма без всяких там полупрозрачностей и странностей при «уходе» курсора за пределы экрана.
UFO just landed and posted this here
Так, по сути научный подход применяли. Компьютер — это было круто, кто попало софт не писал, юзеры были готовы читать книги и осваивать компьютерную грамотность. Ценили качество и функциональность.
Нынче смотришь на старый виндовс, как на осколки вымершей высокоразвитой цивилизации…
Это означает, что весь сайт всегда будет умещаться в 1,44 МБ (или меньше), как будто пришёл к нам прямиком из 90-х.


Когда-то в 1.44 МБ помещалась целиком операционка с пакетом программ и графическим интерфейсом, а теперь только сайт. :)

но этот сайт имеет некоторые фичи полноценной ОС...

Так он всего лишь имитирует некоторые элементы GUI от Windows.
UFO just landed and posted this here
Сайт очень понравился. Здоровья вам побольше и подольше, что бы побольше всего интересного сделать успели!
Sign up to leave a comment.