Systemy operacyjne są ściśle powiązane z architekturą komputerową. System operacyjny dba o wszystkie dane wejściowe i wyjściowe w systemie komputerowym. Zarządza użytkownikami, procesami, zarządzaniem pamięcią, drukowaniem, telekomunikacją, obsługą sieci itp. Wysyła dane na dysk, drukarkę, ekran i inne urządzenia peryferyjne podłączone do komputera.
Przed wprowadzeniem systemu operacyjnego
Co wykorzystano w systemach komputerowych, aby działały?
Jaką koncepcję wykorzystano w systemie operacyjnym w naszej ewolucji komputerów?
operating-systems
Itachi Uchiha
źródło
źródło
Odpowiedzi:
Wczesne komputery † uruchamiały jeden program na raz.
Programy były ładowane bezpośrednio z (na przykład) taśmy papierowej z dziurkami.
Zaprogramujesz najwcześniejsze komputery † , ustawiając duży zestaw przełączników on-off.
Kolos:
Atlas:
Manchester:
† Używam słowa „Komputer”, aby oznaczać urządzenie, które istnieje obecnie w miliardach. Z tej ogromnej liczby komputerów, prawie niewielka liczba to cyfrowe elektroniczne programowalne komputery z zapisanymi programami. Jestem pewien, że pierwotne pytanie nie dotyczy tego, jak ludzie z tytułem pracy „Komputer” spędzili dzień pracy. Pomiędzy tymi dwoma typami komputerów występuje szereg interesujących urządzeń nie ujętych w tej odpowiedzi.
źródło
Źródło: Historia systemów operacyjnych
Źródło: http://en.wikipedia.org/wiki/History_of_operating_systems
źródło
Wracając do początku systemów komputerowych, nie miałeś pojedynczych systemów komputerowych, zamiast tego miałeś komputery mainframe.
Te komputery mainframe działałyby na kartach perforowanych, które zawierałyby twój program (i często dane). Ludzie mieliby przydzielany czas w tych systemach, zabierali ze sobą karty i podłączali je do maszyn, aby mogli je przetwarzać. Maszyna będzie uruchamiać program, dopóki się nie skończy, a następnie pojawi się następny użytkownik z taśmą i kartami.
Zasadniczo tak to działało.
źródło
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).
źródło
Na początku programy były podłączone do komputera, co uruchamiałoby program natychmiast z określonej lokalizacji podczas uruchamiania.
Następnie wymyślono różne formy przechowywania offline: karty perforowane, taśmy, bębny, a nawet dyski. Znacznie bardziej elastyczny. Ale niedostępne bezpośrednio z procesora. Program musi zostać załadowany do pamięci, zanim będzie można go uruchomić. Więc piszesz program, aby załadować swój program. Jest to znane jako moduł ładujący lub bootstrap (od wyrażenia „ciągnąć się za pasy startowe”).
Ponieważ system staje się bardziej skomplikowany, możesz mieć prostszy moduł ładujący ładujący bardziej złożony moduł ładujący. Zaczęło się od mikrokomputerów: normalny moduł ładujący taśmę działał powoli, więc załaduj dekompresor i szybko załaduj resztę taśmy. Lub program ładujący dyski, który działał jako system ochrony przed kopiowaniem, wykonując niestandardowe czynności na dysku.
Lub proces rozruchu komputera przed UEFI: procesor zaczyna działać w systemie BIOS. Spowoduje to załadowanie pierwszego sektora z dysku i przejście do niego. Wyszukuje aktywną partycję i ładuje stamtąd program ładujący, który ładuje system operacyjny. Pierwotnie byłby to COMMAND.COM dla MSDOS; teraz zwykle jest to NTLDR.EXE dla Windows.
źródło
Należy zauważyć, że we wczesnym sprzęcie (przed 1960 r.) Operacje wejścia / wyjścia były znacznie prostsze. Można było odczytać kartę, wbić kartę lub wydrukować wiersz na drukarce, każda z pojedynczą instrukcją: rozmiar bufora został ustalony, a często także adres bufora.
Nawet na początku lat 60., z bardziej wyrafinowanymi procesorami (np. 7090), nadal można było czytać lub dziurkować karty za pomocą niewielkiej procedury (około 20 instrukcji), którą łatwo skopiować do każdego programu.
Ponieważ komputer był w całości poświęcony jednemu zadaniu, nie miało znaczenia, czy procesor był bezczynny, czekając, aż czytnik kart będzie gotowy do odczytania następnej karty, czy też drukarka liniowa załaduje następną linię.
Cóż, to miało znaczenie, ponieważ czas obliczeń był rzeczywiście drogi. Właśnie dlatego ludzie wymyślili wieloprocesorowe, dzielone czasowo, dodane asynchroniczne operacje we / wy, a także przerwały sterowniki urządzeń i systemy operacyjne. Interfejsy urządzeń sprzętowych stały się dla programisty bardziej złożone, dając dostęp do rejestrów We / Wy niższego poziomu, co wymagało większej złożoności ze strony sterowników urządzeń. Ten koszt złożoności (pamięć, czas programowania) był amortyzowany przez kilka programów przy użyciu urządzeń „jednocześnie”, multipleksowanych przez system operacyjny.
Jeszcze w latach 80. używałem komputera z mikroprocesorem, emulując jeden ze starszych systemów. Instrukcje maszyny miały jednolity format ponad 80 bitów (10 oktetów), a instrukcja odczytu pierwszego sektora pierwszego dysku twardego i zapisania go w pamięci pod adresem 0 była bardzo wygodna: 0000000000. Tak więc procedura uruchamiania składała się każdego ranka wpisać tę instrukcję na terminalu, który przechował ją pod adresem 0 i wykonał, a następnie załadował sektor rozruchowy i kontynuował wykonywanie przy następnej instrukcji (pod adresem 10). System plików składał się ze statycznego pliku mapowania „nazw” plików na zakresy sektorów, które zostały przydzielone ręcznie! We / Wy wykonano w asemblerze tych plików, bezpośrednio odczytując lub zapisując sektory, przesunięte przez pozycję pliku na dysku twardym, który został odzyskany przez „
źródło
Pierwsza generacja komputerów zaprojektowanych do szerszego użytku osobistego miała tak zwany „Monitor” w pamięci ROM (pamięć tylko do odczytu).
Natychmiast po uruchomieniu monitor dostarczył bardzo ograniczony interfejs wiersza poleceń, głównie w celu załadowania programu z pamięci danych, np. Magnetofonu i rozpoczęcia wykonywania (kilka innych poleceń było dostępnych do ręcznego wprowadzania kodu, choć rzadko było to konieczne). W danym momencie mógł działać tylko jeden program.
W odróżnieniu od systemu operacyjnego, Monitor nie obsługiwał żadnego systemu plików. Ludzki operator był odpowiedzialny za znalezienie odpowiedniej taśmy, umieszczenie jej w rejestratorze i ustawienie na początku potrzebnego programu do załadowania.
Monitoruj połączone funkcje zarówno systemu BIOS, jak i systemu operacyjnego, i już był bardzo wyraźnie oprogramowaniem.
Po włączeniu krótki sygnał „resetowania” po prostu zerował licznik programu tak samo jak każdy inny licznik, jednocześnie przełączając element mapujący pamięć (jeśli był obecny) w celu mapowania adresu 0000 na ROM monitora. Często spotykał się obwód sprzętowy do ponownego mapowania Monitora w wysokiej przestrzeni adresowej później. Oprócz uruchomienia kodu, przycisk „Reset” został również użyty do zakończenia uruchomionego programu, aby można było załadować inny.
Podstawowy przycisk „reset” można znaleźć na niektórych komputerach stacjonarnych nawet w tych dniach.
źródło
Najbardziej bezpośredni poprzednik systemu operacyjnego stanowiłby kombinację standardowych bibliotek do łączenia się z urządzeniami oraz systemu ładującego bootstrap do pobierania programu do pamięci i uruchamiania.
źródło