Windows 95
Windows 95 był czymś więcej niż „tylko opakowaniem” dla MS-DOS . Cytując Raymonda Chena:
MS-DOS służył dwóm celom w Windows 95.
- Służył jako moduł ładujący.
- Działał on jako 16-bitowa, starsza warstwa sterowników urządzeń.
Windows 95 tak naprawdę zaczepił / zastąpił prawie cały MS-DOS, utrzymując go jako warstwę kompatybilności podczas wykonywania samego ciężkiego podnoszenia. Zaimplementowano także zapobiegawcze wielozadaniowość dla programów 32-bitowych.
Przed Windows 95
Windows 3.xi starsze były w większości 16-bitowe (z wyjątkiem Win32s, niejako warstwy kompatybilności łączącej 16 i 32, ale tutaj to zignorujemy), były bardziej zależne od DOS i używały tylko wielozadaniowości kooperacyjnej - to jest ten, w którym nie zmuszają działającego programu do wyłączenia; czekają, aż uruchomiony program przejdzie kontrolę (w zasadzie powiedz „skończyłem”, mówiąc systemowi operacyjnemu, aby uruchomił następny program, który czeka).
Wielozadaniowość była kooperatywna, podobnie jak w starych wersjach MacOS (choć w przeciwieństwie do Multitasking DOS 4.x, w którym zastosowano zapobiegawczą wielozadaniowość). Zadanie musiało ustąpić systemowi operacyjnemu, aby zaplanować inne zadanie. Wydajności zostały wbudowane w niektóre wywołania API, w szczególności przetwarzanie wiadomości. Tak długo, jak zadanie przetwarzało wiadomości w odpowiednim czasie, wszystko było świetnie. Jeśli zadanie przestało przetwarzać wiadomości i było zajęte wykonywaniem jakiejś pętli przetwarzania, wielozadaniowość już nie istniała.
Architektura systemu Windows 3.x.
Jeśli chodzi o to, jak wczesne programy systemu Windows dają kontrolę:
System Windows 3.1 korzysta z wielozadaniowości kooperacyjnej - co oznacza, że każda aplikacja, która jest w trakcie działania, otrzymuje polecenie okresowego sprawdzania kolejki komunikatów, aby dowiedzieć się, czy jakakolwiek inna aplikacja prosi o użycie procesora, a jeśli tak, aby przejąć kontrolę nad tą aplikacją . Jednak wiele aplikacji systemu Windows 3.1 rzadko lub wcale nie sprawdza kolejki komunikatów i monopolizuje kontrolę nad procesorem przez tyle czasu, ile potrzeba. Prewencyjny system wielozadaniowy, taki jak Windows 95, odbierze kontrolę procesora od działającej aplikacji i rozdzieli ją na te, które mają wyższy priorytet w zależności od potrzeb systemu.
źródło
Jedyne, co DOS zobaczyłby, to działająca jedna aplikacja (Windows lub inna), która przekazywała kontrolę bez wychodzenia. Teoretycznie zapobiegawcza wielozadaniowość może być zaimplementowana na DOS-ie za pomocą zegara czasu rzeczywistego i przerwań sprzętowych, aby wymusić kontrolę nad harmonogramem. Jak komentuje Tonny , tak naprawdę zrobiły to niektóre systemy operacyjne działające na DOS-ie.
Tryb ulepszony 386?
Uwaga: pojawiły się komentarze na temat ulepszonego trybu 386 systemu Windows 3.x w wersji 32-bitowej i obsługującego zapobiegawczą wielozadaniowość.
To ciekawy przypadek. Podsumowując połączony post na blogu , tryb ulepszony 386 był w zasadzie 32-bitowym hiperwizorem, który obsługiwał maszyny wirtualne. Wewnątrz jednej z tych maszyn wirtualnych działał tryb standardowy Windows 3.x, który wykonuje wszystkie powyższe czynności.
MS-DOS również działałby wewnątrz tych maszyn wirtualnych i najwyraźniej były one zapobiegawczo wielozadaniowe - wydaje się więc, że hiperwizor w trybie rozszerzonym 386 będzie dzielić przedziały czasu procesora między maszynami wirtualnymi (jedna z nich działała normalnie w wersji 3.x i inne z MS -DOS), a każda maszyna wirtualna zrobi to samo - 3.x współpracowałby wielozadaniowo, podczas gdy MS-DOS byłby jednozadaniowy.
MS-DOS
Sam DOS był jednozadaniowy na papierze, ale miał wsparcie dla programów TSR , które pozostawały w tle, dopóki nie zostaną wywołane przez przerwanie sprzętowe. Dalekie od prawdziwej wielozadaniowości, ale nie w pełni jednozadaniowe.
Cała ta gadanina o bitości? Zapytałem o wielozadaniowość!
Cóż, ściśle mówiąc, bitowość i wielozadaniowość nie są od siebie zależne. Powinno być możliwe najlepsze wdrożenie dowolnego trybu wielozadaniowości w dowolnej bitowości. Jednak przejście z procesorów 16-bitowych na procesory 32-bitowe wprowadziło także inne funkcje sprzętowe, które mogłyby ułatwić wdrożenie zapobiegawczej wielozadaniowości.
Ponadto, ponieważ 32-bitowe programy były nowe, łatwiej było je zmusić do działania, gdy zostały przymusowo wyłączone - co mogło zepsuć niektóre starsze programy 16-bitowe.
Oczywiście to wszystko spekulacje. Jeśli naprawdę chcesz wiedzieć, dlaczego MS nie wdrożyło zapobiegawczego wielozadaniowości w systemie Windows 3.x (pomimo trybu rozszerzonego 386), musisz zapytać kogoś, kto tam pracował.
Chciałem również poprawić twoje założenie, że Windows 95 był tylko opakowaniem dla DOS;)