If-Koubou

Как е възможно извършването на много задачи в по-старите версии на Windows?

Как е възможно извършването на много задачи в по-старите версии на Windows? (Как да)

Като се има предвид, че DOS е операционна система с една задача и връзките с ранните версии на Windows, как предишните версии на Windows успяха да постигнат многозадачност? Днешната публикация "SuperUser Q & A" разглежда отговорите на този въпрос.

Днешната сесия за въпроси и отговори ни идва с любезното съдействие на SuperUser - подразделение на Stack Exchange - обединяване на уеб сайтове с въпроси и отговори.

Windows 95 снимка от любезното съдействие на Уикипедия.

Въпроса

Reader на SuperUser LeNoob иска да знае как старите версии на Windows могат да се изпълняват като системи за многозадачност ?:

Четох, че DOS е операционна система за еднократна употреба. Но ако по-старите версии на Windows (включително и Windows 95?) Бяха просто опаковки за DOS, как биха могли да стартират като операционна система за множество задачи?

Добър въпрос! Как по-старите версии на Windows успяват да работят като системи за множество задачи?

Отговорът

Сътрудниците на SuperUser Боб и Пийт имат отговора за нас. Първо, Боб:

Windows 95 е много повече от "просто обвивка" за MS-DOS. Цитирайки Реймънд Чен:

  • MS-DOS обслужва две цели в Windows 95: 1.) Служи като зареждащ оператор. & 2.) Той е действал като 16-битов слой за драйвери на устройство.

Windows 95 действително закачи / overrode почти всички MS-DOS, запазвайки го като слой за съвместимост, докато прави всички тежки повдигане себе си. Тя също така изпълнява превантивна многозадачност за 32-битови програми.

Преди Windows 95

Windows 3.x и по-старите бяха най-вече 16-битови (с изключение на Win32s, вид слой за съвместимост, който свързва 16 и 32, но ние ще пренебрегнем това тук), бяха по-зависими от DOS и използвахме само кооперативни многозадачни - това е мястото, в което те не принуждават текущата програма да се откаже; те чакат текущата програма да контролира добива (основно каже "Аз съм готов", като кажа на операционната система да изпълни следващата програма, която чака).

  • Многозадачният подход беше съвместим, както при старите версии на MacOS (макар и за разлика от DOS 4.x, който се използва многократно, за да се подготви многозадачност). Задачата трябваше да се предаде на операционната система, за да насрочи друга задача. Доходността е вградена в определени приложния програмен интерфейс (API), а именно обработката на съобщения. Докато една задача обработва съобщенията навреме, всичко е страхотно. Ако дадена задача спре да обработва съобщенията и е заета да изпълнява някаква обработваща цикличка, мултитакингът вече не е такъв.

Архитектура на Windows 3.x

Що се отнася до това колко ранни програми за Windows ще контролират добива:

  • Windows 3.1 използва кооперативно многозадачност - което означава, че всяко приложение, което е в процес на изпълнение, е инструктирано периодично да проверява опашката на съобщенията, за да разбере дали друго приложение иска използването на CPU и ако е така, да даде контрол върху това приложение. Много приложения на Windows 3.1 обаче биха проверили опашката на съобщенията само рядко или изобщо не и монополизират контрола на процесора за толкова време, колкото са необходими. Предпазните системи за множество задачи като Windows 95 ще отнемат контрола на процесора от работещо приложение и ще го разпределят на тези, които имат по-висок приоритет въз основа на нуждите на системата.

източник

Всички DOS биха могли да видят, че това единствено приложение (Windows или друго) работи, което ще премине контрол без да излезе. На теория, превантивната многозадачност може да бъде приложена на върха на DOS така или иначе с помощта на часовник в реално време и хардуер прекъсва да насилствено да даде контрол на планиращия. Както коментира Тони, това всъщност е направено от някои операционни системи, работещи над DOS.

386 подобрен режим?

Забележка: имаше някои коментари за 386 подобрения режим на Windows 3.x, които са 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 е просто обвивка за DOS.

Следвайки отговора на Пийт:

В съвременна операционна система операционната система контролира всички хардуерни ресурси и изпълняваните приложения се съхраняват в пясъчници. Приложението няма достъп до паметта, която операционната система не е определила за това приложение, и не може директно да осъществява достъп до хардуерните устройства в компютъра. Ако се изисква достъп до хардуер, приложението трябва да комуникира чрез драйвери на устройства.

Операционната система може да наложи този контрол, защото принуждава процесора да влезе в защитения режим.

DOS, от друга страна, никога не влиза в защитен режим, но остава в реален режим (*виж отдолу). В реален режим текущите приложения могат да изпълняват всичко, което искат, т.е. достъп до хардуер директно. Но едно приложение, което работи в реален режим, може също така да каже на процесора да влезе в защитения режим.

И тази последна част позволява на приложения като Windows 95 да стартират мулти-резбова среда, въпреки че са стартирани основно от DOS.

DOS (Disk Operating System), доколкото ми е известно, не е много повече от система за управление на файлове. Той осигури файлова система, механизми за навигация във файловата система, няколко инструмента и възможност за стартиране на приложения. Той също така позволи някои приложения да останат живи, т.е. драйвери за мишка и EMM емулатори. Но не се опитва да контролира хардуера в компютъра по начина, по който се справя модерна операционна система.

*Когато DOS беше създаден за пръв път през 70-те години, защитен режим не съществува в процесора. Едва до 80286 процесора в средата на 80-те години този защитен режим стана част от процесора.

Не забравяйте да прегледате оригиналната нишка и да прочетете оживената дискусия по тази тема, като използвате линка по-долу!

Имате ли нещо, което да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.