Pull to refresh

Comments 20

Привело к мысли о Windows 3.1 — первой действительно доминирующей версией этой операционной системы


Windows 3.1 это не операционная система. Это программа для операционной системы ms-dos
Windows 95 это операционная система
Я думаю, достаточно того, что Microsoft в своих анонсах и документации никогда не называла Windows операционной системой. Вплоть до выхода Windows 95. (Да, я в курсе, что NT 3.5 вышла раньше 95, с ней всё понятно.) Термин, который тогда использовался − операционная среда (operating environment). GEM Desktop, например, тоже назывался операционной средой.

В то же время MS DOS, CP/M, Xenix и др. вполне себе назывались и являлись операционными системами. В отличие от Windows 1/2/3.
Пользуясь случаем — она настолько-же операционная система как и 3.1/3.11. Операционная система это NT линейка.
Во многом зависит от того, что вкладывать в понятие «ОС». Но всё-таки я бы отказал Win 95/98/ME в этом.
Ёпта! Так любая Винда на ОС! И все ваши Линухи не ОС! Они все запускаются из под BIOS/UEFi — вот это вот тру ОС! (Sarcasm)

То, что она использовала DOS как промежуточное звено в загрузке, не значит, что это не настоящая ОС.

Вы даже не представляете на сколько это не правда

Windows 3.1 это не операционная система.

Нескромный вопрос: а что такое «операционная система» в вашем понимании? Нечто, обязательно запускающееся из бутсектора, что ли?

Чтобы прекратить споры.


Полная ОС или оболочка для MS-DOS?


Системы Windows (не только 3.x и ниже, но также и Windows 9x: 95, 98 и Me) имеют сложную, оригинальную, гибридную и не полностью документированную внутреннюю структуру. Прежде всего, для их работы требуется MS-DOS, то есть они выполняются как бы «над» MS-DOS. По этой причине трудно определить, являются ли они операционными системами или всего лишь оболочками-расширениями для MS-DOS. Многие пользователи считают их операционными системами, поскольку они выглядят так же, как и многие полноценные ОС. В то же время другие не считают это семейство Windows настоящими операционными системами.


Windows 3.x требует предварительно установленной копии MS-DOS, которая должна загружаться при включении компьютера. Windows затем запускается как приложение, и её работа может быть прервана в любое время, в результате чего пользователь возвращается в обычную командную оболочку MS-DOS. (Для сравнения: в UNIX-подобных операционных системах (в том числе и Linux) так запускается и работает X Window System — графический сервер, реализующий GUI.) Кроме того, драйверы для некоторых устройств (включая драйверы для дисководов для компакт-дисков и доступа к сети) предоставляются MS-DOS. С другой стороны, Windows требует специальным образом написанных приложений и имеет особый формат для исполняемых файлов, который значительно сложнее, чем аналогичный формат в MS-DOS. Windows имеет большое количество собственных драйверов и по большей части собственную систему управления памятью.


Помимо этого, MS-DOS не изолирует приложения от аппаратного обеспечения и не защищает себя саму от приложений. Резидентная часть MS-DOS сродни библиотеке функций, предназначенных для работы с дисковыми накопителями и для загрузки приложений с них. Программа в среде MS-DOS имеет возможность выполнять любые действия, в том числе заменять или пропускать код MS-DOS или его часть, временно или постоянно. Windows использует эту возможность в своих собственных целях, и уровень пропуска стандартного кода MS-DOS возрастал с каждой новой версией. Windows 3.1 и её 32-разрядный доступ к диску заменял код BIOS для доступа к дискам, а Windows для рабочих групп 3.11 заменяла «родной» код MS-DOS для обращения к файлам. Это впоследствии сделало возможной поддержку длинных имён файлов в Windows 95, в результате чего файловый код DOS оказался устаревшим.


Кроме того, программа MS-DOS, работающая в среде Windows, могла использовать те возможности Windows, которые не поддерживались MS-DOS. Программа MS-DOS, выполняющаяся в Windows для рабочих групп 3.11, автоматически использовала 32-разрядный доступ к файлам вместо обычных функций доступа к файлам и дискам, имеющихся в MS-DOS. Аналогично, особым образом написанная программа для MS-DOS, работающая в Windows 95, может использовать длинные имена файлов.


