Windows 95
Windows 95 набагато більше, ніж "просто обгортка" для MS-DOS . Цитуючи Реймонда Чена:
MS-DOS виконував дві цілі в Windows 95.
- Він служив завантажувачем.
- Він виступав як 16-розрядний застарілий драйвер шару пристрою.
Windows 95 насправді підключив / перекрив майже всі MS-DOS, зберігаючи його як шар сумісності, роблячи весь важкий підйом. Він також реалізував переважне багатозадачність для 32-бітних програм.
Попередній Windows 95
Windows 3.x і пізніші версії були здебільшого 16-бітними (за винятком Win32s, своєрідного рівня сумісності, який мостить 16 та 32, але ми це ігноруємо), були більш залежними від DOS і використовували лише спільну багатозадачність - це той, де вони не змушують запущену програму вимикатися; вони чекають, коли запущена програма здасть контроль (в основному, скажіть "Я закінчила", сказавши ОС запустити наступну програму, яка чекає).
Багатозадачність була спільною, як і в старих версіях MacOS (хоча на відміну від Multitasking DOS 4.x, яка підтримувала переважне багатозадачність). Завдання повинно було поступитися ОС, щоб запланувати інше завдання. Вихід був вбудований у певні виклики API, зокрема обробку повідомлень. Поки завдання своєчасно обробляло повідомлення, все було чудово. Якщо завдання припинило обробку повідомлень і було зайнято виконанням певного циклу обробки, багатозадачність більше не було.
Архітектура Windows 3.x
Щодо того, як ранні програми Windows отримають контроль:
У Windows 3.1 використовується багатозадачність спільної роботи - це означає, що кожній програмі, яка знаходиться в процесі запуску, доручено періодично перевіряти чергу повідомлень, щоб з’ясувати, чи будь-яка інша програма просить використовувати ЦП і, якщо це так, щоб отримати контроль над цією програмою . Однак багато програм Windows 3.1 перевірятимуть чергу повідомлень лише рідко, або зовсім не, і монополізують управління процесором стільки часу, скільки потрібно. Переважна багатозадачна система, як-от Windows 95, забере керування процесором від запущеного додатка і поширює його на ті, у кого вищий пріоритет, залежно від потреб системи.
джерело
Все, що DOS бачив, - це один єдиний додаток (Windows чи інший), який працює під управлінням, який передаватиме контроль без виходу. Теоретично попереджувальна багатозадачність може бути реалізована поверх DOS у будь-якому випадку із застосуванням годинника в режимі реального часу та апаратних перерв для примусового контролю планувальника. Як коментує Тоні , це було зроблено деякими ОС, що працюють поверх DOS.
386 вдосконалений режим?
Примітка. Було кілька коментарів щодо розширеного режиму Windows 3.x 386, який є 32-бітним та підтримує попереджувальну багатозадачність.
Це цікавий випадок. Підсумовуючи пов’язану публікацію блогу , 386 вдосконаленого режиму в основному був 32-розрядним гіпервізором, який керував віртуальними машинами. Всередині однієї з цих віртуальних машин працював стандартний режим Windows 3.x, який виконує всі перераховані вище речі.
MS-DOS також працюватиме у цих віртуальних машинах, і, мабуть, вони були превантивно багатозадачними - тому, схоже, гіпервізор 386 вдосконаленого режиму поділить відрізки часу процесора між віртуальними машинами (одна з яких працює нормально 3.x та інші, на яких працює MS -DOS), і кожен VM зробить свою справу - 3.x буде співпрацювати багатозадачно, тоді як MS-DOS буде однозначним.
MS-DOS
Сам DOS на папері був однозначним, але в ньому була підтримка програм TSR , які залишатимуться у фоновому режимі, доки не призведе апаратне переривання. Далеко від справжнього багатозадачності, але теж не повністю одноосібного.
Все це балакання? Я запитав про багатозадачність!
Ну, строго кажучи, що біт і багатозадачність не залежать один від одного. Повинно бути можливим зверху реалізувати будь-який багатозадачний режим у будь-якій біті. Однак перехід від 16-розрядних процесорів до 32-бітних процесорів також ввів інші функціональні можливості апаратури, які могли б полегшити реалізацію багатозадачності.
Крім того, оскільки 32-бітні програми були новими, легше було змусити їх працювати, коли вони були насильно вимкнені - що, можливо, порушило деякі застарілі 16-бітні програми.
Звичайно, це все міркування. Якщо ви дійсно хочете знати, чому MS не впроваджує попереджувальну багатозадачність у Windows 3.x (не зважаючи на 386 покращеного режиму), вам доведеться запитати когось, хто там працював.
Крім того, я хотів виправити ваше припущення, що Windows 95 був jsut обгорткою для DOS;)