Ни DOS, ни BIOS не может вернуть управление в код, расположенный выше 640 килобайт.
Во-первых, насколько я помню, были соответствующие драйверы под Dos, которые позволяли это делать. Во-вторых, какое это имеет отношение к обсуждаемой проблеме? Многие программы под Dos укладывались в этот лимит, что не мешало им работать под W9x через собственные драйверы (модем, звуковые карты, принтеры и т. п.) или вообще через BIOS (доступ к диску).
Появление 32-разрядного доступа к файлам в Windows for Workgroups 3.11 означало, что 16-разрядный реальный режим MS-DOS более не использовался для работы с файлами во время выполнения Windows, а внедрение 32-разрядного доступа к диску в Windows 3.1 позволяло избежать использования BIOS для управления жёсткими дисками. В результате, роль MS-DOS фактически свелась к тому, чтобы загружать ядро Windows, работающее в защищённом режиме.
означало, что 16-разрядный реальный режим MS-DOS более не использовался для работы с файлами во время выполнения Windows, а внедрение 32-разрядного доступа к диску в Windows 3.1 позволяло избежать использования BIOS для управления жёсткими дисками.
Это справедливо только для программ, специально написанных под Windows. При этом программы, написанные под Dos, не запускались в эмуляторе, как это происходит в нормальных OS (те же Linux или Windows NT), где доступ к железу имеет исключительно ядро системы, а получали прямой доступ к железу и BIOS.
Почему некорректен? Ответ на него ясно дает понять, что MS Dos остается неотъемлемой частью Windows 1-2-3 и W9x. Т. е. последние не могут рассматриваться в качеcтве независимых OS.
К диску обращались через вызовы ATA/IDE, также, как и Линукс. Модемы работали через COM порт, и «драйвер» его представлял из себя текстовый файл, «обучающий» венду AT-командам. Winмодемы появились позже. Что за истории с IRQ - понятия не имею.
Я про истории по назначению уникальных IRQ разным устройствам. Частично это решалось на уровне BIOS, частично - на самих устройствах. При наличии большого количества таких устройств данное занятие превращалось в серьезную проблему.
К диску обращались через вызовы ATA/IDE, также, как и Линукс.
Программы под Dos? Уверены? Всегда считал, что они через 13 прерывание работали.
Я про истории по назначению уникальных IRQ разным устройствам.
Товарищ, ты будешь смеяться, но эта история актуальная до сих пор, и внезапно в Линуксе тоже. И даже в PCI, где драйверы обязаны разрешать конфликты IRQ методом определения своего прерывания, однако делают это _внезапно не все драйверы и не всегда.
При наличии большого количества таких устройств данное занятие превращалось в серьезную проблему.
Да :-) И сейчас превращается. Просто в PCI линий IRQ больше, но не сильно, и при наличии однотипных устройств в количестве скажем 6, бывает уходит в коллизии и PCI.
Программы под Dos? Уверены? Всегда считал, что они через 13 прерывание работали.
Профессор, причём тут программы под ДОС. Мы обсуждаем программы для Windows 9x. Они, какбэ, другие. Другой формат, всё другое.
Да ладно, со времен появления устройств Plug and Play эта проблема разруливается автоматически на уровне BIOS.
Товарищ, причём тут программы под ДОС. Мы обсуждаем программы для Windows 9x.
А Вы перечитайте внимательно дискуссию. Речь с самого начала идет про программы, написанные под Dos, но запущенные под Windows 1-2-3 или W9x.
Собственно говоря, я защищаю крайне простой тезис - в нормальных полноценных OS (Windows NT, Linux) такие программы запускаются в эмуляторе. А в Windows 1-2-3 и W9x они (программы) получают прямой доступ к железу и BIOS в обход стандартных средств Windows.
Да ладно, со времен появления устройств Plug and Play эта проблема разруливается автоматически на уровне BIOS.
Нет, профессор. Технология PnP - это всего лишь механизм получения конфигурация устройства. Если раньше адреса и прерывания требовалось указывать драйверу в параметрах или конфиге, то PnP устройство драйвер конфигурирует сам. Но если устройства заняли одно прерывание, но никакой PnP не поможет. Это не сложно - в PCI всего лишь 15 линий прерываний (IRQ), из которых ~10 занято. В ISA конфликты IRQ не допускались, в PCI драйверы обязаны разрешать конфликты, но делают это не всегда. Есть ещё конечно костыли типа APIC, но тут теже проблемы - драйверы, которые должны, но прощают.
Речь с самого начала идет про программы, написанные под Dos, но запущенные под Windows 1-2-3 или W9x.
Это так сделано специально, для совместимости с этими программами. В OS/2, например, сделано ещё больше - там даже можно назначить объём нижней памяти, которую ОС не будет использовать. Вы OS/2 тоже считаете оболочкой на DOS ?
Собственно говоря, я защищаю крайне простой тезис - в нормальных полноценных OS (Windows NT, Linux) такие программы запускаются в эмуляторе.
Ты путаешь тёплое с мягким. В 95 виндах отсутствует защита памяти, поэтому проги могли обращаться куда угодно. У тебя под виндой досовая прога вполне может зависнуть, не вызывая краха винды (но может и завалить винду) и ты её вполне можешь прибить. В чистом досе у тебя такого варианта прибить прогу нет.
В ISA конфликты IRQ не допускались, в PCI драйверы обязаны разрешать конфликты
Собственно говоря, Вы сами объяснили, что кошмар с IRQ остался в прошлом ;).
но делают это не всегда. Есть ещё конечно костыли типа APIC, но тут теже проблемы - драйверы, которые должны, но прощают.
Косяки в софте, в том числе и в драйверах, были, есть и будут всегда. С этим, увы, вряд ли удастся что-то сделать. Но косяки можно исправлять. В отличие от ситуации с ISA, где проблема в принципе не имела программного решения. И именно поэтому я, например, за последние 20 лет ни разу (!) не слышал о проблемах с IRQ. А сколько раз Вам пришлось с ней столкнуться за последнюю пару десятилетий?
Я никогда не видел эту OS, но из того, что читал, у меня сложилось впечатление, что она гораздо ближе к Windows NT, чем к W9x. Неужели там Dos-программы имеют прямой доступ к железу? Ведь давать прямой доступ к железу прикладным программам означает жертвовать стабильностью ради совместимости. А стабильность является, пожалуй, одним из самых важных свойств OS.
досовая прога вполне может зависнуть, не вызывая краха винды
Это если очень повезет. Отсутствие защиты памяти и конкуренция за железо как правило, вели к краху всей системы :(. Я еще на Windows 3.11 наелся этого дерьма по полной, не случайно же при первой же возможности свалил на Windows NT.
Это само по себе удивительно, но даже если и так, сравните с актуальностью проблемы в 90-е годы. Где разрулить конфликт IRQ между звуковой картой, мышкой, принтером и модемом уже зачастую представляло собой нетривиальную задачу.
Смотря, где расположено его IO. Если оно расположено в 16 битных адресах, доступных DOS, то да, имеют.
Вот цитата из Wikipedia:
OS/2 v2.00 (весна 1992 года)
Эта версия 32-разрядная (за исключением видеоподсистемы), продвигалась IBM под слоганом «лучшая DOS,
чем MS-DOS, и лучшая Windows, чем Windows». Использование виртуальных DOS-машин (VDM) позволяет
запускать сразу несколько DOS- и Windows-задач. Для запуска программ Windows используется Win-OS/2,
основанная на лицензированной IBM Windows 3.1. Использование виртуальных машин позволило изолировать
Windows и DOS-задачи, в результате чего
сбои в программах не препятствовали продолжению выполнения других программ. Реализованы также такие
механизмы межпрограммного взаимодействия, как динамический обмен данных (Dynamic Data
Exchange) и буфер обмена.
Минимально необходимым для работы этой версии системы является процессор 80386, ядром системы
используется его защищённый режим. DOS-приложения используют режим виртуального 8086. Для
работы требуется объём оперативной памяти 8 мегабайт.
Т. е. уже начиная с версии 2.0, в OS/2 досовские программы запускались в изолированных виртуальных машинах без доступа к реальному железу. Как раз из соображений стабильности.