Такие же принципы работы характерны для Windows 98 и Windows Me, в которых по-прежнему смешаны 16-разрядный и 32-разрядный код. Тем не менее, с каждой последующей версией 16-разрядный код становился всё менее заметным.


Семейство Windows NT состоит из операционных систем, которые полностью отделены от MS-DOS и целиком составлены из 32-разрядного кода. Программы MS-DOS и Win16 работают в специальных виртуальных машинах DOS, которые реализованы посредством обыкновенного API Win32.


Тем не менее Windows 3.x может быть успешно запущена поверх DosBox, в том числе на мобильных устройствах: телефонах Motorola MotoMagx, карманных компьютерах с операционными системами Windows Mobile, Android и Symbian OS 9.


Операционная система — это комплекс взаимосвязанных программ, предназначенных для управления ресурсами компьютера и организации взаимодействия с пользователем.


В логической структуре типичной вычислительной системы операционная система занимает положение между устройствами с их микроархитектурой, машинным языком и, возможно, собственными (встроенными) микропрограммами (BIOS и драйверами) — с одной стороны — и прикладными программами с другой.


Разработчикам программного обеспечения операционная система позволяет абстрагироваться от деталей реализации и функционирования устройств, предоставляя минимально необходимый набор функций.


BIOS (от англ. basic input/output system — «базовая система ввода-вывода») — это набор микропрограмм, реализующих API для работы с аппаратурой компьютера и подключёнными к нему устройствами.


BIOS относится к системному программному обеспечению (ПО).


В современных компьютерах процесс начальной загрузки начинается с выполнения процессором команд, расположенных в постоянной памяти (например на IBM PC — команд BIOS), начиная с предопределённого адреса (процессор делает это после перезагрузки без какой бы то ни было помощи). Данное программное обеспечение может обнаруживать устройства, подходящие для загрузки, и загружать со специального раздела выбранного устройства (чаще всего загрузочного сектора данного устройства) загрузчик ОС.


Загрузчик операционной системы — системное программное обеспечение, обеспечивающее загрузку операционной системы непосредственно после включения компьютера (процедуры POST) и начальной загрузки.


Исходя из вышеприведённой терминологии, Windows 3.x считаться полноценной ОС не может, так в свою очередь напрямую зависит от наличия другой ОС — MS DOS.
В случае Windows 3.x первой загружается MS DOS. Windows 3.x не подменяет собой MS DOS. При завершении работы Windows 3.x, управление возвращается MS DOS.


А вот начиная с Windows 95 ситуация меняется кардинально. Для работы Windows 95 другая ОС уже не нужна. Более того, Windows 95 при необходимости самостоятельно эмулирует MS DOS.
Эмуляция (англ. emulation) в вычислительной технике — комплекс программных, аппаратных средств или их сочетание, предназначенное для копирования (или эмулирования) функций одной вычислительной системы (гостя) на другой, отличной от первой, вычислительной системе (хосте) таким образом, чтобы эмулированное поведение как можно ближе соответствовало поведению оригинальной системы (гостя).
При включении компьютера с установленной Windows 95, загрузчик ОС загружает собственное ядро Windows 95. Windows 95 является полноценной и самостоятельной операционной системой. А вот с Windows 3.x так не получится — сперва MS DOS, потом всё остальное.

В случае Windows 3.x первой загружается MS DOS. Windows 3.x не подменяет собой MS DOS. При завершении работы Windows 3.x, управление возвращается MS DOS.

А вот начиная с Windows 95 ситуация меняется кардинально. Для работы Windows 95 другая ОС уже не нужна. Более того, Windows 95 при необходимости самостоятельно эмулирует MS DOS.

Мне кажется, автор этого текста и Windows 3.1 не очень хорошо знает, и Windows 95.
Потому как и первая в общем случае никак не взаимодействует с сервисами MS DOS, лишь предоставляя к ним доступ для тех приложений, которым это нужно, а самостоятельно работает с устройствами компьютера с помощью собственных драйверов. И саму DOS использует лишь для запуска. Точно так же и вторая использует DOS для запуска, и никакие сервисы DOS не эмулирует, а также просто позволяет доступ к ним для DOS-приложений в обход собственного API.

