0,0
рейтинг
24 августа 2013 в 13:03

Какую роль играла MS-DOS в составе Windows 95? перевод

MS-DOS в составе Windows 95 использовалась для двух целей:
  • Она служила загрузчиком.
  • Она выступала в качестве слоя совместимости с 16-битными драйверами.
Когда Windows 95 стартовала, сначала загружалась специальная версия MS-DOS, именно она обрабатывала ваш файл CONFIG.SYS, запускала COMMAND.COM, который выполнял ваш AUTOEXEC.BAT и в конце концов выполнял WIN.COM, который в свою очередь начинал процесс загрузки 32-битного менеджера виртуальных машин VMM.

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

Программа WIN.COM начинала загрузку того, что большинство людей называют собственно «Windows». Посредством копии MS-DOS она загружала менеджер виртуальных машин, считывала файл SYSTEM.INI, загружала драйверы виртуальных устройств, затем выключала EMM386 (если таковой был) и переключалась в защищённый режим. «Настоящая Windows» с точки зрения большинства людей — именно защищённый режим.

В защищённом режиме драйверы виртуальных устройств творили свою магию. В числе их действий было вытаскивание всего состояния MS-DOS, перевод его в состояние 32-битной файловой подсистемы и отключение MS-DOS. Все дальнейшие файловые операции направлялись в 32-битную файловую подсистему. Когда программа обращалась к int 21h, ответственной за обработку оказывалась 32-битная файловая подсистема.

Здесь вступает в игру вторая роль MS-DOS. Видите ли, программы и драйверы MS-DOS любили встраиваться в глубины операционной системы. Они могли заменять обработчик прерывания 21h, они могли патчить код системы, они могли заменять низкоуровневые дисковые обработчики int 25h и int 26h. Они могли также творить умопомрачительные вещи с прерываниями BIOS типа int 13h, ответственного за работу с дисками.

Когда программа обращалась к int 21h, сначала запрос направлялся в 32-битную файловую подсистему, где проходил некоторую предобработку. Затем, если файловая подсистема обнаруживала, что кто-то перехватил вектор int 21h, она переходила назад в 16-битный код, чтобы позволить перехватчику выполниться. Замена вектора int 21h идеологически похожа на сабклассинг окна. Вы получаете старый вектор и устанавливаете новый вектор. Когда установленный вами обработчик вызывается, вы что-то делаете, а затем вызываете старый обработчик. После возврата из старого обработчика вы можете ещё что-нибудь сделать, прежде чем вернуть управление.

Одним из 16-битных драйверов, загружавшихся из CONFIG.SYS, был IFSMGR.SYS. Его задачей было перехватить MS-DOS первым, прежде чем все остальные драйверы и программы получат свой шанс! Этот драйвер был в сговоре с 32-битной файловой подсистемой, возвращаясь из 16-битного кода назад в 32-битный, чтобы файловая подсистема могла продолжить свою работу.

Другими словами, MS-DOS была всего лишь исключительно искусной подсадной уткой. 16-битные драйверы и программы патчили и перехватывали обработчики, которые для них выглядели совсем как настоящая MS-DOS, но в действительности были приманкой. Если 32-битная файловая подсистема видела, что кто-то купился на приманку, она заставляла подсадную утку крякать.

Начнём с системы без «злобных» драйверов и программ, внедрившихся в MS-DOS.


Это рай. 32-битная файловая подсистема оказалась способной проделать всю работу, не взаимодействуя с надоедливыми драйверами, творящими причудливые вещи. Обратите внимание на дополнительный шаг обновления переменных состояния MS-DOS. Хотя мы и извлекли их в ходе загрузки, мы поддерживаем их в актуальном состоянии, поскольку драйверы и программы часто «знали» о них, обходили операционную систему и работали непосредственно с переменными состояния. Следовательно, файловая подсистема должна была поддерживать иллюзию ответственности MS-DOS (несмотря на то, что на самом деле MS-DOS уже не работает), чтобы такие драйверы и программы видели то, что ожидали.

