System operacyjny - Operating system

System operacyjny ( OS ) to oprogramowanie systemowe, które zarządza sprzętem komputerowym , zasobami oprogramowania i zapewnia typowe usługi dla programów komputerowych .

Systemy operacyjne z podziałem czasu planują zadania w celu efektywnego wykorzystania systemu i mogą również obejmować oprogramowanie księgowe do alokacji kosztów czasu procesora , pamięci masowej , drukowania i innych zasobów.

W przypadku funkcji sprzętowych, takich jak wejście i wyjście oraz alokacja pamięci , system operacyjny działa jako pośrednik między programami a sprzętem komputerowym, chociaż kod aplikacji jest zwykle wykonywany bezpośrednio przez sprzęt i często wykonuje wywołania systemowe do funkcji systemu operacyjnego lub jest przerywany przez to. Systemy operacyjne można znaleźć na wielu urządzeniach zawierających komputer – od telefonów komórkowych i konsol do gier wideo po serwery internetowe i superkomputery .

Dominującym systemem operacyjnym ogólnego przeznaczenia na komputery osobiste jest Microsoft Windows z udziałem w rynku wynoszącym około 76,45%. Na drugim miejscu znajduje się macOS firmy Apple Inc. (17,72%), a odmiany Linuksa znajdują się na trzecim miejscu (1,73%). W sektorze mobilnym (łącznie ze smartfonami i tabletami ) udział Androida sięga aż 72% w 2020 roku. Według danych z trzeciego kwartału 2016 r. udział Androida w smartfonach jest dominujący i wynosi 87,5 proc., przy tempie wzrostu 10,3 proc. rocznie, za nim plasuje się iOS firmy Apple z 12,1 proc., z rocznym spadkiem udziału w rynku o 5,2 proc., podczas gdy inne systemy operacyjne to zaledwie 0,3 proc. Dystrybucje Linuksa dominują w sektorach serwerów i superkomputerów. Dla wielu aplikacji istnieją inne wyspecjalizowane klasy systemów operacyjnych (specjalne systemy operacyjne), takie jak systemy wbudowane i systemy czasu rzeczywistego. Istnieją również systemy operacyjne ukierunkowane na bezpieczeństwo . Niektóre systemy operacyjne mają niskie wymagania systemowe (np. lekka dystrybucja Linuksa ). Inne mogą mieć wyższe wymagania systemowe.