Никак не взаимодействуя с сервисами MS DOS, лишь предоставляя к ним доступ — это как?


DrPass, Вы когда-нибудь писали системные программы для MS DOS (например, резидентные), для Windows 3.x и далее?


Когда кажется - креститься надо

Архитектура


Windows 95 была спроектирована так, чтобы быть максимально совместимой с существующими 16-битными Windows и MS-DOS программами, а также с драйверами устройств, в то же время предоставляя более быструю и стабильную работу. Архитектура Windows 95 есть эволюция расширенного 386 режима работы Windows for Workgroups. Самый нижний уровень операционной системы состоит из большого числа драйверов виртуальных устройств (virtual device drivers VxDs), запускаемых в 32-битном защищенном режиме, и одной или более виртуальных DOS машин, запускаемых в виртуальном 8086 режиме. Драйвера виртуальных устройств отвечают за обработку физических устройств (таких как видео и сетевые карты), эмулирование виртуальных устройств, используемых виртуальными машинами, или обеспечение различных системных сервисов. Ниже перечислены три наиболее важных драйвера виртуальных устройств:


Менеджер виртуальных машин (Virtual Machine Manager VMM32.VXD)
Отвечает за управление памятью, обработку событий и прерываний, загрузку и инициализацию драйверов виртуальных устройств, создание новых виртуальных машин и управление потоками.


Конфигурационный менеджер (Configuration Manager CONFIGMG)
Отвечает за реализацию функционала “Plug and play”; мониторинг изменений конфигурации аппаратных средств; обнаружение устройств, используя нумераторы шин; назначение портов ввода/вывода, запросов на прерывание (IRQs), каналов прямого доступа к памяти (DMA) и обеспечение бесконфликтной работы с памятью.


Устанавливаемый диспетчер файловой системы (Installable File System Manager) (подсистема ввода/вывода)
Координирует доступ к поддерживаемым файловым системам. Windows 95 изначально поставлялась с поддержкой FAT12, FAT16, расширения VFAT, ISO 9660 (CDFS) и сетевых перенаправителей (network redirectors). Позже была выпущена поддержка FAT32.


Запросы доступа к физическим носителям отправляются к супервизору ввода/вывода (Input/Output Supervisor), компоненту, ответственному за планирование запросов. Каждый физический носитель имеет свой собственный драйвер устройства: доступ к диску осуществляется с помощью драйвера порта (port driver), тогда как доступ к SCSI устройству обрабатывается минипорт-драйвером (miniport driver), который работает поверх уровня SCSI. Драйвера порта и минипорта осуществляют операции ввода/вывода в 32-битном защищенном режиме, минуя MS-DOS и BIOS, обеспечивая значительное улучшение производительности. В случае, если для некоторого запоминающего устройства нет родного драйвера Windows, или если устройство вынужденно запускаться в режиме совместимости, Real Mode Mapper может обращаться к ним через MS-DOS.


32-битные Windows программам назначаются их собственные сегментам памяти, которые могут быть приведены к любому желаемому размеру. Доступ к памяти вне сегмента невозможен. Если в программе происходит сбой, то ничего другое не повреждается. До этого в программах использовались фиксированные невыносимые (non-exclusive) сегменты размером 64 КБ. Хотя размер 64 КБ был серьезным препятствием для DOS и Windows 3.x, отсутствие гарантии выносисмости стало причиной проблем со стабильностью, поскольку программы иногда перезаписывали сегменты друг друга. Аварийная программа Windows 3.x может выбить окружающие процессы.


Win32 API реализован тремя модулями, каждый состоит из 16-ти и 32-битного компонентов:


Kernel
Обеспечивает высокоуровневый доступ к памяти, управление процессами и доступ к файловой системе. Состоит из KRNL386.EXE, KERNEL32.DLL и VWIN32.VXD.


User
Данный модуль ответственен за управление и отрисовку различных компонентов пользовательского интерфейса, таких как окна, меню и кнопки.