Обратите ещё внимание на то, что переменные состояния разные для разных виртуальных машин. (То есть каждый открытый сеанс MS-DOS получал свою собственную копию переменных состояния.) В конце концов, у каждого сеанса MS-DOS была отдельная текущая папка, отдельная таблица файлов и тому подобное. Впрочем, всё это было спектаклем, потому что настоящий список открытых файлов хранился в 32-битной файловой подсистеме. Иначе и быть не могло, поскольку дисковые кэши должны были быть согласованы, а ограничения совместного доступа к файлам должны были проверяться глобально. Если один сеанс MS-DOS открыл файл для монопольного доступа, то попытка программы, работающей в другом сеансе MS-DOS, открыть тот же файл должна была завершиться с ошибкой.

Хорошо, это был простой случай. Сложный случай: у вас был драйвер, перехвативший int 21h. Я не знаю, что этот драйвер делает, допустим, это сетевой драйвер, перехватывающий ввод-вывод для сетевых дисков и обрабатывающий его как-то особенно. Предположим также, что какая-то TSR-программа, запущенная в сеансе MS-DOS, перехватила int 21h, чтобы печатать на экран 1, когда int 21h вызывается, и 2, когда int 21h завершается. Проследим обращение к локальному диску (не сетевому, так что сетевой драйвер ничего не делает):


Заметьте, что всю работу по-прежнему делает 32-битная файловая подсистема. Вызов проходит по всей 16-битной цепочке только для поддержания иллюзии ответственности 16-битной MS-DOS. В 16-битном мире выполнялся только код, установленный TSR и драйвером, плюс маленький кусочек IFSMGR, связывающий компоненты. Никакой код 16-битной MS-DOS не выполнялся. 32-битная файловая система перехватила у MS-DOS всю работу.

Аналогичный танец «перехватить нормальную работу, но позволить необычные действия, если кто-то попросил необычные действия» происходил, когда подсистема ввода-вывода принимала управление вашим жёстким диском от 16-битных драйверов устройств. Если подсистема распознавала драйверы, она собирала их состояние и обрабатывала все операции так же, как 32-битная файловая подсистема обрабатывала операции вместо 16-битной MS-DOS. С другой стороны, если подсистема не распознавала какой-то драйвер, она оставляла его ответственным за диск. Компонент, передающий команды из 32-битной среды 16-битному драйверу, назывался RMM.

Если вам не повезло использовать RMM для какого-то диска, вы, вероятно, заметили, что производительность операций с этим диском ужасна. Причиной тому использование старого неуклюжего 16-битного драйвера вместо быстрого многопоточного 32-битного. (Пока 16-битный драйвер обрабатывал одну операцию ввода-вывода, невозможно было обрабатывать другой ввод-вывод, потому что 16-битные драйверы не были рассчитаны на многопоточность.)

RMM, как ни странно, оказался полезен своей ужасностью, потому что его использование было ранним признаком заражения вашего компьютера MS-DOS-вирусом. В конце концов, MS-DOS-вирусы делали то же, что и TSR и драйверы: они перехватывали векторы прерываний и получали контроль над вашим жёстким диском. С точки зрения подсистемы ввода-вывода, они выглядели в точности как 16-битные драйверы жёсткого диска! Когда люди жаловались «Windows внезапно начала ужасно тормозить», мы направляли их на страницу производительности системы в панели управления и спрашивали, есть ли там строка «Часть дисков работает в режиме MS-DOS» или «Все диски используют режим совместимости с MS-DOS». Если есть, то за диски отвечал RMM, и если вы не меняли «железо», это, вероятно, означало вирус.