Niektóre systemy operacyjne wymagają instalacji lub mogą być preinstalowane z zakupionymi komputerami (instalacja OEM ), podczas gdy inne mogą działać bezpośrednio z nośnika (np. Live CD ) lub pamięci flash (np. pendrive'a).

Rodzaje systemów operacyjnych

Jednozadaniowość i wielozadaniowość

System jednozadaniowy może uruchamiać tylko jeden program naraz, podczas gdy wielozadaniowy system operacyjny umożliwia współbieżne działanie więcej niż jednego programu . Osiąga się to poprzez podział czasu , w którym dostępny czas procesora jest dzielony między wiele procesów. Każdy z tych procesów jest wielokrotnie przerywany w przedziałach czasu przez podsystem planowania zadań systemu operacyjnego. Wielozadaniowość można scharakteryzować jako typ wyprzedzający i kooperacyjny. W wielozadaniowości z wywłaszczaniem system operacyjny odcina czas procesora i przydziela miejsce każdemu z programów. Uniksowych systemach operacyjnych, takich jak Solaris i Linux -jako także non-Unix-podobne, takie jak AmigaOS -support poboru wielozadaniowość. Wielozadaniowość kooperacyjna jest osiągana poprzez poleganie na każdym procesie, aby zapewnić czas innym procesom w określony sposób. 16-bitowe wersje systemu Microsoft Windows wykorzystywały kooperacyjną wielozadaniowość; 32-bitowe wersje Windows NT i Win9x wykorzystywały wielozadaniowość z wywłaszczaniem.

Jeden i wielu użytkowników

Systemy operacyjne dla jednego użytkownika nie mają możliwości rozróżnienia użytkowników, ale mogą umożliwiać jednoczesne uruchamianie wielu programów. Wielu użytkowników systemu operacyjnego rozszerza podstawową koncepcję wielozadaniowym z udogodnień, które identyfikują procesy i zasoby, takie jak miejsca na dysku, należących do wielu użytkowników, a system pozwala wielu użytkownikom na interakcję z systemem w tym samym czasie. Systemy operacyjne z podziałem czasu planują zadania w celu efektywnego wykorzystania systemu i mogą również obejmować oprogramowanie księgowe do alokacji kosztów czasu procesora, pamięci masowej, drukowania i innych zasobów dla wielu użytkowników.

Rozpowszechniane

Rozproszony system operacyjny zarządza grupą odrębnych, sieci komputerów i sprawia, że wydają się być pojedynczy komputer, jak wszystkie obliczenia są rozłożone (podzielone między komputerami składowych).

Szablon

W kontekście przetwarzania rozproszonego i przetwarzania w chmurze systemu operacyjnego szablonowanie odnosi się do tworzenia obrazu pojedynczej maszyny wirtualnej jako systemu operacyjnego gościa, a następnie zapisywania go jako narzędzia dla wielu działających maszyn wirtualnych. Technika ta jest wykorzystywana zarówno w wirtualizacji, jak i zarządzaniu przetwarzaniem w chmurze i jest powszechna w dużych hurtowniach serwerów.

Osadzony

Wbudowane systemy operacyjne są przeznaczone do stosowania we wbudowanych systemach komputerowych . Przeznaczone są do pracy na małych maszynach o mniejszej autonomii (np. PDA). Są bardzo kompaktowe i niezwykle wydajne z założenia i mogą działać przy ograniczonej ilości zasobów. Windows CE i Minix 3 to tylko niektóre przykłady wbudowanych systemów operacyjnych.

Czas rzeczywisty

System operacyjny czasu rzeczywistego to system operacyjny, który gwarantuje przetwarzanie zdarzeń lub danych do określonego momentu w czasie. System operacyjny czasu rzeczywistego może być jedno- lub wielozadaniowy, ale w przypadku wielozadaniowości wykorzystuje wyspecjalizowane algorytmy planowania, aby osiągnąć deterministyczny charakter zachowania. Taki system sterowany zdarzeniami przełącza się między zadaniami w oparciu o ich priorytety lub zdarzenia zewnętrzne, podczas gdy systemy operacyjne z podziałem czasu przełączają zadania w oparciu o przerwania zegara .

Biblioteka

Biblioteczny system operacyjny to taki, w którym usługi, które zapewnia typowy system operacyjny, takie jak obsługa sieci, są dostarczane w postaci bibliotek i skomponowane z aplikacją i kodem konfiguracyjnym w celu skonstruowania unikernela : wyspecjalizowanej, pojedynczej przestrzeni adresowej , obrazu maszyny które można wdrożyć w środowiskach chmurowych lub wbudowanych.

Historia

Wczesne komputery były budowane do wykonywania serii pojedynczych zadań, takich jak kalkulator. W latach pięćdziesiątych opracowano podstawowe funkcje systemu operacyjnego, takie jak funkcje monitora rezydentnego, które mogły automatycznie uruchamiać kolejno różne programy w celu przyspieszenia przetwarzania. Systemy operacyjne w swoich nowoczesnych i bardziej złożonych formach nie istniały aż do wczesnych lat sześćdziesiątych. Dodano funkcje sprzętowe, które umożliwiły korzystanie z bibliotek wykonawczych , przerwań i przetwarzania równoległego . Kiedy komputery osobiste stały się popularne w latach 80., stworzono dla nich systemy operacyjne podobne w koncepcji do tych używanych na większych komputerach.

W latach czterdziestych najwcześniejsze elektroniczne systemy cyfrowe nie miały systemów operacyjnych. Układy elektroniczne tego czasu programowano na rzędach przełączników mechanicznych lub za pomocą przewodów połączeniowych na tablicach rozdzielczych . Były to systemy specjalnego przeznaczenia, które na przykład generowały tabele balistyczne dla wojska lub kontrolowały drukowanie czeków płacowych na podstawie danych na kartach dziurkowanych. Po wynalezieniu programowalnych komputerów ogólnego przeznaczenia wprowadzono języki maszynowe (składające się z ciągów cyfr binarnych 0 i 1 na dziurkowanej taśmie papierowej), które przyspieszyły proces programowania (Stern, 1981).

OS/360 był używany na większości komputerów mainframe IBM począwszy od 1966 roku, w tym na komputerach używanych przez program Apollo .

We wczesnych latach pięćdziesiątych komputer mógł wykonywać jednocześnie tylko jeden program. Każdy użytkownik miał wyłączny dostęp do komputera przez ograniczony czas i przychodził o zaplanowanym czasie ze swoim programem i danymi na kartach dziurkowanych lub taśmie dziurkowanej . Program zostałby załadowany do maszyny, a maszyna byłaby ustawiona do pracy do czasu zakończenia lub awarii programu . Programy można zwykle debugować za pomocą panelu przedniego za pomocą przełączników i lampek na panelu. Mówi się, że Alan Turing był w tym mistrzem na wczesnej maszynie Manchester Mark 1 i już wywodził prymitywną koncepcję systemu operacyjnego z zasad uniwersalnej maszyny Turinga .

Później pojawiły się maszyny z bibliotekami programów, które były połączone z programem użytkownika, aby pomóc w operacjach takich jak wejście i wyjście oraz kompilacja (generowanie kodu maszynowego z czytelnego dla człowieka kodu symbolicznego ). Taka była geneza współczesnego systemu operacyjnego. Jednak maszyny nadal wykonywały jedno zadanie na raz. Na uniwersytecie w Cambridge w Anglii kolejka do pracy była kiedyś sznurem do prania (sznur do prania), na którym zawieszano taśmy z różnymi kolorowymi spinaczami do bielizny, aby wskazać priorytet pracy.

Ulepszeniem był Inspektor Atlasa . Wprowadzony wraz z Manchester Atlas w 1962 roku, przez wielu uważany jest za pierwszy rozpoznawalny nowoczesny system operacyjny. Brinch Hansen określił to jako „największy przełom w historii systemów operacyjnych”.

Komputery mainframe

W latach pięćdziesiątych wiele ważnych funkcji było pionierskich w dziedzinie systemów operacyjnych na komputerach mainframe , w tym przetwarzanie wsadowe , przerywanie wejścia/wyjścia , buforowanie , wielozadaniowość , buforowanie , biblioteki wykonawcze , ładowanie łączy i programy do sortowania rekordów w plikach. Te funkcje były lub nie były uwzględniane w oprogramowaniu aplikacyjnym na życzenie programistów aplikacji, a nie w oddzielnym systemie operacyjnym używanym przez wszystkie aplikacje. W 1959 roku system operacyjny SHARE został wydany jako zintegrowane narzędzie dla IBM 704 , a później w komputerach mainframe 709 i 7090 , chociaż został szybko zastąpiony przez IBSYS /IBJOB w 709, 7090 i 7094.

W latach sześćdziesiątych IBM OS/360 wprowadził koncepcję pojedynczego systemu operacyjnego obejmującego całą linię produktów, co miało kluczowe znaczenie dla sukcesu maszyn System/360. Obecne systemy operacyjne IBM mainframe są dalekimi potomkami tego oryginalnego systemu, a nowoczesne maszyny są wstecznie kompatybilne z aplikacjami napisanymi dla OS/360.

OS/360 jest również pionierem koncepcji, zgodnie z którą system operacyjny śledzi wszystkie używane zasoby systemowe, w tym przydzielanie przestrzeni na programy i dane w pamięci głównej i przestrzeni plików w pamięci dodatkowej oraz blokowanie plików podczas aktualizacji. Gdy proces zostanie przerwany z jakiegokolwiek powodu, wszystkie te zasoby są odzyskiwane przez system operacyjny.

Alternatywny system CP-67 dla S/360-67 zapoczątkował całą linię systemów operacyjnych IBM skoncentrowanych na koncepcji maszyn wirtualnych . Inne systemy operacyjne używane na komputerach mainframe IBM S/360 obejmowały systemy opracowane przez IBM: DOS/360 (Disk Operating System), TSS/360 (Time Sharing System), TOS/360 (Tape Operating System), BOS/360 (Basic Operating System) i ACP (Airline Control Program), a także kilka systemów innych niż IBM: MTS (Michigan Terminal System), MUSIC (Multi-User System for Interactive Computing) i ORVYL (Stanford Timesharing System).

Firma Control Data Corporation opracowała system operacyjny SCOPE w latach 60-tych do przetwarzania wsadowego . We współpracy z University of Minnesota w latach 70. opracowano systemy operacyjne Kronos, a później NOS , które obsługiwały jednoczesne używanie wsadowe i współdzielenie czasu. Podobnie jak wiele komercyjnych systemów współdzielenia czasu, jego interfejs był rozszerzeniem systemów operacyjnych Dartmouth BASIC , jednego z pionierskich przedsięwzięć w zakresie współdzielenia czasu i języków programowania. Pod koniec lat 70. firma Control Data i University of Illinois opracowały system operacyjny PLATO , który wykorzystywał wyświetlacze plazmowe i sieci współdzielenia czasu na duże odległości. Platon był niezwykle innowacyjny jak na swoje czasy, oferując czat w czasie rzeczywistym i gry graficzne dla wielu użytkowników.

W 1961 roku firma Burroughs Corporation wprowadziła B5000 z systemem operacyjnym MCP (Master Control Program). B5000 był maszyną stosową zaprojektowaną do obsługi wyłącznie języków wysokiego poziomu bez asemblera; w rzeczywistości MCP był pierwszym systemem operacyjnym, który został napisany wyłącznie w języku wysokiego poziomu ( ESPOL , dialekt ALGOL ). MCP wprowadził także wiele innych przełomowych innowacji, takich jak pierwsza komercyjna implementacja pamięci wirtualnej . Podczas opracowywania AS/400 firma IBM zwróciła się do Burroughs o udzielenie licencji MCP na pracę na sprzęcie AS/400. Ta propozycja została odrzucona przez kierownictwo Burroughs, aby chronić istniejącą produkcję sprzętu. MCP jest nadal używany w linii komputerów MCP/ClearPath firmy Unisys .

UNIVAC , pierwszy komercyjny producent komputerów, wyprodukował serię systemów operacyjnych EXEC. Podobnie jak wszystkie wczesne systemy typu mainframe, ten zorientowany wsadowo system zarządzał bębnami magnetycznymi, dyskami, czytnikami kart i drukarkami liniowymi. W latach 70. UNIVAC wyprodukował system Real-Time Basic (RTB) do obsługi udostępniania czasu na dużą skalę, również wzorowany na systemie Dartmouth BC.

General Electric i MIT opracowali General Electric Comprehensive Operating Supervisor (GECOS), który wprowadził koncepcję poziomów uprawnień bezpieczeństwa pierścieniowego. Po przejęciu przez Honeywell został przemianowany na General Comprehensive Operating System (GCOS).

Firma Digital Equipment Corporation opracowała wiele systemów operacyjnych dla swoich różnych linii komputerowych, w tym systemy współdzielenia czasu TOPS-10 i TOPS-20 dla 36-bitowych systemów klasy PDP-10. Przed powszechnym użyciem UNIX, TOPS-10 był szczególnie popularnym systemem na uniwersytetach i we wczesnej społeczności ARPANET . RT-11 to system operacyjny czasu rzeczywistego dla jednego użytkownika dla minikomputera klasy PDP-11 , a RSX-11 to odpowiedni system operacyjny dla wielu użytkowników.

Od końca lat 60. do późnych lat 70. ewoluowało kilka możliwości sprzętowych, które umożliwiały uruchamianie podobnego lub przeniesionego oprogramowania w więcej niż jednym systemie. Wczesne systemy wykorzystywały mikroprogramowanie do implementowania funkcji w swoich systemach, aby różne podstawowe architektury komputerowe wydawały się takie same jak inne w serii. W rzeczywistości większość 360 po 360/40 (z wyjątkiem 360/44, 360/75, 360/91, 360/95 i 360/195) to implementacje mikroprogramowane.

Ogromne inwestycje w oprogramowanie dla tych systemów dokonywane od lat 60. XX wieku spowodowały, że większość oryginalnych producentów komputerów nadal rozwija kompatybilne systemy operacyjne wraz ze sprzętem. Znane obsługiwane systemy operacyjne mainframe obejmują:

Mikrokomputery

PC DOS był wczesnym systemem operacyjnym komputera osobistego, który zawierał interfejs wiersza poleceń.
Mac OS firmy Apple Computer stał się pierwszym rozpowszechnionym systemem operacyjnym z graficznym interfejsem użytkownika . Wiele jego funkcji, takich jak okna i ikony, stało się później powszechne w GUI.

Pierwsze mikrokomputery nie miały możliwości ani potrzeby posiadania rozbudowanych systemów operacyjnych, które zostały opracowane dla komputerów mainframe i minis; opracowano minimalistyczne systemy operacyjne, często ładowane z pamięci ROM i znane jako monitory . Jedną z istotnych wcześnie system operacyjny dysk był CP / M , który został osadzony na wielu pierwszych mikrokomputerów i był ściśle naśladowane przez Microsoft „s MS-DOS , który stał się bardzo popularny jako systemu operacyjnego wybranego do IBM PC (wersja IBM z Nazwano IBM DOS lub PC DOS ). W latach 80. firma Apple Computer Inc. (obecnie Apple Inc. ) porzuciła popularną serię mikrokomputerów Apple II, aby wprowadzić komputer Apple Macintosh z innowacyjnym graficznym interfejsem użytkownika (GUI) do systemu Mac OS .

Wprowadzenie w październiku 1985 r. układu Intel 80386 CPU z 32-bitową architekturą i możliwościami stronicowania umożliwiło komputerom osobistym uruchamianie wielozadaniowych systemów operacyjnych, takich jak wcześniejsze minikomputery i komputery mainframe . Microsoft odpowiedział na ten postęp, zatrudniając Dave'a Cutlera , który opracował system operacyjny VMS dla Digital Equipment Corporation . Kierował rozwojem systemu operacyjnego Windows NT , który nadal służy jako podstawa linii systemów operacyjnych Microsoftu. Steve Jobs , współzałożyciel Apple Inc. , założył firmę NeXT Computer Inc., która opracowała system operacyjny NEXTSTEP . NEXTSTEP został później przejęty przez Apple Inc. i wykorzystany wraz z kodem z FreeBSD jako rdzeń Mac OS X (macOS po ostatniej zmianie nazwy).

Projekt GNU został zapoczątkowany przez aktywistę i programistę Richarda Stallmana w celu stworzenia kompletnego zamiennika wolnego oprogramowania do prawnie zastrzeżonego systemu operacyjnego UNIX . Chociaż projekt odniósł duży sukces w powielaniu funkcjonalności różnych części systemu UNIX, rozwój jądra GNU Hurd okazał się bezproduktywny. W 1991 roku fiński student informatyki Linus Torvalds , przy współpracy wolontariuszy współpracujących przez Internet, wydał pierwszą wersję jądra Linuksa . Wkrótce został połączony z komponentami przestrzeni użytkownika GNU i oprogramowaniem systemowym, tworząc kompletny system operacyjny. Od tego czasu połączenie dwóch głównych komponentów jest zwykle określane przez przemysł oprogramowania jako po prostu „Linux”, co jest konwencją nazewnictwa, której sprzeciwiają się Stallman i Free Software Foundation , preferując nazwę GNU/Linux. Dystrybucja oprogramowania Berkeley, znana jako BSD , jest pochodną systemu UNIX dystrybuowaną przez Uniwersytet Kalifornijski w Berkeley, począwszy od lat 70. XX wieku. Swobodnie dystrybuowany i przenoszony na wiele minikomputerów, w końcu zyskał także zwolenników do użytku na komputerach PC, głównie jako FreeBSD , NetBSD i OpenBSD .

Przykłady

Systemy operacyjne Unix i uniksopodobne

Ewolucja systemów uniksowych

Unix został pierwotnie napisany w asemblerze . Ken Thompson napisał B , głównie w oparciu o BCPL , bazując na swoim doświadczeniu w projekcie MULTICS . B został zastąpiony przez C , a Unix, przepisany w C, rozwinął się w dużą, złożoną rodzinę powiązanych ze sobą systemów operacyjnych, które miały wpływ na każdy nowoczesny system operacyjny (patrz Historia ).

Rodzina uniksopodobna to zróżnicowana grupa systemów operacyjnych, z kilkoma głównymi podkategoriami, w tym System V , BSD i Linux . Nazwa „ UNIX ” jest znakiem towarowym The Open Group, który udziela licencji na użytkowanie z dowolnym systemem operacyjnym, który okazał się zgodny z ich definicjami. „Podobny do UNIX” jest powszechnie używany w odniesieniu do dużego zestawu systemów operacyjnych, które przypominają oryginalny UNIX.

Systemy uniksowe działają na wielu różnych architekturach komputerowych . Są intensywnie używane w serwerach w biznesie, a także w stacjach roboczych w środowiskach akademickich i inżynierskich. W tych obszarach popularne są bezpłatne warianty systemu UNIX, takie jak Linux i BSD .

Cztery systemy operacyjne są certyfikowane przez The Open Group (właściciela znaku towarowego Unix) jako Unix. HP -UX firmy HP i AIX firmy IBM są potomkami oryginalnego systemu Unix System V i zostały zaprojektowane do działania wyłącznie na sprzęcie odpowiedniego dostawcy. W przeciwieństwie do tego, Sun Microsystems „s Solaris można uruchomić na wielu typów urządzeń, w tym x86 i Sparc serwerów i komputerów. MacOS firmy Apple , zamiennik wcześniejszego (nie Uniksowego) systemu Mac OS firmy Apple, jest hybrydowym wariantem BSD opartym na jądrze , wywodzącym się z NeXTSTEP , Mach i FreeBSD .

Interoperacyjność Unix była poszukiwana przez ustanowienie standardu POSIX . Standard POSIX można zastosować do dowolnego systemu operacyjnego, chociaż pierwotnie został stworzony dla różnych wariantów Uniksa.

BSD i jego potomkowie

Pierwszy serwer w sieci World Wide Web pobiegł na NeXTSTEP, oparte na BSD.

Podgrupą rodziny Unix jest rodzina Berkeley Software Distribution , która obejmuje FreeBSD , NetBSD i OpenBSD . Te systemy operacyjne są najczęściej spotykane na serwerach internetowych , chociaż mogą również działać jako system operacyjny komputera osobistego. Internet zawdzięcza wiele swojego istnienia BSD, ponieważ wiele protokołów powszechnie używanych obecnie przez komputery do łączenia, wysyłania i odbierania danych przez sieć zostało szeroko zaimplementowanych i udoskonalonych w BSD. Sieć WWW została również po raz pierwszy zademonstrowana na kilku komputerach z systemem operacyjnym opartym na BSD o nazwie NeXTSTEP .

W 1974 roku Uniwersytet Kalifornijski w Berkeley zainstalował swój pierwszy system uniksowy. Z czasem studenci i pracownicy wydziału informatyki zaczęli dodawać nowe programy ułatwiające pracę, takie jak edytory tekstu. Kiedy w 1978 roku Berkeley otrzymał nowe komputery VAX z zainstalowanym systemem Unix, studenci szkoły jeszcze bardziej zmodyfikowali Uniksa, aby wykorzystać możliwości sprzętowe komputera. Defense Advanced Research Projects Agency z amerykańskiego Departamentu Obrony wziął interes i postanowił sfinansować projekt. Wiele szkół, korporacji i organizacji rządowych zauważyło i zaczęło używać wersji Unix firmy Berkeley zamiast oficjalnej wersji dystrybuowanej przez AT&T.

Steve Jobs , opuszczając Apple Inc. w 1985 roku, założył NeXT Inc. , firmę produkującą wysokiej klasy komputery działające na odmianie BSD o nazwie NeXTSTEP . Jeden z tych komputerów został wykorzystany przez Tima Berners-Lee jako pierwszy serwer WWW do stworzenia sieci WWW.

Deweloperzy, tacy jak Keith Bostic, zachęcali projekt do zastąpienia każdego niewolnego kodu pochodzącego z Bell Labs. Jednak kiedy to zostało zrobione, AT&T pozwało sprawę. Po dwóch latach sporów prawnych, projekt BSD zrodził wiele darmowych pochodnych, takich jak NetBSD i FreeBSD (oba w 1993) oraz OpenBSD (z NetBSD w 1995).

System operacyjny Mac

macOS (dawniej „Mac OS X”, a później „OS X”) to linia graficznych systemów operacyjnych z otwartym rdzeniem , opracowanych, sprzedawanych i sprzedawanych przez firmę Apple Inc. , z których najnowszy jest wstępnie instalowany na wszystkich obecnie sprzedawanych komputerach Macintosh . MacOS jest następcą pierwotnego klasycznego Mac OS , który został podstawowy system operacyjny Apple od 1984 roku w przeciwieństwie do swojego poprzednika, MacOS to UNIX system operacyjny oparty na technologii, która została opracowana w NeXT przez drugą połowę 1980 roku i aż do Apple kupiło firmę na początku 1997 roku. System operacyjny został po raz pierwszy wydany w 1999 roku jako Mac OS X Server 1.0 , a następnie w marcu 2001 roku jako wersja kliencka ( Mac OS X v10.0 " Cheetah " ). Od tego czasu wydano sześć kolejnych odrębnych wersji macOS „klienta” i „ serwera ”, dopóki nie zostały one połączone w systemie OS X 10.7 „Lion” .

Przed połączeniem z macOS wersja serwerowa – macOS Server  – była architektonicznie identyczna z jej odpowiednikiem na komputery stacjonarne i zwykle działała na linii sprzętu serwerowego Apple Macintosh . MacOS Server włączone zarządzanie grupą pracy i administracja oprogramowania narzędzia, które zapewniają uproszczony dostęp do najważniejszych usług sieciowych , w tym agenta transferowego poczty elektronicznej , na serwer Samba , z LDAP serwer, serwer nazw domen i innych. W systemie Mac OS X v10.7 Lion wszystkie aspekty serwerowe systemu Mac OS X Server zostały zintegrowane z wersją kliencką, a produkt został przemianowany na „OS X” (pominięto „Mac” z nazwy). Narzędzia serwerowe są teraz oferowane jako aplikacja.

Linux

Ubuntu , dystrybucja Linuksa dla komputerów stacjonarnych
Linux , system operacyjny podobny do uniksa, został po raz pierwszy wydany 17 września 1991 roku przez Linusa Torvaldsa . Obraz Tux pingwin , maskotka Linuksa.

Jądro Linuksa powstało w 1991 roku jako projekt Linusa Torvaldsa podczas studiów na uniwersytecie w Finlandii. Opublikował informacje o swoim projekcie na grupie dyskusyjnej dla studentów komputerów i programistów oraz otrzymał wsparcie i pomoc od wolontariuszy, którym udało się stworzyć kompletne i funkcjonalne jądro.

Linux jest podobny do Uniksa , ale został opracowany bez żadnego kodu Uniksowego, w przeciwieństwie do BSD i jego wariantów. Ze względu na model otwartej licencji, kod jądra Linuksa jest dostępny do badania i modyfikacji, co zaowocowało jego wykorzystaniem w szerokim zakresie maszyn obliczeniowych, od superkomputerów po smartwatche. Chociaż szacunki sugerują, że Linux jest używany tylko na 1,82% wszystkich komputerów stacjonarnych (lub laptopów), jest on powszechnie stosowany w serwerach i systemach wbudowanych, takich jak telefony komórkowe. Linux zastąpił Uniksa na wielu platformach i jest używany na większości superkomputerów, w tym na top 385. Wiele z tych samych komputerów jest również na Green500 (ale w innej kolejności), a Linux działa na pierwszej 10. Linux jest również powszechnie używany na innych małych energooszczędne komputery, takie jak smartfony i smartwatche . Jądro Linux jest używany w niektórych popularnych dystrybucjach, takich jak Red Hat , Debian , Ubuntu , Linux Mint i Google „s Android , Chrome OS i Chromium OS .

Microsoft Windows

Microsoft Windows to rodzina zastrzeżonych systemów operacyjnych zaprojektowanych przez firmę Microsoft Corporation i przeznaczonych głównie dla komputerów opartych na architekturze Intela, z szacowanym 88,9 procentowym udziałem w całkowitym wykorzystaniu komputerów podłączonych do Internetu. Najnowsza wersja to Windows 11 .

W 2011 roku Windows 7 wyprzedził Windows XP jako najczęściej używana wersja.

Microsoft Windows został po raz pierwszy wydany w 1985 roku, jako środowisko operacyjne działające w oparciu o MS-DOS , który był wówczas standardowym systemem operacyjnym dostarczanym na większości komputerów osobistych z architekturą Intela. W 1995 roku został wydany Windows 95, który używał tylko MS-DOS jako programu startowego. Aby zapewnić kompatybilność wsteczną, Win9x może uruchamiać sterowniki trybu rzeczywistego MS-DOS i 16-bitowe sterowniki Windows 3.x. Windows ME , wydany w 2000 roku, był ostatnią wersją z rodziny Win9x. Wszystkie późniejsze wersje były oparte na jądrze Windows NT . Aktualne klienckie wersje systemu Windows działają na mikroprocesorach IA-32 , x86-64 i ARM . Ponadto Itanium jest nadal obsługiwany w starszych wersjach serwerowych Windows Server 2008 R2 . W przeszłości system Windows NT obsługiwał dodatkowe architektury.

Wersje serwerowe systemu Windows są szeroko stosowane. W ostatnich latach Microsoft przeznaczył znaczny kapitał na promowanie używania Windows jako systemu operacyjnego dla serwerów . Jednak wykorzystanie systemu Windows na serwerach nie jest tak rozpowszechnione, jak na komputerach osobistych, ponieważ Windows konkuruje z Linuksem i BSD o udział w rynku serwerów.

ReactOS to alternatywny dla Windows system operacyjny, który jest rozwijany na zasadach Windows – bez użycia kodu Microsoftu.

Inne

Było wiele systemów operacyjnych, które były znaczące w tamtych czasach, ale już takie nie są, takie jak AmigaOS ; OS/2 od IBM i Microsoft; klasyczny Mac OS , nieuniksowy prekursor macOS firmy Apple; BeOS ; XTS-300 ; RYZYKO OS ; MorphOS ; Haiku ; BareMetal i FreeMint . Niektóre są nadal używane na rynkach niszowych i nadal są rozwijane jako platformy mniejszościowe dla społeczności entuzjastów i zastosowań specjalistycznych. OpenVMS , poprzednio z DEC , jest nadal aktywnie rozwijany przez VMS Software Inc . Jednak inne systemy operacyjne są używane prawie wyłącznie w środowisku akademickim, do edukacji systemów operacyjnych lub do prowadzenia badań nad koncepcjami systemów operacyjnych. Typowym przykładem systemu, który spełnia obie role, jest MINIX , podczas gdy np. Singularity służy wyłącznie do badań. Innym przykładem jest System Oberon zaprojektowany w ETH Zürich przez Niklausa Wirtha , Jürga Gutknechta i grupę studentów z byłego Instytutu Systemów Komputerowych w latach 80-tych. Był używany głównie do badań, nauczania i codziennej pracy w grupie Wirtha.

Inne systemy operacyjne nie zdołały zdobyć znaczącego udziału w rynku, ale wprowadziły innowacje, które wpłynęły na popularne systemy operacyjne, między innymi plan Bell Labs 9 .

składniki

Wszystkie składniki systemu operacyjnego istnieją po to, aby różne części komputera współpracowały ze sobą. Całe oprogramowanie użytkownika musi przejść przez system operacyjny, aby móc korzystać z dowolnego sprzętu, czy to tak prostego jak mysz czy klawiatura, czy też tak złożonego jak komponent internetowy.

Jądro

Jądro łączy oprogramowanie aplikacji ze sprzętem komputera.

Za pomocą oprogramowania układowego i sterowników urządzeń jądro zapewnia najbardziej podstawowy poziom kontroli nad wszystkimi urządzeniami sprzętowymi komputera. Zarządza dostępem do pamięci dla programów w pamięci RAM , określa, które programy uzyskują dostęp do jakich zasobów sprzętowych, konfiguruje lub resetuje stany operacyjne procesora w celu zapewnienia optymalnej pracy przez cały czas oraz organizuje dane do długoterminowego nieulotnego przechowywania z systemami plików na takich nośnikach jak dyski, taśmy, pamięć flash itp.

Wykonanie programu

System operacyjny zapewnia interfejs między programem aplikacji a sprzętem komputerowym, dzięki czemu program aplikacji może wchodzić w interakcje ze sprzętem tylko poprzez przestrzeganie reguł i procedur zaprogramowanych w systemie operacyjnym. System operacyjny to także zestaw usług, które ułatwiają tworzenie i wykonywanie programów użytkowych. Wykonywanie programu aplikacyjnego polega na utworzeniu procesu przez jądro systemu operacyjnego, które przydziela przestrzeń pamięci i inne zasoby, ustala priorytet dla procesu w systemach wielozadaniowych, ładuje binarny kod programu do pamięci i inicjuje wykonanie programu aplikacyjnego, który następnie wchodzi w interakcję z użytkownikiem i urządzeniami sprzętowymi.

Przerwania

Przerwania mają kluczowe znaczenie dla systemów operacyjnych, ponieważ zapewniają wydajny sposób interakcji systemu operacyjnego i reagowania na jego środowisko. Alternatywę – system operacyjny „obserwuje” różne źródła danych wejściowych pod kątem zdarzeń (odpytywania) wymagających działania – można znaleźć w starszych systemach z bardzo małymi stosami (50 lub 60 bajtów), ale jest to niezwykłe w nowoczesnych systemach z dużymi stosami. Programowanie oparte na przerwaniach jest bezpośrednio obsługiwane przez większość nowoczesnych procesorów. Przerwania zapewniają komputerowi sposób automatycznego zapisywania kontekstów rejestrów lokalnych i uruchamiania określonego kodu w odpowiedzi na zdarzenia. Nawet bardzo proste komputery obsługują przerwania sprzętowe i pozwalają programiście określić kod, który może zostać uruchomiony, gdy to zdarzenie ma miejsce.

Po odebraniu przerwania sprzęt komputerowy automatycznie zawiesza aktualnie uruchomiony program, zapisuje jego stan i uruchamia kod komputerowy wcześniej powiązany z przerwaniem; jest to analogiczne do umieszczania zakładki w książce w odpowiedzi na telefon. W nowoczesnych systemach operacyjnych przerwania są obsługiwane przez jądro systemu operacyjnego . Przerwania mogą pochodzić ze sprzętu komputera lub z uruchomionego programu.

Kiedy urządzenie sprzętowe wyzwala przerwanie, jądro systemu operacyjnego decyduje, jak poradzić sobie z tym zdarzeniem, zazwyczaj uruchamiając jakiś kod przetwarzający. Ilość uruchomionego kodu zależy od priorytetu przerwania (na przykład: osoba zwykle reaguje na alarm czujki dymu przed odebraniem telefonu). Przetwarzanie przerwań sprzętowych jest zadaniem, które jest zwykle delegowane do oprogramowania zwanego sterownikiem urządzenia , które może być częścią jądra systemu operacyjnego, częścią innego programu lub jednym i drugim. Sterowniki urządzeń mogą następnie przekazywać informacje do uruchomionego programu na różne sposoby.

Program może również wywołać przerwanie systemu operacyjnego. Jeśli program chce na przykład uzyskać dostęp do sprzętu, może przerwać jądro systemu operacyjnego, co powoduje przekazanie kontroli z powrotem do jądra. Następnie jądro przetwarza żądanie. Jeśli program życzy sobie dodatkowych zasobów (lub chce stracić zasoby), takich jak pamięć, uruchamia przerwanie, aby zwrócić uwagę jądra.

Tryby

Pierścienie uprawnień dla architektury mikroprocesorowej x86 dostępne w trybie chronionym . Systemy operacyjne określają, które procesy działają w każdym trybie.

Nowoczesne komputery obsługują wiele trybów działania. Procesory z tą możliwością oferują co najmniej dwa tryby: tryb użytkownika i tryb administratora . Ogólnie rzecz biorąc, praca w trybie administratora umożliwia nieograniczony dostęp do wszystkich zasobów maszyny, w tym wszystkich instrukcji MPU. Działanie w trybie użytkownika ogranicza użycie instrukcji i zazwyczaj uniemożliwia bezpośredni dostęp do zasobów maszyny. Procesory mogą mieć również inne tryby podobne do trybu użytkownika, takie jak tryby wirtualne w celu emulowania starszych typów procesorów, takich jak procesory 16-bitowe w przypadku procesora 32-bitowego lub procesory 32-bitowe w przypadku procesora 64-bitowego .

Po włączeniu lub zresetowaniu system uruchamia się w trybie administratora. Po załadowaniu i uruchomieniu jądra systemu operacyjnego można ustalić granicę między trybem użytkownika a trybem administratora (znanym również jako tryb jądra).

Tryb nadzorcy jest używany przez jądro do zadań niskiego poziomu, które wymagają nieograniczonego dostępu do sprzętu, takich jak kontrolowanie dostępu do pamięci i komunikowanie się z urządzeniami, takimi jak napędy dysków i urządzenia do wyświetlania wideo. Natomiast tryb użytkownika jest używany do prawie wszystkiego innego. Programy aplikacyjne, takie jak edytory tekstu i menedżery baz danych, działają w trybie użytkownika i mogą uzyskać dostęp do zasobów maszyny tylko poprzez przekazanie kontroli jądru, co powoduje przełączenie w tryb administratora. Zazwyczaj przekazanie kontroli do jądra uzyskuje się przez wykonanie instrukcji przerwania programowego , takiej jak instrukcja Motorola 68000 TRAP. Przerwanie programowe powoduje przełączenie procesora z trybu użytkownika do trybu nadzorcy i rozpoczęcie wykonywania kodu, który pozwala jądru przejąć kontrolę.

W trybie użytkownika programy zwykle mają dostęp do ograniczonego zestawu instrukcji procesora i generalnie nie mogą wykonywać żadnych instrukcji, które mogłyby potencjalnie spowodować zakłócenia w działaniu systemu. W trybie nadzorcy, ograniczenia wykonywania instrukcji są zazwyczaj usuwane, umożliwiając nieograniczony dostęp jądra do wszystkich zasobów maszyny.

Termin „zasób trybu użytkownika” ogólnie odnosi się do jednego lub więcej rejestrów procesora, które zawierają informacje, których uruchomiony program nie może zmieniać. Próby zmiany tych zasobów zazwyczaj powodują przełączenie w tryb administratora, w którym system operacyjny może poradzić sobie z nielegalną operacją, której próbował program, na przykład poprzez wymuszenie zakończenia („zabicia”) programu.

Zarządzanie pamięcią

Między innymi wieloprogramowe jądro systemu operacyjnego musi być odpowiedzialne za zarządzanie całą pamięcią systemową, która jest aktualnie używana przez programy. Gwarantuje to, że program nie koliduje z pamięcią już używaną przez inny program. Ponieważ programy współdzielą czas, każdy program musi mieć niezależny dostęp do pamięci.

Zarządzanie pamięcią kooperacyjną, używane przez wiele wczesnych systemów operacyjnych, zakłada, że ​​wszystkie programy dobrowolnie korzystają z menedżera pamięci jądra i nie przekraczają przydzielonej im pamięci. Ten system zarządzania pamięcią jest już prawie nigdy nie widziany, ponieważ programy często zawierają błędy, które mogą spowodować, że przekroczą przydzieloną im pamięć. Jeśli program ulegnie awarii, może to spowodować uszkodzenie lub nadpisanie pamięci używanej przez jeden lub więcej innych programów. Złośliwe programy lub wirusy mogą celowo zmieniać pamięć innego programu lub wpływać na działanie samego systemu operacyjnego. Dzięki kooperatywnemu zarządzaniu pamięcią wystarczy jeden źle działający program, aby zawiesić system.

Ochrona pamięci umożliwia jądru ograniczenie dostępu procesu do pamięci komputera. Istnieją różne metody ochrony pamięci, w tym segmentacja pamięci i stronicowanie . Wszystkie metody wymagają pewnego poziomu obsługi sprzętu (takiego jak 80286 MMU), który nie istnieje na wszystkich komputerach.

Zarówno w przypadku segmentacji, jak i stronicowania, pewne rejestry trybu chronionego określają procesorowi, jaki adres pamięci powinien umożliwiać działającemu programowi dostęp. Próby uzyskania dostępu do innych adresów wywołują przerwanie, które powoduje, że CPU ponownie wchodzi w tryb nadzorcy , przejmując kontrolę nad jądrem . Nazywa się to naruszeniem segmentacji lub w skrócie Seg-V, a ponieważ zarówno trudno jest przypisać sensowny wynik takiej operacji, jak i ponieważ jest to zwykle oznaka niewłaściwie działającego programu, jądro zazwyczaj ucieka się do zamykania naruszającego programu i zgłasza błąd.

Wersje Windows od 3.1 do ME miały pewien poziom ochrony pamięci, ale programy mogły łatwo obejść potrzebę jej używania. Powstałby ogólny błąd ochrony , wskazujący na naruszenie segmentacji; jednak system i tak często ulegał awarii.

Pamięć wirtualna

Wiele systemów operacyjnych może „nakłonić” programy do korzystania z pamięci rozproszonej na dysku twardym i pamięci RAM, tak jakby była to jedna ciągła część pamięci, zwana pamięcią wirtualną.

Użycie adresowania pamięci wirtualnej (takiej jak stronicowanie lub segmentacja) oznacza, że ​​jądro może wybrać pamięć, z której każdy program może korzystać w danym momencie, umożliwiając systemowi operacyjnemu wykorzystanie tych samych lokalizacji pamięci do wielu zadań.

Jeśli program próbuje uzyskać dostęp do pamięci, która nie znajduje się w jego aktualnym zakresie dostępnej pamięci, ale mimo to została do niego przydzielona, ​​jądro zostaje przerwane w taki sam sposób, jak gdyby program przekroczył przydzieloną mu pamięć. (Patrz rozdział o zarządzaniu pamięcią.) W systemie UNIX ten rodzaj przerwania jest określany jako błąd strony .

Gdy jądro wykryje błąd strony, zazwyczaj dostosowuje zakres pamięci wirtualnej programu, który go wyzwolił, przyznając mu dostęp do żądanej pamięci. Daje to jądru uznaniową władzę nad tym, gdzie jest przechowywana pamięć konkretnej aplikacji, a nawet czy została ona faktycznie przydzielona.

W nowoczesnych systemach operacyjnych pamięć, z której korzysta się rzadziej, może być tymczasowo przechowywana na dysku lub innym nośniku, aby udostępnić tę przestrzeń do wykorzystania przez inne programy. Nazywa się to swapping , ponieważ obszar pamięci może być używany przez wiele programów, a to, co zawiera ten obszar pamięci, może być wymieniane lub wymieniane na żądanie.

„Pamięć wirtualna” daje programiście lub użytkownikowi wrażenie, że w komputerze jest znacznie większa ilość pamięci RAM niż w rzeczywistości.

Wielozadaniowość

Wielozadaniowość odnosi się do uruchamiania wielu niezależnych programów komputerowych na tym samym komputerze; dając wrażenie, że wykonuje zadania w tym samym czasie. Ponieważ większość komputerów może wykonywać co najwyżej jedną lub dwie rzeczy na raz, zazwyczaj odbywa się to poprzez podział czasu, co oznacza, że ​​każdy program wykorzystuje część czasu komputera do wykonania.

Jądro systemu operacyjnego zawiera program planujący , który określa, ile czasu każdy proces spędza na wykonywaniu iw jakiej kolejności kontrola wykonania powinna być przekazywana programom. Kontrola jest przekazywana do procesu przez jądro, co umożliwia programowi dostęp do procesora i pamięci. Później kontrola jest zwracana do jądra przez jakiś mechanizm, dzięki czemu inny program może korzystać z procesora. To tak zwane przekazywanie kontroli między jądrem a aplikacjami nazywa się przełącznikiem kontekstu .

Wczesny model regulujący przydzielanie czasu programom nazwano kooperacyjną wielozadaniowością . W tym modelu, gdy kontrola jest przekazywana programowi przez jądro, może on działać tak długo, jak chce, zanim jawnie zwróci kontrolę do jądra. Oznacza to, że złośliwy lub nieprawidłowo działający program może nie tylko uniemożliwić innym programom korzystanie z procesora, ale może też zawiesić cały system, jeśli wejdzie w nieskończoną pętlę .

Nowoczesne systemy operacyjne rozszerzają koncepcje wywłaszczania aplikacji na sterowniki urządzeń i kod jądra, dzięki czemu system operacyjny ma również prewencyjną kontrolę nad wewnętrznymi środowiskami wykonawczymi.

Filozofia rządząca wielozadaniowością z wywłaszczaniem polega na zapewnieniu, że wszystkie programy mają regularny czas pracy procesora. Oznacza to, że wszystkie programy muszą być ograniczone pod względem czasu, jaki mogą spędzać na procesorze bez przerywania. Aby to osiągnąć, nowoczesne jądra systemu operacyjnego wykorzystują przerwanie czasowe. Chroniony tryb zaprogramowania przez jądro, które wywołają na powrót do trybu administratora po upłynięciu określonego czasu. (Patrz powyższe sekcje dotyczące przerwań i pracy w trybie podwójnym.)

W wielu systemach operacyjnych dla jednego użytkownika kooperacyjna wielozadaniowość jest w zupełności wystarczająca, ponieważ komputery domowe zazwyczaj uruchamiają niewielką liczbę dobrze przetestowanych programów. AmigaOS wyjątek, z poboru wielozadaniowość z pierwszej wersji. Windows NT był pierwszą wersją Microsoft Windows, która wymuszała wielozadaniowość z wywłaszczaniem, ale na rynek użytkowników domowych trafiła dopiero w Windows XP (ponieważ Windows NT był skierowany do profesjonalistów).

Dostęp do dysków i systemy plików

Systemy plików umożliwiają użytkownikom i programom organizowanie i sortowanie plików na komputerze, często za pomocą katalogów (lub „folderów”).

Dostęp do danych przechowywanych na dyskach jest centralną cechą wszystkich systemów operacyjnych. Komputery przechowują dane na dyskach przy użyciu plików , które są ustrukturyzowane w określony sposób w celu umożliwienia szybszego dostępu, większej niezawodności i lepszego wykorzystania dostępnego miejsca na dysku. Specyficzny sposób przechowywania plików na dysku nazywany jest systemem plików i umożliwia plikom nadawanie nazw i atrybutów. Pozwala także na przechowywanie ich w hierarchii katalogów lub folderów ułożonych w drzewie katalogów .

Wczesne systemy operacyjne generalnie obsługiwały jeden typ dysku i tylko jeden rodzaj systemu plików. Wczesne systemy plików miały ograniczoną pojemność, szybkość oraz rodzaje nazw plików i struktur katalogów, z których mogły korzystać. Ograniczenia te często odzwierciedlały ograniczenia systemów operacyjnych, dla których zostały zaprojektowane, co bardzo utrudnia systemowi operacyjnemu obsługę więcej niż jednego systemu plików.

Podczas gdy wiele prostszych systemów operacyjnych obsługuje ograniczony zakres opcji dostępu do systemów pamięci masowej, systemy operacyjne, takie jak UNIX i Linux, obsługują technologię znaną jako wirtualny system plików lub VFS. System operacyjny, taki jak UNIX, obsługuje szeroką gamę urządzeń pamięci masowej, niezależnie od ich konstrukcji lub systemów plików , umożliwiając dostęp do nich za pośrednictwem wspólnego interfejsu programowania aplikacji (API). Dzięki temu programy nie muszą mieć żadnej wiedzy na temat urządzenia, do którego uzyskują dostęp. VFS pozwala systemowi operacyjnemu zapewnić programom dostęp do nieograniczonej liczby urządzeń z nieskończoną różnorodnością zainstalowanych na nich systemów plików, poprzez użycie określonych sterowników urządzeń i sterowników systemu plików.

Dostęp do podłączonego urządzenia pamięci masowej , takiego jak dysk twardy , uzyskuje się za pośrednictwem sterownika urządzenia . Sterownik urządzenia rozumie specyficzny język napędu i jest w stanie przetłumaczyć ten język na standardowy język używany przez system operacyjny w celu uzyskania dostępu do wszystkich napędów dysków. W systemie UNIX jest to język urządzeń blokowych .

Gdy jądro ma odpowiedni sterownik urządzenia, może uzyskać dostęp do zawartości dysku w formacie raw, który może zawierać jeden lub więcej systemów plików. Sterownik systemu plików służy do tłumaczenia poleceń używanych do uzyskiwania dostępu do każdego określonego systemu plików na standardowy zestaw poleceń, których system operacyjny może używać do komunikacji ze wszystkimi systemami plików. Programy mogą wtedy radzić sobie z tymi systemami plików na podstawie nazw plików i katalogów/folderów zawartych w strukturze hierarchicznej. Mogą tworzyć, usuwać, otwierać i zamykać pliki, a także gromadzić różne informacje na ich temat, w tym uprawnienia dostępu, rozmiar, wolne miejsce oraz daty utworzenia i modyfikacji.

Różne różnice między systemami plików utrudniają obsługę wszystkich systemów plików. Dozwolone znaki w nazwach plików, rozróżnianie wielkości liter oraz obecność różnego rodzaju atrybutów plików sprawiają, że implementacja jednego interfejsu dla każdego systemu plików jest trudnym zadaniem. Systemy operacyjne zwykle zalecają używanie (a więc wsparcie natywne) systemów plików specjalnie dla nich zaprojektowanych; na przykład NTFS w systemie Windows i ext3 oraz ReiserFS w systemie Linux. Jednak w praktyce sterowniki innych firm są zwykle dostępne, aby zapewnić obsługę najpowszechniej używanych systemów plików w większości systemów operacyjnych ogólnego przeznaczenia (na przykład NTFS jest dostępny w systemie Linux poprzez NTFS-3g , a ext2/3 i ReiserFS są dostępne w systemie Windows za pośrednictwem oprogramowania innych firm).

Obsługa systemów plików jest bardzo zróżnicowana wśród nowoczesnych systemów operacyjnych, chociaż istnieje kilka powszechnych systemów plików, które prawie wszystkie systemy operacyjne zawierają obsługę i sterowniki. Systemy operacyjne różnią się pod względem obsługiwanych systemów plików i formatów dysków, na których mogą być instalowane. W systemie Windows każdy system plików jest zwykle ograniczony w zastosowaniu do określonych nośników; na przykład płyty CD muszą używać ISO 9660 lub UDF , a od Windows Vista NTFS jest jedynym systemem plików, na którym można zainstalować system operacyjny. Możliwe jest zainstalowanie Linuksa na wielu typach systemów plików. W przeciwieństwie do innych systemów operacyjnych, Linux i UNIX umożliwiają korzystanie z dowolnego systemu plików niezależnie od nośnika, na którym jest przechowywany, niezależnie od tego, czy jest to dysk twardy, dysk (CD, DVD...), dysk flash USB, a nawet zawarty w nim w pliku znajdującym się w innym systemie plików.

Sterowniki urządzeń

Sterownik urządzenia jest specyficznym typem oprogramowania komputerowego opracowany w celu umożliwienia interakcji z urządzeniami sprzętowymi. Zazwyczaj stanowi to interfejs do komunikacji z urządzeniem za pośrednictwem określonej magistrali komputerowej lub podsystemu komunikacyjnego, do którego podłączony jest sprzęt, dostarczający polecenia do i/lub odbierający dane z urządzenia, a z drugiej strony wymagane interfejsy do obsługi aplikacje systemowe i programowe. Jest to wyspecjalizowany program komputerowy zależny od sprzętu, który jest również specyficzny dla systemu operacyjnego, który umożliwia innemu programowi, zwykle systemowi operacyjnemu lub pakietowi oprogramowania lub programowi komputerowemu działającemu w jądrze systemu operacyjnego, przejrzystą interakcję z urządzeniem sprzętowym i zwykle zapewnia wymagana obsługa przerwań niezbędna dla wszelkich niezbędnych asynchronicznych, zależnych od czasu potrzeb interfejsu sprzętowego.

Kluczowym celem projektowym sterowników urządzeń jest abstrakcja . Każdy model sprzętu (nawet w tej samej klasie urządzeń) jest inny. Nowsze modele są również wydawane przez producentów, które zapewniają bardziej niezawodne lub lepsze działanie, a te nowsze modele są często kontrolowane w inny sposób. Nie można oczekiwać, że komputery i ich systemy operacyjne będą wiedziały, jak sterować każdym urządzeniem, zarówno teraz, jak iw przyszłości. Aby rozwiązać ten problem, systemy operacyjne zasadniczo dyktują sposób kontrolowania każdego typu urządzenia. Funkcją sterownika urządzenia jest zatem przetłumaczenie tych wywołań funkcji wymaganych przez system operacyjny na wywołania specyficzne dla urządzenia. Teoretycznie nowe urządzenie, sterowane w nowy sposób, powinno działać poprawnie, jeśli dostępny jest odpowiedni sterownik. Ten nowy sterownik zapewnia, że ​​urządzenie wydaje się działać normalnie z punktu widzenia systemu operacyjnego.

W wersjach Windows wcześniejszych niż Vista i Linuksowych wcześniejszych niż 2.6, całe wykonanie sterowników było kooperatywne, co oznacza, że ​​jeśli sterownik wejdzie w nieskończoną pętlę, zamrozi system. Nowsze wersje tych systemów operacyjnych zawierają wywłaszczanie jądra, w którym jądro przerywa sterownikowi, aby przekazać mu zadania, a następnie oddziela się od procesu, dopóki nie otrzyma odpowiedzi od sterownika urządzenia lub nie da mu więcej zadań do wykonania.

Sieć

Obecnie większość systemów operacyjnych obsługuje różne protokoły sieciowe, sprzęt i aplikacje do ich używania. Oznacza to, że komputery z różnymi systemami operacyjnymi mogą uczestniczyć we wspólnej sieci w celu udostępniania zasobów, takich jak komputery , pliki, drukarki i skanery za pomocą połączeń przewodowych lub bezprzewodowych. Sieci mogą zasadniczo umożliwiać systemowi operacyjnemu komputera dostęp do zasobów komputera zdalnego w celu obsługi tych samych funkcji, co gdyby zasoby te były połączone bezpośrednio z komputerem lokalnym. Obejmuje to wszystko, od prostej komunikacji po korzystanie z sieciowych systemów plików, a nawet udostępnianie grafiki lub sprzętu dźwiękowego innego komputera. Niektóre usługi sieciowe umożliwiają przezroczysty dostęp do zasobów komputera, na przykład SSH, który umożliwia użytkownikom sieciowym bezpośredni dostęp do interfejsu wiersza poleceń komputera.

Sieć klient/serwer umożliwia programowi na komputerze, zwanym klientem, łączenie się przez sieć z innym komputerem zwanym serwerem. Serwery oferują (lub hostują) różne usługi innym komputerom i użytkownikom w sieci. Usługi te są zazwyczaj świadczone przez porty lub ponumerowane punkty dostępowe poza adresem IP serwera . Każdy numer portu jest zwykle powiązany z maksymalnie jednym uruchomionym programem, który jest odpowiedzialny za obsługę żądań do tego portu. Demon, będący programem użytkownika, może z kolei uzyskać dostęp do lokalnych zasobów sprzętowych tego komputera, przekazując żądania do jądra systemu operacyjnego.

Wiele systemów operacyjnych obsługuje również jeden lub więcej protokołów sieciowych specyficznych dla dostawcy lub otwartych, na przykład SNA w systemach IBM , DECnet w systemach firmy Digital Equipment Corporation oraz protokoły specyficzne dla firmy Microsoft ( SMB ) w systemie Windows. Mogą być również obsługiwane określone protokoły do ​​określonych zadań, takie jak NFS do dostępu do plików. Protokoły takie jak ESound lub esd można łatwo rozszerzyć przez sieć, aby zapewnić dźwięk z aplikacji lokalnych na sprzęcie dźwiękowym zdalnego systemu.

Bezpieczeństwo

Bezpieczny komputer zależy od prawidłowego działania wielu technologii. Nowoczesny system operacyjny zapewnia dostęp do wielu zasobów, które są dostępne dla oprogramowania działającego w systemie oraz urządzeń zewnętrznych, takich jak sieci, za pośrednictwem jądra.

System operacyjny musi być w stanie odróżnić żądania, które powinny być przetwarzane, od innych, które nie powinny być przetwarzane. Chociaż niektóre systemy mogą po prostu rozróżniać „uprzywilejowane” i „nieuprzywilejowane”, systemy zazwyczaj mają formę tożsamości zgłaszającego , taką jak nazwa użytkownika. Aby ustalić tożsamość, może nastąpić proces uwierzytelniania . Często nazwę użytkownika należy podać w cudzysłowie, a każda nazwa użytkownika może mieć hasło. Zamiast tego można zastosować inne metody uwierzytelniania, takie jak karty magnetyczne lub dane biometryczne. W niektórych przypadkach, zwłaszcza w przypadku połączeń z sieci, dostęp do zasobów może być możliwy bez uwierzytelniania (np. odczytywanie plików przez udział sieciowy). Pojęcie tożsamości żądającego obejmuje również autoryzację ; poszczególne usługi i zasoby dostępne dla żądającego po zalogowaniu się do systemu są powiązane albo z kontem użytkownika żądającego, albo z różnie skonfigurowanymi grupami użytkowników, do których należy żądający.

Oprócz modelu bezpieczeństwa zezwalającego lub nie zezwalającego, system o wysokim poziomie bezpieczeństwa oferuje również opcje audytu. Umożliwiłyby one śledzenie próśb o dostęp do zasobów (takich jak „kto czytał ten plik?”). Bezpieczeństwo wewnętrzne lub zabezpieczenie już uruchomionego programu jest możliwe tylko wtedy, gdy wszystkie potencjalnie szkodliwe żądania muszą być realizowane przez przerwania jądra systemu operacyjnego. Jeśli programy mają bezpośredni dostęp do sprzętu i zasobów, nie można ich zabezpieczyć.

Bezpieczeństwo zewnętrzne obejmuje żądanie spoza komputera, takie jak logowanie na podłączonej konsoli lub pewnego rodzaju połączenie sieciowe. Żądania zewnętrzne są często przekazywane przez sterowniki urządzeń do jądra systemu operacyjnego, gdzie mogą być przekazywane do aplikacji lub realizowane bezpośrednio. Bezpieczeństwo systemów operacyjnych od dawna jest problemem ze względu na bardzo wrażliwe dane przechowywane na komputerach, zarówno o charakterze komercyjnym, jak i wojskowym. Stany Zjednoczone Rząd Departament Obrony (DoD) stworzył tcsec (TCSEC), który jest standardem, który wyznacza podstawowe wymagania dla oceny efektywności zabezpieczenia. Stało się to niezwykle ważne dla twórców systemów operacyjnych, ponieważ TCSEC był używany do oceny, klasyfikowania i wybierania zaufanych systemów operacyjnych, które są brane pod uwagę do przetwarzania, przechowywania i wyszukiwania poufnych lub niejawnych informacji .

Usługi sieciowe obejmują takie oferty, jak udostępnianie plików, usługi drukowania, poczta e-mail, witryny internetowe i protokoły przesyłania plików (FTP), z których większość może zagrażać bezpieczeństwu. Na pierwszej linii bezpieczeństwa znajdują się urządzenia sprzętowe znane jako zapory ogniowe lub systemy wykrywania/zapobiegania włamaniom. Na poziomie systemu operacyjnego dostępnych jest wiele zapór programowych, a także systemów wykrywania/zapobiegania włamaniom. Większość nowoczesnych systemów operacyjnych zawiera zaporę programową, która jest domyślnie włączona. Zaporę programową można skonfigurować w taki sposób, aby zezwalać na ruch sieciowy do lub z usługi lub aplikacji działającej w systemie operacyjnym lub ją odrzucać. W związku z tym można zainstalować i uruchamiać niezabezpieczoną usługę, taką jak Telnet lub FTP, i nie trzeba być zagrożonym naruszeniem bezpieczeństwa, ponieważ zapora odmówiłaby całemu ruchowi próbującemu połączyć się z usługą na tym porcie.

Alternatywną strategią, a jedynie piaskownica strategia dostępny w systemach, które nie spełniają wymagań wirtualizacji Popek i Goldberg , gdzie system operacyjny nie jest uruchomiony program użytkownika za pomocą kodu natywnego, lecz albo emuluje procesor lub oferuje szereg dla p system oparty na kodzie , taki jak Java.

Bezpieczeństwo wewnętrzne jest szczególnie istotne w przypadku systemów obsługujących wielu użytkowników; umożliwia każdemu użytkownikowi systemu posiadanie prywatnych plików, których inni użytkownicy nie mogą modyfikować ani czytać. Bezpieczeństwo wewnętrzne jest również istotne, jeśli audyt ma być użyteczny, ponieważ program może potencjalnie ominąć system operacyjny, w tym ominąć audyt.

Interfejs użytkownika

Zrzut ekranu wiersza poleceń Bash . Każde polecenie jest wpisywane po „monitcie”, a następnie jego wynik pojawia się poniżej, przesuwając się w dół ekranu. Bieżący wiersz polecenia znajduje się na dole.

Każdy komputer, który ma być obsługiwany przez jednostkę, wymaga interfejsu użytkownika . Interfejs użytkownika jest zwykle określany jako powłoka i jest niezbędny, jeśli interakcja między ludźmi ma być obsługiwana. Interfejs użytkownika wyświetla strukturę katalogów i żąda usług od systemu operacyjnego, który będzie pobierał dane z wejściowych urządzeń sprzętowych , takich jak klawiatura , mysz lub czytnik kart kredytowych , oraz żąda usług systemu operacyjnego w celu wyświetlenia monitów , komunikatów o stanie itp. na sprzęcie wyjściowym urządzenia , takie jak monitor wideo lub drukarka . Historycznie dwie najbardziej popularne formy interfejsu użytkownika to interfejs wiersza poleceń , w którym polecenia komputerowe są wpisywane wiersz po wierszu, oraz graficzny interfejs użytkownika , w którym obecne jest środowisko wizualne (najczęściej WIMP ).

Graficzne interfejsy użytkownika

Zrzut ekranu graficznego interfejsu użytkownika KDE Plasma 5 . Programy mają postać obrazów na ekranie, a pliki, foldery (katalogi) i aplikacje mają postać ikon i symboli. Mysz służy do nawigacji po komputerze.

Większość nowoczesnych systemów komputerowych obsługuje graficzne interfejsy użytkownika (GUI) i często je zawiera. W niektórych systemach komputerowych, takich jak oryginalna implementacja klasycznego Mac OS , GUI jest zintegrowane z jądrem .

Chociaż z technicznego punktu widzenia graficzny interfejs użytkownika nie jest usługą systemu operacyjnego, włączenie obsługi jednego z nich do jądra systemu operacyjnego może umożliwić szybsze reagowanie GUI poprzez zmniejszenie liczby przełączników kontekstu wymaganych do wykonywania przez GUI funkcji wyjściowych. Inne systemy operacyjne są modułowe , oddzielając podsystem graficzny od jądra i systemu operacyjnego. W latach 80. UNIX, VMS i wiele innych miało systemy operacyjne zbudowane w ten sposób. Linux i macOS są również zbudowane w ten sposób. Nowoczesne wersje systemu Microsoft Windows, takie jak Windows Vista, implementują podsystem graficzny, który znajduje się głównie w przestrzeni użytkownika; jednak procedury rysowania grafiki w wersjach między systemami Windows NT 4.0 i Windows Server 2003 istnieją głównie w przestrzeni jądra. Windows 9x miał bardzo małą różnicę między interfejsem a jądrem.

Wiele komputerowych systemów operacyjnych pozwala użytkownikowi zainstalować lub stworzyć dowolny interfejs użytkownika, jaki sobie życzy. X Window System w połączeniu z GNOME lub KDE Plasma 5 jest powszechnie spotykane w większości konfiguracji Unix i uniksowych systemów (BSD, Linux, Solaris). Dla systemu Microsoft Windows wydano wiele zamienników powłoki systemu Windows, które stanowią alternatywę dla dołączonej powłoki systemu Windows , ale samej powłoki nie można oddzielić od systemu Windows.

Z biegiem czasu istniało wiele interfejsów graficznych opartych na Uniksie, w większości wywodzących się z X11. Konkurencja między różnymi dostawcami Uniksa (HP, IBM, Sun) doprowadziła do znacznej fragmentacji, chociaż próby standaryzacji w latach 90. na COSE i CDE nie powiodły się z różnych powodów i ostatecznie zostały przyćmione przez powszechne przyjęcie środowiska GNOME i K Desktop Environment . Przed pojawieniem się zestawów narzędzi i środowisk graficznych opartych na wolnym oprogramowaniu , Motif był powszechną kombinacją zestawu narzędzi i pulpitu (i był podstawą, na której opracowano CDE).

Graficzne interfejsy użytkownika ewoluują z biegiem czasu. Na przykład system Windows modyfikował swój interfejs użytkownika prawie za każdym razem, gdy wypuszczana jest nowa główna wersja systemu Windows, a interfejs graficzny systemu Mac OS zmieniał się radykalnie wraz z wprowadzeniem systemu Mac OS X w 1999 roku.

Systemy operacyjne czasu rzeczywistego

System operacyjny czasu rzeczywistego (RTOS) to system operacyjny przeznaczony dla aplikacji o ustalonych terminach ( przetwarzanie w czasie rzeczywistym ). Takie aplikacje obejmują niektóre małe systemy wbudowane , sterowniki silników samochodowych, roboty przemysłowe, statki kosmiczne, sterowanie przemysłowe i niektóre systemy komputerowe na dużą skalę.

Wczesnym przykładem wielkoskalowego systemu operacyjnego czasu rzeczywistego był Transaction Processing Facility opracowany przez American Airlines i IBM dla Sabre Airline Reservations System .

Systemy wbudowane, które mają ustalone terminy, korzystają z systemu operacyjnego czasu rzeczywistego, takiego jak VxWorks , PikeOS , eCos , QNX , MontaVista Linux i RTLinux . Windows CE to system operacyjny czasu rzeczywistego, który dzieli podobne interfejsy API do Windows na komputery stacjonarne, ale nie udostępnia żadnej bazy kodu Windows na komputery stacjonarne. Symbian OS ma również jądro RTOS (EKA2) począwszy od wersji 8.0b.

Niektóre systemy wbudowane korzystają z systemów operacyjnych, takich jak Palm OS , BSD i Linux , chociaż takie systemy operacyjne nie obsługują przetwarzania w czasie rzeczywistym.

Tworzenie systemów operacyjnych jako hobby

Hobbystyczny system operacyjny można sklasyfikować jako taki, którego kod nie pochodzi bezpośrednio z istniejącego systemu operacyjnego i ma niewielu użytkowników i aktywnych programistów.

W niektórych przypadkach rozwój hobby wspiera " homebrew " urządzenie komputerowe, na przykład prosty komputer jednopłytkowy zasilany przez mikroprocesor 6502 . Lub rozwój może dotyczyć architektury, która jest już w powszechnym użyciu. Rozwój systemu operacyjnego może pochodzić z zupełnie nowych koncepcji lub może rozpocząć się od modelowania istniejącego systemu operacyjnego. W obu przypadkach hobbysta jest własnym programistą lub może wchodzić w interakcje z małą, a czasem nieustrukturyzowaną grupą osób, które mają podobne zainteresowania.

Przykładami hobbystycznego systemu operacyjnego są Syllable i TempleOS .

Różnorodność systemów operacyjnych i przenośność

Oprogramowanie aplikacyjne jest zazwyczaj napisane do użytku w określonym systemie operacyjnym, a czasem nawet na określonym sprzęcie. Podczas przenoszenia aplikacji, aby działała w innym systemie operacyjnym, funkcjonalność wymagana przez tę aplikację może być zaimplementowana w inny sposób przez ten system operacyjny (nazwy funkcji, znaczenie argumentów itp.), wymagając dostosowania, zmiany lub innej konserwacji aplikacji .

Unix był pierwszym systemem operacyjnym nie napisanym w języku asemblerowym, co czyni go bardzo przenośnym do systemów innych niż jego natywny PDP-11 .

Tych kosztów związanych z obsługą różnorodności systemów operacyjnych można uniknąć, pisząc aplikacje na platformach programowych, takich jak Java lub Qt . Te abstrakcje poniosły już koszty adaptacji do określonych systemów operacyjnych i ich bibliotek systemowych .

Innym podejściem jest przyjęcie standardów przez dostawców systemów operacyjnych. Na przykład warstwy abstrakcji POSIX i OS zapewniają cechy wspólne, które zmniejszają koszty przenoszenia.

Udział w rynku

Zobacz też

Uwagi

Bibliografia

Dalsza lektura

Zewnętrzne linki