Graphics Device Interface (GDI)
Отвечает за отрисовку изображений способом, независимым от конкретного устройства вывода. Состоит из GDI.EXE и GDI32.DLL.


Зависимость от MS-DOS


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


Когда графический интерфейс пользователя запущен, диспетчер виртуальной машины берет на себя функции, связанные с файловой системой и диском. Сама MS-DOS понижена до уровня совместимости c 16-разрядными драйверами устройств. Это контрастирует с более ранними версиями Windows, которые полагаются на MS-DOS для доступа к файлам и диску (Windows for Workgroups 3.11 также может в значительной степени обойти MS-DOS, когда включены 32-разрядный доступ к файлам и 32-разрядный доступ к диску). Сохранение MS-DOS в памяти позволяет Windows 95 использовать драйверы устройств DOS, когда подходящие драйверы Windows недоступны. Windows 95 способна использовать все 16-разрядные драйверы Windows 3.x.


В отличие от Windows 3.1x, работающие в Windows 95 программы DOS не нуждаются в драйверах DOS для мыши, CD-ROM и звуковой карты. Вместо этого используются драйверы Windows. HIMEM.SYS по-прежнему требуется для загрузки Windows 95. EMM386 и другие менеджеры памяти, однако, используются только старыми программами DOS. Кроме того, настройки CONFIG.SYS и AUTOEXEC.BAT (кроме HIMEM.SYS) не оказывают влияния на программы Windows. Игры DOS, которые не могли быть запущены на Windows 3.x, могут запускаться внутри Windows 95 (игры, как правило, блокируют Windows 3.x или вызывают другие проблемы). Как и в Windows 3.x, программы DOS, которые используют графические режимы EGA или VGA, работают в оконном режиме (программы CGA и текстового режима могут продолжать работать).


При запуске Windows 95 компонент MS-DOS реагирует на нажатие клавиши F8, временно приостанавливая процесс загрузки по умолчанию и представляя меню параметров загрузки DOS, позволяя пользователю продолжать нормально запускать Windows, запускать Windows в безопасном режиме или выйти в режим DOS. Как и в предыдущих версиях MS-DOS, тут нет 32-разрядной поддержки и драйверы DOS должны быть загружены для мыши и другого оборудования.


Будучи основанной на DOS, Windows 95 должна поддерживать внутренние структуры данных DOS, синхронизированные с структурами Windows 95. При запуске программы, даже собственной 32-разрядной программы Windows, MS-DOS кратковременно выполняет создание структуры данных, такой как Program Segment Prefix (префикс сегмента программы). Возможно, MS-DOS даже не использует обычную память, что препятствует запуску программы. Windows 3.x выделяет фиксированные сегменты в обычной памяти. Поскольку сегменты были распределены как фиксированные, Windows не могла их перемещать, что могло бы помешать запуску других программ.


Microsoft частично удалила поддержку File Control Blocks (блоки управления файлами) в Windows 95 OSR2 (OEM Service Release 2). Функции FCB могут читать только тома FAT32, но не записывать их.

Никак не взаимодействуя с сервисами MS DOS, лишь предоставляя к ним доступ — это как?

Это буквально — API сервисов MS DOS для приложений доступен через int 21h. Который не используется Windows 3.1, но вы вольны обращаться к нему из приложений.
DrPass, Вы когда-нибудь писали системные программы для MS DOS (например, резидентные), для Windows 3.x и далее?

Да, писал.
И я не знаю, к чему вы копипастили вот то полотенце текста, но там мухи с котлетами намешаны. Если вы посмотрите на архитектуру Win 3.1, вы там увидите примерно то же самое — VMM, KRNL386, User, GDI.
И опять таки полотенце текста
Это буквально — API сервисов MS DOS для приложений доступен через int 21h. Который не используется Windows 3.1, но вы вольны обращаться к нему из приложений.

Ошибаетесь.
Семейство Windows 3.x могло функционировать в трёх различных режимах работы с памятью:


  • Реальный режим, предназначенный для старых компьютеров (8086, 8088, 80186).
  • Стандартный режим, предназначенный для компьютеров с процессором 80286.
  • Расширенный режим 386, предназначенный для компьютеров с процессором 80386.