Наконец, некоторые части MS-DOS не имели отношения к вводу-выводу. Например, были функции выделения памяти, разбора строки с возможными шаблонными символами в формат FCB и тому подобные. Такие функции по-прежнему обрабатывались MS-DOS, поскольку это всего лишь функции «вспомогательной библиотеки» и ничего не выигрывали от переписывания в 32-битном коде, кроме возможности сказать «да, мы это сделали». Старый 16-битный код прекрасно работал, и использование готового кода позволяло сохранить совместимость с программами, патчившими MS-DOS с целью изменить поведение таких функций.

Первый комментарий к оригинальной статье: «Больше всего впечатляет, что бо́льшая часть этого бо́льшую часть времени действительно работала (в основном).»
Перевод: Raymond Chen
Евгений Гречников @grechnik
карма
79,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (18)

  • +12
    Первый комментарий к оригинальной статье: «Больше всего впечатляет, что бо́льшая часть этого бо́льшую часть времени действительно работала (в основном).»


    Автор открыл новый жанр статей — хорроры. Читать было по настоящему страшно. Многое не укладывается в голову и ты этому просто не хочешь верить, что такое вообще могло быть кем-то написано.
    А можно еще ужастиков, только про xp и win7?
    • +6
      Ядра линейки NT в этом плане чище, так что прямо-таки ужасов не обещаю. При переходе с 32 бит на 64 тоже не всё гладко, но, по крайней мере, 64-битное ядро не вызывает 32-битный код такими же танцами, как это приходилось делать Windows 95.
      Вообще про совместимость в Windows можно писать очень много, некоторые планы у меня есть.
      • +2
        Пишите! Тема очень интересная, спасибо за перевод!
  • +14
    Господи, а я эту ось-инвалида ещё ругал за вечные тормоза и зависания… как я мог… если бы я знал…
    • +7
      Напомнило «Юшка» Платонова :)
      много букв
      Андрей Платонов
      ЮШКА

      Давно, в старинное время, жил у нас на улице старый на вид человек. Он работал в кузнице при большой московской дороге; он работал подручным помощником у главного кузнеца, потому что он плохо видел глазами и в руках у него мало было силы. Он носил в кузницу воду, песок и уголь, раздувал мехом горн, держал клещами горячее железо на наковальне, когда главный кузнец отковывал его, вводил лошадь в станок, чтобы ковать ее, и делал всякую другую работу, которую нужно было делать. Звали его Ефимом, но все люди называли его Юшкой. Он был мал ростом и худ; на сморщенном лице его, вместо усов и бороды, росли по отдельности редкие седые волосы; глаза же у него были белые, как у слепца, и в них всегда стояла влага, как неостывающие слезы.
      Юшка жил на квартире у хозяина кузницы, на кухне. Утром он шел в кузницу, а вечером шел обратно на ночлег. Хозяин кормил его за работу хлебом, щами и кашей, а чай, сахар и одежда у Юшки были свои; он их должен покупать за свое жалованье — семь рублей и шестьдесят копеек в месяц. Но Юшка чаю не пил и сахару не покупал, он пил воду, а одежду носил долгие годы одну и ту же без смены: летом он ходил в штанах и в блузе, черных и закопченных от работы, прожженных искрами насквозь, так что в нескольких местах видно было его белое тело, и босой, зимою же он надевал поверх блузы еще полушубок, доставшийся ему от умершего отца, а ноги обувал в валенки, которые он подшивал с осени, и носил всякую зиму всю жизнь одну и ту же пару.
      Когда Юшка рано утром шел по улице в кузницу, то старики и старухи подымались и говорили, что вон Юшка уж работать пошел, пора вставать, и будили молодых. А вечером, когда Юшка проходил на ночлег, то люди говорили, что пора ужинать и спать ложиться — вон и Юшка уж спать пошел.
      А малые дети и даже те, которые стали подростками, они, увидя тихо бредущего старого Юшку, переставали играть на улице, бежали за Юшкой и кричали:
      — Вон Юшка идет! Вон Юшка!
      Дети поднимали с земли сухие ветки, камешки, сор горстями и бросали в Юшку.
      — Юшка! — кричали дети. — Ты правда Юшка?
      Старик ничего не отвечал детям и не обижался на них; он шел так же тихо, как прежде, и не закрывал своего лица, в которое попадали камешки и земляной сор.
      Дети удивлялись Юшке, что он живой, а сам не серчает на них. И они снова окликали старика:
      — Юшка, ты правда или нет?
      Затем дети снова бросали в него предметы с земли, подбегали к нему, трогали его и толкали, не понимай, почему он не поругает их, не возьмет хворостину и не погонится за ними, как все большие люди делают. Дети не знали другого такого человека, и они думали — вправду ли Юшка живой? Потрогав Юшку руками или ударив его, они видели, что он твердый и живой.
      Тогда дети опять толкали Юшку и кидали в него комья земли, — пусть он лучше злится, раз он вправду живет на свете. Но Юшка шел и молчал. Тогда сами дети начинали серчать на Юшку. Им было скучно и нехорошо играть, если Юшка всегда молчит, не пугает их и не гонится за ними. И они еще сильнее толкали старика и кричали вкруг него, чтоб он отозвался им злом и развеселил их. Тогда бы они отбежали от него и в испуге, в радости снова бы дразнили его издали и звали к себе, убегая затем прятаться в сумрак вечера, в сени домов, в заросли садов и огородов. Но Юшка не трогал их и не отвечал им.
      Когда же дети вовсе останавливали Юшку или делали ему слишком больно, он говорил им:
      — Чего вы, родные мои, чего вы, маленькие!.. Вы, должно быть, любите меня!.. Отчего я вам всем нужен?.. Обождите, не надо меня трогать, вы мне в глаза землей попали, я не вижу.
      Дети не слышали и не понимали его. Они по-прежнему толкали Юшку и смеялись над ним. Они радовались тому, что с ним можно все делать, что хочешь, а он им ничего не делает.
      Юшка тоже радовался. Он знал, отчего дети смеются над ним и мучают его. Он верил, что дети любят его, что он нужен им, только они не умеют любить человека и не знают, что делать для любви, и поэтому терзают его.
      Дома отцы и матери упрекали детей, когда они плохо учились или не слушались родителей: «Вот ты будешь такой же, как Юшка! — Вырастешь, и будешь ходить летом босой, а зимой в худых валенках, и все тебя будут мучить, и чаю с сахаром не будешь пить, а одну воду!»
      Взрослые пожилые люди, встретив Юшку на улице, тоже иногда обижали его. У взрослых людей бывало злое горе или обида, или они были пьяными, тогда сердце их наполнялось лютой яростью. Увидев Юшку, шедшего в кузницу или ко двору на ночлег, взрослый человек говорил ему:
      — Да что ты такой блажно́й, непохожий ходишь тут? Чего ты думаешь такое особенное?
      Юшка останавливался, слушал и молчал в ответ.
      — Слов у тебя, что ли, нету, животное такое! Ты живи просто и честно, как я живу, а тайно ничего не думай! Говори, будешь так жить, как надо? Не будешь? Ага!.. Ну ладно!
      И после разговора, во время которого Юшка молчал, взрослый человек убеждался, что Юшка во всем виноват, и тут же бил его. От кротости Юшки взрослый человек приходил в ожесточение и бил его больше, чем хотел сначала, и в этом зле забывал на время свое горе.
      Юшка потом долго лежал в пыли на дороге. Очнувшись, он вставал сам, а иногда за ним приходила дочь хозяина кузницы, она подымала его и уводила с собой.
      — Лучше бы ты умер, Юшка, — говорила хозяйская дочь. — Зачем ты живешь?
      Юшка глядел на нее с удивлением. Он не понимал, зачем ему умирать, когда он родился жить.
      — Это отец-мать меня родили, их воля была, — отвечал Юшка, — мне нельзя помирать, и я отцу твоему в кузне помогаю.
      — Другой бы на твое место нашелся, помощник какой!
      — Меня, Даша, народ любит!
      Даша смеялась.
      — У тебя сейчас кровь на щеке, а на прошлой неделе тебе ухо разорвали, а ты говоришь — народ тебя любит!..
      — Он меня без понятия любит, — говорил Юшка. — Сердце в людях бывает слепое.
      — Сердце-то в них слепое, да глаза у них зрячие! — произносила Даша. — Иди скорее, что ль! Любят-то они по сердцу, да бьют тебя по расчету.
      — По расчету они на меня серчают, это правда, — соглашался Юшка. — Они мне улицей ходить не велят и тело калечат.
      — Эх ты, Юшка, Юшка! — вздыхала Даша. — А ты ведь, отец говорил, нестарый еще!
      — Какой я старый!.. Я грудью с детства страдаю, это я от болезни на вид оплошал и старым стал…
      По этой своей болезни Юшка каждое лето уходил от хозяина на месяц. Он уходил пешим в глухую дальнюю деревню, где у него жили, должно быть, родственники. Никто не знал, кем они ему приходились.
      Даже сам Юшка забывал, и в одно лето он говорил, что в деревне у него живет вдовая сестра, а в другое, что там племянница. Иной раз он говорил, что идет в деревню, а в иной, что в самоё Москву. А люди думали, что в дальней деревне живет Юшкина любимая дочь, такая же незлобная и лишняя людям, как отец.
      В июне или августе месяце Юшка надевал на плечи котомку с хлебом и уходил из нашего города. В пути он дышал благоуханием трав и лесов, смотрел на белые облака, рождающиеся в небе, плывущие и умирающие в светлой воздушной теплоте, слушал голос рек, бормочущих на каменных перекатах, и больная грудь Юшки отдыхала, он более не чувствовал своего недуга — чахотки. Уйдя далеко, где было вовсе безлюдно, Юшка не скрывал более своей любви к живым существам. Он склонялся к земле и целовал цветы, стараясь не дышать на них, чтоб они не испортились от его дыхания, он гладил кору на деревьях и подымал с тропинки бабочек и жуков, которые пали замертво, и долго всматривался в их лица, чувствуя себя без них осиротевшим. Но живые птицы пели в небе, стрекозы, жуки и работящие кузнечики издавали в траве веселые звуки, и поэтому на душе у Юшки было легко, в грудь его входил сладкий воздух цветов, пахнущих влагой и солнечным светом.
      По дороге Юшка отдыхал. Он садился в тень подорожного дерева и дремал в покое и тепле. Отдохнув, отдышавшись в поле, он не помнил более о болезни и шел весело дальше, как здоровый человек. Юшке было сорок лет от роду, но болезнь давно уже мучила его и состарила прежде времени, так что он всем казался ветхим.
      И так каждый год уходил Юшка через поля, леса и реки в дальнюю деревню или в Москву, где его ожидал кто-то или никто не ждал, — об этом никому в городе не было известно.
      Через месяц Юшка обыкновенно возвращался обратно в город и опять работал с утра до вечера в кузнице. Он снова начинал жить по-прежнему, и опять дети и взрослые, жители улицы, потешались над Юшкой, упрекали его за безответную глупость и терзали его.
      Юшка смирно жил до лета будущего года, а среди лета надевал котомку за плечи, складывал в отдельный мешочек деньги, что заработал и накопил за год, всего рублей сто, вешал тот мешочек себе за пазуху на грудь и уходил неизвестно куда и неизвестно к кому.
      Но год от году Юшка все более слабел, потому шло и проходило время его жизни и грудная болезнь мучила его тело и истощала его. В одно лето, когда Юшке уже подходил срок отправляться в свою дальнюю деревню, он никуда не пошел. Он брел, как обычно вечером, уже затемно из кузницы к хозяину на ночлег. Веселый прохожий, знавший Юшку, посмеялся над ним:
      — Чего ты землю нашу топчешь, божье чучело! Хоть бы ты помер, что ли, может, веселее бы стало без тебя, а то я боюсь соскучиться…
      И здесь Юшка осерчал в ответ — должно быть, первый раз в жизни.
      — А чего я тебе, чем я вам мешаю!.. Я жить родителями поставлен, я по закону родился, я тоже всему свету нужен, как и ты, без меня тоже, значит, нельзя…
      Прохожий, не дослушав Юшку, рассердился на него:
      — Да ты что! Ты чего заговорил? Как ты смеешь меня, самого меня с собой равнять, юрод негодный!
      — Я не равняю, — сказал Юшка, — а по надобности мы все равны…
      — Ты мне не мудруй! — закричал прохожий. — Я сам помудрей тебя! Ишь, разговорился, я тебя выучу уму!
      Замахнувшись, прохожий с силой злобы толкнул Юшку в грудь, и тот упал навзничь.
      — Отдохни, — сказал прохожий и ушел домой пить чай.
      Полежав, Юшка повернулся вниз лицом и более не пошевелился и не поднялся.
      Вскоре проходил мимо один человек, столяр из мебельной мастерской. Он окликнул Юшку, потом переложил его на спину и увидел во тьме белые открытые неподвижные глаза Юшки. Рот его был черен; столяр вытер уста Юшки ладонью и понял, что это была спекшаяся кровь. Он опробовал еще место, где лежала голова Юшки лицом вниз, и почувствовал, что земля там была сырая, ее залила кровь, хлынувшая горлом из Юшки.
      — Помер, — вздохнул столяр. — Прощай, Юшка, и нас всех прости. Забраковали тебя люди, а кто тебе судья!..
      Хозяин кузницы приготовил Юшку к погребению. Дочь хозяина Даша омыла тело Юшки, и его положили на стол в доме кузнеца. К телу умершего пришли проститься с ним все люди, старые и малые, весь народ, который знал Юшку и потешался над ним и мучил его при жизни.
      Потом Юшку похоронили и забыли его. Однако без Юшки жить людям стало хуже. Теперь вся злоба и глумление оставались среди людей и тратились меж ними, потому что не было Юшки, безответно терпевшего всякое чужое зло, ожесточение, насмешку и недоброжелательство.
      Снова вспомнили про Юшку лишь глубокой осенью. В один темный непогожий день в кузницу пришла юная девушка и спросила у хозяина-кузнеца: где ей найти Ефима Дмитриевича?
      — Какого Ефима Дмитриевича? — удивился кузнец. — У нас такого сроду тут и не было.
      Девушка, выслушав, не ушла, однако, и молча ожидала чего-то. Кузнец поглядел на нее: что за гостью ему принесла непогода. Девушка на вид была тщедушна и невелика ростом, но мягкое чистое лицо ее было столь нежно и кротко, а большие серые глаза глядели так грустно, словно они готовы были вот-вот наполниться слезами, что кузнец подобрел сердцем, глядя на гостью, и вдруг догадался:
      — Уж не Юшка ли он? Так и есть — по паспорту он писался Дмитричем…
      — Юшка, — прошептала девушка. — Это правда. Сам себя он называл Юшкой.
      Кузнец помолчал.
      — А вы кто ему будете? — Родственница, что ль?
      — Я никто. Я сиротой была, а Ефим Дмитриевич поместил меня, маленькую, в семейство в Москве, потом отдал в школу с пансионом… Каждый год он приходил проведывать меня и приносил деньги на весь год, чтоб я жила и училась. Теперь я выросла, я уже окончила университет, а Ефим Дмитриевич в нынешнее лето не пришел меня проведать. Скажите мне, где же он, — он говорил, что работал у вас двадцать пять лет…
      — Половина полвека прошло, состарились вместе, — сказал кузнец.
      — Он закрыл кузницу и повел гостью на кладбище. Там девушка припала к земле, в которой лежал мертвый Юшка, человек, кормивший ее с детства, никогда не евший сахара, чтоб она ела его.
      Она знала, чем болел Юшка, и теперь сама окончила ученье на врача и приехала сюда, чтобы лечить того, кто ее любил больше всего на свете и кого она сама любила всем теплом и светом своего сердца…
      С тех пор прошло много времени. Девушка-врач осталась навсегда в нашем городе. Она стала работать в больнице для чахоточных, она ходила по домам, где были туберкулезные больные, и ни с кого не брала платы за свой труд. Теперь она сама уже тоже состарилась, однако по-прежнему весь день она лечит и утешает больных людей, не утомляясь утолять страдание и отдалять смерть от ослабевших. И все ее знают в городе, называя дочерью доброго Юшки, позабыв давно самого Юшку и то, что она не приходилась ему дочерью.
      • +3
        Как мило. Я даже на несколько минут забыл, что я на Хабрахабре :)
      • 0
        Немного в жизни вещей, из-за которых у меня на глаза наворачиваются слезы…
        Очень немного.
        Спасибо.
        • 0
          Да, сильный рассказ, как прочитал его классе в 6-м, так и врезался в память.
  • +1
    Она выступала в качестве слоя совместимости с 16-битными драйверами.

    Ну, так в жизни и бывает. После появления Win 3.1 все думали, что MS-DOS со своими драйверами исчезла и ушла в прошлое, а на самом деле
    Windows 3.1 was not OS, but a graphic shell on top of MS-DOS.

    т.е. MS-DOS никуда не делась, а продолжила жить в Win в причудливых формах. Может, и до сих пор…
    • +2
      Неа. Windows NT нас всех спасла — она вообще потомок полуоси, которая не имела под собой доса.
      • 0
        А куски Win 3.x таки живут в Win NT до сих пор, в причудливых формах и местах :-) Например вплоть до Windows Vista, на сколько я помню, использовалось трёшечное окно установки новых шрифтов, а в 98 (и, скорее всего, NT4, а может даже и в 2000) в системе был полноценный progman.exe, который было можно установить в качестве оболочки (вместо explorer.exe) и получить десктоп как в 3.x :-)
        • 0
          Могу ошибаться, но, вроде бы, я на progman.exe натыкался то ли в XP, то ли вообще в 7 =)
          • 0
            В ХР точно есть.
  • 0
    Всегда бесило это название «режим эмуляции MS-DOS». Там была отличная полноценная MS DOS 7.0/7.1 с ядром, функционально превосходящим MS DOS 6.22 почти во всём и почти полностью совместимая с предыдущими версиями.
  • 0
    Вот интересно откуда я мог узнать все эти подробности в 95… ну ладно, хотябы в 2000-м году? Все делали методом тыка(
    • 0
      А откуда их ещё узнавать, кроме как методом тыка? Метод тыка, устная передача опыта от коллег/друзей, Фидо-эхи по теме и две книжки: «Секреты Windows 98» Ливингстона и «IBM PC для пользователя» Фигурнова :-)
  • –7
    Написано красиво, а на деле прямо из винды можно было запустить дос приложение, которое перехватит всё управление на себя и без проблем заставит крякать винду. Винда тех лет — просто оболочка для доса.
  • 0
    Когда программа обращалась к int 21h, сначала запрос направлялся в 32-битную файловую подсистему, где проходил некоторую предобработку. Затем, если файловая подсистема обнаруживала, что кто-то перехватил вектор int 21h, она переходила назад в 16-битный код, чтобы позволить перехватчику выполниться.

    Я оглянулся посмотреть не оглянулась ли она, чтоб посмотреть не оглянулся ли я ©

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.