1890–1950 - Operacja związana z systemem
Najwcześniejsze komputery miały odpowiednik tego, co teraz wbudowany system operacyjny. Ty (operator) również byłeś częścią systemu operacyjnego. Przełączyłeś przełączniki rejestrów (lub użyłeś karty dziurkacza) i fizycznie zamieniłeś przewody magistrali (pomyśl o starej stacji operatora telefonicznego w modzie), a pamięć została połączona (za pomocą fizycznych przewodów) bezpośrednio z żarówką (monitorem dnia) i drukarkami ( długoterminowe przechowywanie) w taki sposób, aby wyjście programu świeciło i drukowało bezpośrednio na urządzeniu, gdy było ono umieszczane w buforze pamięci wyjściowej. Do tych rzeczy nie był potrzebny sterownik, ponieważ (ze względu na sposób poprowadzenia tych fizycznych przewodów) po prostu „działały” (w tych czasach nie było też czegoś takiego jak monitor). W rzeczywistości minęło jeszcze kilkadziesiąt lat w tej erze, dopóki nie zostanie wynaleziony cyfrowy wyświetlacz numeryczny, aby można było zobaczyć liczby, które już wprowadzono do rejestru, i dane wyjściowe jako liczby dziesiętne; drukarze rządzili całą tą erą aż do monitorów. Zostały podłączone dokładnie tak, jak powinny, aby działać poprawnie. Żadna z tych części tak naprawdę nie zmieniła się znacznie po przejściu z mechanicznego (1890) na elektryczny analogowy (1910) na cyfrowy (1930). Architektura „Plug N play” została w tym czasie zastąpiona systemem przerwań i nie pojawi się ponownie dopiero pod koniec lat dziewięćdziesiątych; oczywiście do tego czasu byłoby o wiele mniej zatykania. Dzięki przerwaniom urządzenia mogły zająć czas procesora, co pozwoliło architekturom, które nie były t bezpośrednio związane ze sprzętem, ale zajęło kilka pokoleń, aby naprawdę był to usprawniony proces, który widzimy w architekturze x86 (i nowszych); wczesne systemy często napotykały okropne warunki wyścigowe, problemy ze zgodnością sprzętu / opóźnieniami i inne dziwne zachowania w przypadku przerw. Ponieważ każda maszyna używała w tym okresie radykalnie różnych architektur (eksperymentalnych); prawie wszystkie urządzenia zostały wykonane na zamówienie dla maszyny, na której pracowały.
1950–1973 - Działanie w systemie
W tej erze pojawiło się większość funkcji, o których myślimy, gdy mówimy o prawdziwym systemie operacyjnym. W tej erze wprowadzono debugowanie, języki programowania, wielu użytkowników, wielozadaniowość, terminale, napędy dyskowe, sieci, standaryzację komponentów itp. Tym razem nastąpił ogromny skok w kierunku standaryzacji znacznej części tego, co oznaczało, że mieliśmy bardziej znormalizowane urządzenia, ale wciąż każdy system operacyjny został ręcznie opracowany dla każdej maszyny, co oznaczało, że funkcjonalność systemu operacyjnego była poważnie ograniczona przez wszystko, co inżynierowie, którzy zaprojektowali ten konkretny system, uznali, że potrzebują . W tym czasie istniał znaczny szary obszar w tym, czym był system operacyjny, ponieważ różne architektury radzą sobie znacznie inaczej, a maszyna bardziej ogólnego przeznaczenia będzie potrzebowała dużo więcej systemu operacyjnego niż maszyna zawierająca sprzęt do obsługi tych samych zadań. Faktem jest, że sprzęt zawsze będzie szybszy niż oprogramowanie i praktycznie wszystko, co można zrobić w oprogramowaniu, można teoretycznie zrobić w sprzęcie (to koszt \ elastyczność \ rozmiar \ czas \ itd., Co ogranicza nas od robienia niemal czysto sprzętowych wersji wszystkiego do tego dzień). System operacyjny został stworzony dla określonego komputera lub typu komputera; nie działałoby to gdzie indziej. Każdy nowy projekt komputera wymagał przepisania całego oprogramowania systemu operacyjnego niskiego poziomu od zera do pracy z konkretnym modelem maszyny. Pod koniec tego czasu pojawił się nowy system operacyjny, który wkrótce zmieni ten paradygmat, UNIX napisany w Bell Labs przez Kena Thompsona i Dennisa Ritchie.
1973 - Operacja między systemami
Jeden program zmienił to wszystko, ale nie był to system UNIX. Był to kompilator C (który został słynnie wykonany w garażu przez Kena Thompsona i Dennisa Ritchie po wycięciu go przez Bell Labs). Do tego momentu, za każdym razem, gdy pisałeś kod, był to albo kod maszynowy (kod, który maszyna bezpośrednio rozumie, ale nie jest przenośny) lub był napisany w języku, który skompilował kod do kodu bajtowego (kod interpretowany przez inny program, ponieważ działa). Ogromną różnicą dla systemów operacyjnych, które przyniósł ze sobą C, była możliwość robienia tak zwanej kompilacji krzyżowej w kodzie maszynowym. Oznaczało to, że kod mógł zostać napisany raz i skompilowany tak, aby działał natywnie na wielu różnych typach maszyn, o ile napisano dla niego kompilator. Systemy operacyjne muszą być zapisane w kodzie maszynowym, ponieważ kod maszynowy jest dosłownie jedynym kodem, który zna maszyna.
Powiedziałbym, że dopiero wtedy, gdy Ken i Dennis po raz pierwszy skompilowali jądro UNIX przy użyciu kompilatora C, narodził się prawdziwy system operacyjny we współczesnym sensie. Wcześniej system operacyjny był albo obiektem fizycznym, albo po prostu wstępnie zainicjalizowanym fragmentem pamięci zaprojektowanym specjalnie dla konkretnej maszyny. Dodanie nowych urządzeń do systemu wymagało dosłownie przepisania kodu „jądra”. Teraz system operacyjny UNIX, który zaprojektowali dla konkretnego komputera, może zostać ponownie skompilowany i uruchomiony na innych komputerach bez przepisywania WSZYSTKIEGO (o ile ten komputer był w stanie skompilować kompilator C ze środowiska rozruchowego, w którym można zapisać resztę systemu operacyjnego) stosunkowo wysoki poziom kodu C).