В реальном режиме Windows 3.x полностью полагался на MS DOS.
В стандартном режиме использовался DOS-extender (dosx.exe).
А в расширенном — VMM.


DOS-extender (расширитель DOS) предоставляет прикладной программе различные сервисы по управлению памятью и прочими ресурсами через программные прерывания.
В свою очередь всем расширителям DOS приходится вызывать DOS API для доступа к диску, сети и т. д.


VMM же всегда разрабатывался как надстройка над MS-DOS.
В Windows, основанных на VMM навсегда остались 16-битные подсистемы USER и GDI. Настоящая вытесняющая многозадачность в VMM была только между виртуальными машинами MS-DOS, которые по очевидным причинам не знали о USER и GDI и никогда туда не обращались.
Что касается устройств, то приложения DOS обычно содержали в себе весь код для работы со "своими" устройствами, и VMM потому первоначально также не включал в себя драйверы устройств.


Таким образом, Ваше утверждение о том, что Windows 3.1 не использовал MS DOS — является ошибкой.


Если пойти дальше, то Windows 3.11 for Workstation использует 21-е прерывание MS DOS, полностью подменяя его своим программным кодом.


Итого.


Windows 3.x требует предварительно установленной копии MS-DOS, которая должна загружаться при включении компьютера. Windows 3.x затем запускается как приложение, и её работа может быть прервана в любое время, в результате чего происходит возврат в обычную командную оболочку MS-DOS.
Кроме того, драйверы для некоторых устройств (включая драйверы для дисководов для компакт-дисков и доступа к сети) предоставляются только MS-DOS.


Windows 95 не требует предварительно установленной полноценной копии MS-DOS для своего запуска, а загружается сразу загрузчиком ОС. При завершении работы Windows 95 возврата в обычную командную оболочку MS-DOS не происходит за отсутствием таковой на этапе, предшествующем загрузке Windows 95. Но при этом мы помним, что часть программного кода MS DOS заимствована в программном коде Windows 95 (например, всё в том же VMM со своим 16-битным наследием). Но MS DOS, как таковая, здесь уже не представлена в независимом, выделенном, автономном и полноценном виде. По сути — MS DOS уже как таковой тут нет. Поэтому назвать Windows 95 неполноценной ОС уже нельзя (хотя следы MS DOS в линейке Windows 9x (95,98,ME) будут тянуться ещё долго).


Но вернёмся к Windows 3.x.
Программа в среде MS-DOS имеет возможность выполнять любые действия, в том числе заменять или пропускать код MS-DOS или его часть, временно или постоянно. Это основа написания резидентных программ (прости мне Господи все мои прегрешения тех лет).
И Windows 3.x как раз и использует эту возможность (предоставленную MS DOS) в своих собственных целях. Однако, уровень пропуска стандартного кода MS-DOS возрастал с каждой новой версией Windows.


Windows 3.1 и её 32-разрядный доступ к диску заменял код BIOS для доступа к дискам через перехват int 13h и частично код MS DOS через перехват int 21h, подменяя собой, например, такие функции этого прерывания, как 13H, 1bH, 1dH, 21H и 22H (и другие), если помните. Перехват стандартного десятого прерывания BIOS активно использовался GDI (двумерная графика) для обеспечения работы USER (пользовательский интерфейс, менеджер окон), а Windows для рабочих групп 3.11 заменяла родной код MS-DOS для обращения к файлам полностью (и опять же, через перехват int 21h и ряда функций MS DOS этого прерывания).


И вот Вам таки вопрос.


Перехват уже существующего прерывания, изначально установленного программным кодом предшественника, то есть подмена адреса обработчика данного прерывания адресом начала своего программного кода (с возможным запоминанием его и последующим восстановлением) — это по Вашему что?
Это полноценная операционная система или операционная система (или приложение) поверх другой полноценной операционной системы? Считается ли такое поведение взаимодействием, особенно в свете использования Windows 3.x драйверов для дисководов для компакт-дисков и доступа к сети, которые предоставляются MS DOS и без которых Windows 3.x становится бесполезным ПО? Что является причиной и что является следствием?


Давайте вернёмся к основе вопроса — может ли операционная система считаться полноценной, если для её функционирования обязательно требуется наличие другой полноценной операционной системы и никак иначе?
Речь не идёт о микропрограммном коде, например, базовой системы ввода/вывода или драйверов устройств, потому что ни те ни другие не обеспечивают полного комплекса взаимодействия пользователя или приложения с аппаратной частью устройства. Этим занимается посредник (дирижёр) — операционная система (или сервис), которая, объединяя все части системы в целое, оперирует (дирижирует) ими, устанавливая некоторые правила и возможности. Именно поэтому — она и называется операционной.


Если Вы действительно писали системное ПО под MS DOS, Windows 3.x и Windows 95, то должны понимать, как именно влияют котлеты на поведение мух.


P.S. Извините, если чем-то кого-то обидел. 51 год. В ИТ с 1989 года.

для ответа на Ваш вопрос можно провести примитивнейший эксперимент: отформатируйте диск. разметьте на разделы. установите на него win3.x и запустите. вышло?.. на 99% уже на шаге установки у Вас ничего не выйдет. в отличии от win95\98\ME. Хотя в последних путем несложной манипуляции можно загрузитсья в «чистый» DOS ( по моему он про себя писал v5.0, уже не помню за давностью ) не загружая собственно Win95. Если включить логику то все-таки 95-ка тоже надстройка над DOS, просто сам MS DOS итегрирован в дистрибутив Win9x. То что Win 3.x как и Win9x после своего запуска забирает на себя 90% системных вызавов и сама их обрабатывает — еще не делает ее ОС. В те далеки время большинство больших пакетов так работало. особенно если приложение работало с графикой или с большими массивами данных. Хоть тот же AutoCad тех времен. Только от этого AutoCad ( даже с его внутренним языком программирования ) не ставновиться ОС. Вот WinNT ( 3.xx,4 и т.д.) — это полноценная автономная ОС с возможностью худо-бедно эмулировать MS-DOS для сессии. В те далекие времена была еще одна полноценная ОС, очень жаль что она умерла… OS/2. Мне она по реализации нравилась намного больше.
Кстати вот например сейчас Oracle когда запускается в режиме ASM — забирает на себя работу с дисковой подсистемой ( ну точнее может забрать и работать с неразмеченными блочными устройствами, если настроишь ;) — он же от этого ОС не становиться ну никак. PS 2Ораклисты — не кидайте в меня камни -я разницу понимаю это просто сравнение.
для ответа на Ваш вопрос можно провести примитивнейший эксперимент: отформатируйте диск. разметьте на разделы. установите на него win3.x и запустите. вышло?
А давайте еще и BIOS удалим, ну что бы по честному. Выйдет у вас установить MS-DOS? Так что, и MS-DOS — не OC?
Где проходит та грань когда "это ОС использующая другое промежуточное ПО для загрузки" и "это не ОС потому что она использует другое промежуточное ПО для загрузки"?
Вы говорите глупость. Ибо BIOS есть часть аппаратной состовляющей ПК. И никогда к части OS не относился.
Тут корректнее в другую сторону возражать. Современный Android телефонный — это ОС или нет. Вот тут я бы спорить не стал. Ибо это по сути Java машина запущенная поверх кастрированого Linux если не ошибаюсь. в общем unix-like. Аналогия DOS\Win 3.x близкая. Хотя в силу своей архитектуры — интеграция намного глубже — для всех приложений «под-андроид» ( а на другие оно не рассчитано) Андроид наверно выступает ОС. да и от *nix там мало что осталось… Но тут интересно мнение гуру программистов под Андроид.
BIOS — это программная часть ПК. Да, если бы все что делал BIOS — считывал нулевой сектор и передавал туда управление — я бы может с вами и согласился. Но… BIOS делает гораздо больше. Многие программы для DOS использовали прерывания BIOS(Int 10h — Video Services, Int 13h — Low Level Disk Services, Int 16h — Keyboard services), DOS как таковой мог быть им совсем не нужен.
Вы можете запустить приложение Android на голом Linux? Вы можете запустить приложение Win 3.x на голом DOS?
Sign up to leave a comment.

Articles