System operacyjny - Operating system

Z Wikipedii, wolnej encyklopedii

System operacyjny ( OS ) to oprogramowanie systemowe, które zarządza sprzętem komputerowym , zasobami oprogramowania i zapewnia wspólne 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 dla komputerów stacjonarnych jest Microsoft Windows, którego udział w rynku wynosi około 76,45%. Na drugim miejscu jest macOS firmy Apple Inc. (17,72%), a na trzecim razem odmiany Linuksa (1,73%). W sektorze telefonii komórkowej (w tym smartfonów i tabletów ) udział Androida w 2020 r. Wyniósł nawet 72%. Według danych z trzeciego kwartału 2016 r., Udział Androida w smartfonach jest dominujący i wynosi 87,5% przy tempie wzrostu 10,3% rocznie, za nim uplasował się iOS firmy Apple z 12,1 proc., z rocznym spadkiem udziału w rynku o 5,2 proc., podczas gdy inne systemy operacyjne stanowią zaledwie 0,3 proc. Dystrybucje Linuksa dominują w sektorach serwerów i superkomputerów. Dla wielu aplikacji istnieją inne wyspecjalizowane klasy systemów operacyjnych (systemy operacyjne specjalnego przeznaczenia), takie jak systemy wbudowane i systemy czasu rzeczywistego. Istnieją również systemy operacyjne skoncentrowane na bezpieczeństwie . Niektóre systemy operacyjne mają niskie wymagania systemowe (np. Lekka dystrybucja Linuksa ). Inni mogą mieć wyższe wymagania systemowe.

Niektóre systemy operacyjne wymagają instalacji lub mogą być preinstalowane na zakupionych komputerach (instalacja OEM ), podczas gdy inne mogą działać bezpośrednio z nośnika (np. Live cd ) lub pamięci flash (np. Pendrive).

Rodzaje systemów operacyjnych

Jednozadaniowe i wielozadaniowe

Jeden system wielozadaniowych można uruchomić tylko jeden program w danym momencie, podczas gdy wielozadaniowy system operacyjny pozwala na więcej niż jednym programem, które zostaną uruchomione w współbieżności . Osiąga się to poprzez współdzielenie 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 odcinkach czasu przez podsystem planowania zadań systemu operacyjnego. Wielozadaniowość można scharakteryzować jako wywłaszczeniowe i kooperacyjne. W wielozadaniowości z wywłaszczaniem system operacyjny dzieli czas procesora i przydziela miejsce na każdy z programów. Systemy operacyjne podobne do uniksowych, takie jak Solaris i Linux - a także inne niż uniksowe, takie jak AmigaOS - obsługują wielozadaniowość z wywłaszczaniem. Wielozadaniowość kooperatywną osiąga się, polegając na tym, że każdy proces zapewnia czas innym procesom w określony sposób. 16-bitowe wersje systemu Microsoft Windows wykorzystywały wielozadaniowość w trybie współpracy; 32-bitowe wersje Windows NT i Win9x wykorzystywały wielozadaniowość z wywłaszczaniem.

Dla jednego i wielu użytkowników

Systemy operacyjne dla jednego użytkownika nie mają możliwości rozróżniania użytkowników, ale mogą zezwalać na jednoczesne działanie wielu programów. System operacyjny dla wielu użytkowników rozszerza podstawową koncepcję wielozadaniowości o funkcje identyfikujące procesy i zasoby, takie jak miejsce na dysku, należące do wielu użytkowników, a system umożliwia wielu użytkownikom jednoczesną interakcję z systemem. 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).

Na podstawie szablonu

W kontekście przetwarzania rozproszonego i przetwarzania w chmurze systemu operacyjnego tworzenie szablonów odnosi się do tworzenia pojedynczego obrazu 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 używana 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 użytku 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 kilka przykładów wbudowanych systemów operacyjnych.

Czas rzeczywisty

System operacyjny czasu rzeczywistego to system operacyjny, który gwarantuje przetwarzanie zdarzeń lub danych w określonym momencie. System operacyjny czasu rzeczywistego może być jedno- lub wielozadaniowy, ale w przypadku wielozadaniowości wykorzystuje wyspecjalizowane algorytmy planowania, dzięki czemu uzyskuje się deterministyczny charakter zachowania. Taki system sterowany zdarzeniami przełącza się między zadaniami na podstawie ich priorytetów lub zdarzeń zewnętrznych, podczas gdy systemy operacyjne z podziałem czasu przełączają zadania na podstawie przerwania zegara .

Biblioteka

Biblioteczny system operacyjny to taki, w którym usługi świadczone przez typowy system operacyjny, takie jak sieć, są dostarczane w postaci bibliotek i komponowane z aplikacją i kodem konfiguracyjnym w celu zbudowania unikernelu : wyspecjalizowanej, pojedynczej przestrzeni adresowej , obrazu maszyny które można wdrożyć w chmurze lub środowiskach osadzonych.

Historia

Wczesne komputery były budowane do wykonywania serii pojedynczych zadań, takich jak kalkulator. Podstawowe funkcje systemu operacyjnego zostały opracowane w latach pięćdziesiątych XX wieku, takie jak funkcje monitora rezydentnego, które mogły automatycznie uruchamiać kolejno różne programy w celu przyspieszenia przetwarzania. Systemy operacyjne nie istniały w swojej nowoczesnej i bardziej złożonej formie 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-tych, stworzono dla nich systemy operacyjne podobne koncepcyjnie do tych używanych na większych komputerach.

W latach czterdziestych najwcześniejsze elektroniczne systemy cyfrowe nie miały żadnych systemów operacyjnych. Układy elektroniczne w tym czasie były programowane na rzędach przełączników mechanicznych lub za pomocą przewodów połączeniowych na tablicach wtykowych . 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 z danych na perforowanych kartach papierowych. 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 perforowanej 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 korzystał wyłącznie z komputera przez określony czas i przychodził o wyznaczonej godzinie ze swoim programem i danymi na perforowanych kartach papierowych lub taśmie dziurkowanej . Program zostałby załadowany do maszyny, a maszyna byłaby ustawiona do pracy do zakończenia lub awarii programu . Programy można generalnie debugować za pomocą panelu przedniego przy użyciu przełączników dwustabilnych i lampek na panelu. Mówi się, że Alan Turing był tego mistrzem we wczesnej maszynie Manchester Mark 1 , a prymitywną koncepcję systemu operacyjnego wyprowadzał już z zasad uniwersalnej maszyny Turinga .

Późniejsze maszyny były dostarczane z bibliotekami programów, które były połączone z programem użytkownika w celu wspomagania operacji, 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 pojedyncze zadanie na raz. Na Uniwersytecie Cambridge w Anglii kolejka do pracy była kiedyś linią do prania (sznurkiem do bielizny), z której wieszano taśmy z różnokolorowymi klamerkami do bielizny, aby wskazać priorytet pracy.

Udoskonaleniem był Nadzorca Atlas . Wprowadzony wraz z Atlasem Manchesteru w 1962 roku, przez wielu uważany jest za pierwszy rozpoznawalny nowoczesny system operacyjny. Brinch Hansen opisał to jako „najbardziej znaczący przełom w historii systemów operacyjnych”.

Komputery mainframe

W latach pięćdziesiątych XX wieku wprowadzono wiele głównych funkcji w dziedzinie systemów operacyjnych na komputerach typu mainframe , w tym przetwarzanie wsadowe , przerywanie wejścia / wyjścia , buforowanie , wielozadaniowość , buforowanie , biblioteki uruchomieniowe , ładowanie łączy i programy do sortowania rekordów w plikach. Te funkcje zostały uwzględnione lub nie zostały uwzględnione w oprogramowaniu aplikacyjnym według uznania 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ż szybko został wyparty przez IBSYS / IBJOB w modelach 709, 7090 i 7094.

W latach 60-tych IBM OS / 360 wprowadził koncepcję pojedynczego systemu operacyjnego obejmującego całą linię produktów, co było kluczowe dla sukcesu maszyn System / 360. Obecne systemy operacyjne IBM dla komputerów mainframe są odległymi potomkami tego oryginalnego systemu, a nowoczesne maszyny są wstecznie kompatybilne z aplikacjami napisanymi dla OS / 360.

OS / 360 był również pionierem koncepcji, zgodnie z którą system operacyjny śledzi wszystkie używane zasoby systemowe, w tym alokację miejsca 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 zakończony z jakiegokolwiek powodu, wszystkie te zasoby są ponownie zajęte przez system operacyjny.

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

Control Data Corporation opracowała system operacyjny SCOPE w latach sześćdziesiątych XX wieku do przetwarzania wsadowego . We współpracy z University of Minnesota, Kronos, a później systemy operacyjne NOS , zostały opracowane w latach 70. XX wieku, które umożliwiały jednoczesne używanie wsadowe i współdzielenie czasu. Podobnie jak wiele komercyjnych systemów współdzielenia czasu, jego interfejs był rozszerzeniem systemu operacyjnego Dartmouth BASIC , jednym z pionierskich wysiłków w zakresie współdzielenia czasu i języków programowania. W późnych latach siedemdziesiątych 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. Plato 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ą przeznaczoną wyłącznie do obsługi języków wysokiego poziomu bez języka maszynowego ani asemblera; rzeczywiście, MCP był pierwszym systemem operacyjnym, który został napisany wyłącznie w języku wysokiego poziomu ( ESPOL , dialekt ALGOL ). MCP wprowadził również wiele innych przełomowych innowacji, takich jak pierwsze komercyjne wdrożenie pamięci wirtualnej . Podczas opracowywania AS / 400 IBM podjął współpracę z Burroughs, aby udzielić licencji MCP na działanie na sprzęcie AS / 400. Ta propozycja została odrzucona przez zarząd Burroughs w celu ochrony istniejącej produkcji sprzętu. MCP jest nadal używany w linii komputerów ClearPath / MCP firmy Unisys .

UNIVAC , pierwszy komercyjny producent komputerów, wyprodukował serię systemów operacyjnych EXEC. Podobnie jak wszystkie wczesne systemy z ramą główną, ten system wsadowy zarządzał bębnami magnetycznymi, dyskami, czytnikami kart i drukarkami liniowymi. W latach siedemdziesiątych UNIVAC wyprodukował system Real-Time Basic (RTB) do obsługi współużytkowania czasu na dużą skalę, również wzorowany na systemie Dartmouth BC.

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

Firma Digital Equipment Corporation opracowała wiele systemów operacyjnych dla 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 był systemem operacyjnym czasu rzeczywistego dla jednego użytkownika dla minikomputera klasy PDP-11 , a RSX-11 był odpowiadającym mu systemem operacyjnym dla wielu użytkowników.

Od późnych lat 60. do późnych 70. ewoluowało kilka możliwości sprzętowych, które umożliwiały podobnemu lub przenoszonemu oprogramowaniu działanie w więcej niż jednym systemie. Wczesne systemy wykorzystywały mikroprogramowanie do implementacji funkcji w swoich systemach, aby umożliwić różnym bazowym architekturom komputerowym wydawanie się, że są takie same jak inne w serii. W rzeczywistości większość 360s po 360/40 (z wyjątkiem 360/165 i 360/168) to implementacje mikroprogramowane.

Ogromne inwestycje w oprogramowanie dla tych systemów dokonane od lat sześćdziesiątych XX wieku spowodowały, że większość oryginalnych producentów komputerów kontynuowała opracowywanie kompatybilnych systemów operacyjnych wraz ze sprzętem. Godne uwagi obsługiwane systemy operacyjne mainframe obejmują:

Mikrokomputery

PC DOS był wczesnym systemem operacyjnym dla komputerów osobistych z interfejsem wiersza poleceń.
Mac OS firmy Apple Computer stał się pierwszym szeroko rozpowszechnionym systemem operacyjnym z graficznym interfejsem użytkownika . Wiele z jego funkcji, takich jak okna i ikony, stało się później powszechnymi w GUI.

Pierwsze mikrokomputery nie miały możliwości lub nie były potrzebne dla skomplikowanych systemów operacyjnych, które zostały opracowane dla komputerów typu mainframe i mini; 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-tych 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 procesora Intel 80386 w październiku 1985 r., Z architekturą 32-bitową i funkcjami stronicowania , zapewniło komputerom osobistym możliwość uruchamiania wielozadaniowych systemów operacyjnych, takich jak wcześniejsze minikomputery i komputery typu mainframe . Microsoft zareagował na ten postęp, zatrudniając Dave'a Cutlera , który opracował system operacyjny VMS dla Digital Equipment Corporation . Miałby 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 użyty 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, wolnego oprogramowania zastępującego zastrzeżony system operacyjny UNIX . Podczas gdy projekt odniósł duży sukces w powielaniu funkcjonalności różnych części systemu UNIX, rozwój jądra GNU Hurd okazał się nieproduktywny. W 1991 roku fiński student informatyki Linus Torvalds , we współpracy z wolontariuszami współpracującymi za pośrednictwem Internetu, wydał pierwszą wersję jądra Linuksa . Wkrótce został połączony z komponentami przestrzeni użytkownika GNU i oprogramowaniem systemowym w celu utworzenia kompletnego systemu operacyjnego. 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 Stallman i Fundacja Wolnego Oprogramowania są przeciwni, preferując nazwę GNU / Linux. Berkeley Software Distribution, znana jako BSD , jest pochodną UNIX-a rozpowszechnianą przez Uniwersytet Kalifornijski w Berkeley, począwszy od lat siedemdziesiątych XX wieku. Dowolnie dystrybuowany i przenoszony na wiele minikomputerów, w końcu zyskał również zwolenników do użytku na komputerach PC, głównie jako FreeBSD , NetBSD i OpenBSD .

Przykłady

Systemy operacyjne Unix i Unix-like

Ewolucja systemów uniksowych

Unix został pierwotnie napisany w języku asemblera . 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ę wzajemnie powiązanych systemów operacyjnych, które miały wpływ na każdy nowoczesny system operacyjny (patrz Historia ).

Rodzina systemów uniksopodobnych to zróżnicowana grupa systemów operacyjnych, z kilkoma głównymi podkategoriami, w tym System V , BSD i Linux . Nazwa „ UNIX ” jest znakiem towarowym firmy The Open Group, która udziela jej licencji na używanie z dowolnym systemem operacyjnym, w przypadku którego wykazano zgodność z ich definicjami. Określenie „podobny do systemu UNIX” jest powszechnie używane w odniesieniu do dużego zestawu systemów operacyjnych, które przypominają oryginalny UNIX.

Systemy typu uniksowego 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żynieryjnych. Wolne warianty UNIX, takie jak Linux i BSD , są popularne w tych obszarach.

Cztery systemy operacyjne są certyfikowane przez The Open Group (właściciela znaku towarowego Unix) jako Unix. HP -UX i IBM AIX są potomkami oryginalnego Systemu V Unix i zostały zaprojektowane do działania tylko na sprzęcie ich odpowiednich dostawców. 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 (nieunixowego) systemu Mac OS firmy Apple, to hybrydowy wariant BSD oparty na jądrze pochodzący z NeXTSTEP , Mach i FreeBSD .

Poszukiwano interoperacyjności Unix poprzez ustanowienie standardu POSIX . Standard POSIX może być zastosowany w każdym systemie operacyjnym, 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 WWW , chociaż mogą również działać jako OS komputera osobistego. Internet w dużej mierze zawdzięcza swoje istnienie BSD, ponieważ wiele protokołów obecnie powszechnie używanych przez komputery do łączenia, wysyłania i odbierania danych przez sieć zostało szeroko zaimplementowanych i udoskonalonych w BSD. Sieć World Wide Web została również po raz pierwszy zademonstrowana na wielu komputerach z systemem operacyjnym opartym na BSD o nazwie NeXTSTEP .

W 1974 roku University of California, Berkeley zainstalował swój pierwszy system Unix. Z biegiem czasu studenci i pracownicy wydziału informatyki zaczęli dodawać nowe programy, takie jak edytory tekstu. Kiedy Berkeley otrzymał nowe komputery VAX w 1978 roku z zainstalowanym Uniksem, studenci szkoły zmodyfikowali go jeszcze bardziej, aby wykorzystać możliwości sprzętowe komputera. Zainteresowaniem zainteresowała się Agencja Zaawansowanych Projektów Badawczych Departamentu Obrony USA , która zdecydowała się sfinansować projekt. Wiele szkół, korporacji i organizacji rządowych zwróciło uwagę i zaczęło używać wersji Uniksa 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ą zaawansowane komputery działające na odmianie BSD o nazwie NeXTSTEP . Jeden z tych komputerów został użyty przez Tima Bernersa-Lee jako pierwszy serwer WWW do stworzenia sieci WWW.

Deweloperzy, tacy jak Keith Bostic, zachęcali projekt do zastąpienia niewolnego kodu pochodzącego z Bell Labs. Jednak kiedy to zostało zrobione, AT&T pozwała. Po dwóch latach sporów prawnych projekt BSD zaowocował wieloma darmowymi pochodnymi, takimi jak NetBSD i FreeBSD (oba w 1993 r.) Oraz OpenBSD (z NetBSD w 1995 r.).

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ą oryginalnego klasycznego systemu Mac OS , który był podstawowym systemem operacyjnym Apple od 1984 r. W przeciwieństwie do swojego poprzednika, macOS jest systemem operacyjnym UNIX opartym na technologii opracowanej w NeXT w drugiej połowie lat osiemdziesiątych XX wieku i aż do Apple kupił firmę na początku 1997 r. System operacyjny został wydany po raz pierwszy w 1999 r. Jako Mac OS X Server 1.0 , a następnie w marcu 2001 r. Jako wersja kliencka ( Mac OS X 10.0 „Cheetah” ). Od tego czasu wydano sześć bardziej odrębnych wersji „klienckich” i „ serwerowych ” systemu macOS, aż do połączenia tych dwóch w systemie OS X 10.7 „Lion” .

Przed połączeniem z systemem 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 firmy Apple dla komputerów 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 10.7 Lion wszystkie aspekty serwera systemu Mac OS X Server zostały zintegrowane z wersją kliencką, a produkt został zmieniony na „OS X” (usunięto „Mac” z nazwy). Narzędzia serwera są teraz oferowane jako aplikacja.

Linux

Ubuntu , dystrybucja Linuksa na komputery stacjonarne
Linux , system operacyjny podobny do unixa, 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 , który był studentem uniwersytetu 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 otwarty model licencji, kod jądra Linuksa jest dostępny do badań i modyfikacji, co zaowocowało jego wykorzystaniem w szerokiej gamie maszyn komputerowych, od superkomputerów po inteligentne zegarki. 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 wyparł Uniksa na wielu platformach i jest używany na większości superkomputerów, w tym na topowych 385. Wiele z tych samych komputerów jest również na Green500 (ale w innej kolejności), a Linux działa na pierwszej dziesiątce. 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 Microsoft Corporation i skierowanych głównie do komputerów opartych na architekturze Intel, z szacowanym udziałem w łącznym użytkowaniu na komputerach podłączonych do sieci WWW w wysokości 88,9%. Najnowsza wersja to Windows 10 .

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

Microsoft Windows został wydany po raz pierwszy w 1985 roku jako środowisko operacyjne działające na szczycie MS-DOS , który był standardowym systemem operacyjnym dostarczanym wówczas na większości komputerów osobistych o architekturze Intela. W 1995 roku wydano Windows 95, który używał tylko MS-DOS jako bootstrap. Aby zapewnić kompatybilność wsteczną, Win9x może uruchamiać sterowniki trybu rzeczywistego MS-DOS i 16-bitowe sterowniki systemu Windows 3.x. Windows ME , wydany w 2000 roku, był ostatnią wersją z rodziny Win9x. Późniejsze wersje były oparte na jądrze Windows NT . Bieżące klienckie wersje systemu Windows działają na mikroprocesorach ARM IA-32 , x86-64 i 32-bitowych . Ponadto Itanium jest nadal obsługiwany w starszej wersji serwera 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 zainwestował znaczny kapitał w celu promowania wykorzystania systemu Windows jako systemu operacyjnego dla serwerów . Jednak użycie systemu Windows na serwerach nie jest tak powszechne jak na komputerach osobistych, ponieważ Windows konkuruje z Linuxem i BSD o udział w rynku serwerów.

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

Inny

Było wiele systemów operacyjnych, które były znaczące w ich czasach, ale już nimi nie są, na przykład AmigaOS ; OS / 2 od IBM i Microsoft; klasyczny Mac OS , nieunixowy prekursor MacOS firmy Apple; BeOS ; XTS-300 ; RISC 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 , dawniej z DEC , jest wciąż w fazie aktywnego rozwoju przez VMS Software Inc . Jeszcze inne systemy operacyjne są używane prawie wyłącznie w środowisku akademickim, do edukacji systemów operacyjnych lub do badań nad koncepcjami systemów operacyjnych. Typowym przykładem systemu spełniającego obie role jest MINIX , podczas gdy np. Osobliwość 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 dawnego Instytutu Systemów Komputerowych w latach 80. Był używany głównie do badań, nauczania i codziennej pracy w grupie Wirtha.

Inne systemy operacyjne nie zdobyły znaczącego udziału w rynku, ale wprowadziły innowacje, które wpłynęły na główne systemy operacyjne, w szczególności Plan 9 firmy Bell Labs .

składniki

Wszystkie komponenty 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ć ze sprzętu, bez względu na to, czy jest to tak proste, jak mysz lub klawiatura, czy tak złożone, jak komponent internetowy.

Jądro

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

Przy pomocy 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 optymalnego działania przez cały czas, a także 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 aplikacją a sprzętem komputerowym, tak że aplikacja może współdziałać ze sprzętem tylko poprzez przestrzeganie reguł i procedur zaprogramowanych w systemie operacyjnym. System operacyjny to także zestaw usług, które upraszczają tworzenie i wykonywanie programów użytkowych. Wykonanie programu użytkowego wiąże się z utworzeniem procesu przez jądro systemu operacyjnego, który przydziela przestrzeń pamięci i inne zasoby, ustala priorytet procesu w systemach wielozadaniowych, ładuje kod binarny programu do pamięci i inicjuje wykonanie programu aplikacyjnego, który następnie współdziała z użytkownikiem i urządzeniami sprzętowymi.

Przerwania

Przerwania mają zasadnicze znaczenie dla systemów operacyjnych, ponieważ zapewniają skuteczny sposób interakcji systemu operacyjnego z jego środowiskiem i reagowania na nie. Alternatywę - system operacyjny „obserwujący” różne źródła danych wejściowych dla zdarzeń (odpytywanie), które wymagają działania - można znaleźć w starszych systemach z bardzo małymi stosami (50 lub 60 bajtów), ale jest niezwykła w nowoczesnych systemach z dużymi stosami. Programowanie w oparciu o przerwania jest bezpośrednio obsługiwane przez większość nowoczesnych procesorów. Przerwania umożliwiają komputerowi automatyczne zapisywanie kontekstów lokalnych rejestrów i uruchamianie określonego kodu w odpowiedzi na zdarzenia. Nawet bardzo podstawowe 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 poprzednio powiązany z przerwaniem; jest to analogiczne do umieszczenia 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 komputerowego lub uruchomionego programu.

Gdy urządzenie sprzętowe wyzwala przerwanie, jądro systemu operacyjnego decyduje, jak sobie z tym poradzić, generalnie wykonując kod przetwarzający. Ilość uruchamianego kodu zależy od priorytetu przerwania (np. Osoba zwykle reaguje na alarm z czujki dymu przed odebraniem telefonu). Przetwarzanie przerwań sprzętowych to zadanie, 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 w systemie operacyjnym. 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 pozbyć się zasobów), takich jak pamięć, wyzwala przerwanie, aby zwrócić uwagę jądra.

Tryby

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

Nowoczesne mikroprocesory (CPU lub MPU) obsługują wiele trybów pracy. Procesory z tą możliwością oferują co najmniej dwa tryby: tryb użytkownika i tryb nadzorcy . Ogólnie rzecz biorąc, praca w trybie nadzorcy umożliwia nieograniczony dostęp do wszystkich zasobów maszyny, w tym do wszystkich instrukcji MPU. Praca 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 na 32-bitowym lub 32-bitowe na 64-bitowym .

Po włączeniu lub zresetowaniu system uruchamia się w trybie nadzorcy. Po załadowaniu i uruchomieniu jądra systemu operacyjnego można ustalić granicę między trybem użytkownika a trybem nadzorcy (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 komunikacja z urządzeniami, takimi jak napędy dysków i wyświetlacze wideo. Natomiast tryb użytkownika jest używany do prawie wszystkiego innego. Programy użytkowe, takie jak edytory tekstu i menedżery baz danych, działają w trybie użytkownika i mogą uzyskiwać dostęp do zasobów maszyny tylko przez przekazanie kontroli jądru, co powoduje przejście do trybu nadzorcy. Zwykle przekazanie kontroli do jądra uzyskuje się przez wykonanie instrukcji przerwania programowego , takiej jak instrukcja Motorola 68000 TRAP . Przerwanie programowe powoduje, że mikroprocesor przechodzi z trybu użytkownika do trybu nadzorcy i rozpoczyna wykonywanie kodu, który pozwala jądru przejąć kontrolę.

W trybie użytkownika programy zwykle mają dostęp do ograniczonego zestawu instrukcji mikroprocesora 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ą zwykle usuwane, umożliwiając jądru nieograniczony dostęp do wszystkich zasobów maszyny.

Termin „zasób trybu użytkownika” ogólnie odnosi się do jednego lub większej liczby 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 do trybu nadzorcy, w którym system operacyjny może poradzić sobie z nielegalną operacją, której program próbował, na przykład przez wymuszone zakończenie („zabicie”) 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ą, która jest już używana przez inny program. Ponieważ programy dzielą czas, każdy program musi mieć niezależny dostęp do pamięci.

Kooperatywne zarządzanie pamięcią, 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ą prawie nigdy już nie występuje, ponieważ programy często zawierają błędy, które mogą powodować przekroczenie przydzielonej im pamięci. Jeśli program się nie powiedzie, 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 mogą wpływać na działanie samego systemu operacyjnego. W przypadku kooperacyjnego zarządzania pamięcią do awarii systemu wystarczy jeden źle działający program.

Ochrona pamięci umożliwia jądru ograniczanie 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 we wszystkich komputerach.

Zarówno w przypadku segmentacji, jak i stronicowania, pewne rejestry trybu chronionego określają procesorowi, jaki adres pamięci powinien umożliwiać dostęp do uruchomionego programu. Próby uzyskania dostępu do innych adresów wyzwalają przerwanie, które powoduje, że procesor ponownie wchodzi w tryb nadzorcy , co powoduje , że jądro staje się odpowiedzialne. Nazywa się to naruszeniem segmentacji lub w skrócie Seg-V, a ponieważ zarówno trudno jest przypisać znaczący wynik takiej operacji, jak i ponieważ zwykle jest to oznaka nieprawidłowo działającego programu, jądro zwykle ucieka się do zakończenia programu, który go narusza. i zgłasza błąd.

Wersje systemu Windows od 3.1 do ME miały pewien poziom ochrony pamięci, ale programy mogły z łatwością obejść potrzebę jego używania. Ogólny błąd ochrony byłyby produkowane, wskazując naruszenie segmentacji doszło; jednak system i tak często się zawieszał.

Pamięć wirtualna

Wiele systemów operacyjnych potrafi „oszukać” programy, aby używały pamięci rozproszonej po dysku twardym i pamięci RAM, tak jakby była to jeden ciągły fragment pamięci, zwany pamięcią wirtualną.

Użycie adresowania pamięci wirtualnej (takiego jak stronicowanie lub segmentacja) oznacza, że ​​jądro może wybrać, z jakiej pamięci każdy program może korzystać w danym momencie, umożliwiając systemowi operacyjnemu używanie 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 jest przerywane w taki sam sposób, jak gdyby program przekroczył przydzieloną mu pamięć. (Zobacz sekcję o zarządzaniu pamięcią.) W systemie UNIX ten rodzaj przerwania nazywany jest błędem strony .

Kiedy jądro wykryje błąd strony, zwykle dostosowuje zakres pamięci wirtualnej programu, który go wyzwolił, przyznając mu dostęp do żądanej pamięci. Dzięki temu jądro ma swobodę decydowania o tym, gdzie pamięć danej aplikacji jest przechowywana, a nawet nad tym, czy została jeszcze przydzielona.

W nowoczesnych systemach operacyjnych pamięć, do której uzyskuje się rzadszy dostęp, można tymczasowo przechowywać na dysku lub innym nośniku, aby udostępnić tę przestrzeń innym programom. Nazywa się to zamianą , 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 dużo więcej pamięci RAM, niż jest w rzeczywistości.

Wielozadaniowość

Wielozadaniowość oznacza uruchamianie wielu niezależnych programów komputerowych na tym samym komputerze; sprawiają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 naraz, zwykle odbywa się to poprzez współdzielenie czasu, co oznacza, że ​​każdy program wykorzystuje część czasu komputera na wykonanie.

Jądro systemu operacyjnego zawiera program planujący , który określa, ile czasu każdy proces spędza na wykonywaniu oraz w jakiej kolejności należy przekazać kontrolę wykonania do programów. 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, tak że inny program może korzystać z CPU. To tak zwane przekazywanie kontroli między jądrem a aplikacjami nazywa się przełączaniem kontekstu .

Wczesny model, który regulował przydział czasu na programy, nazwano wielozadaniowością opartą na współpracy . W tym modelu, gdy kontrola jest przekazywana do programu 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 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 czasami wykonywania.

Filozofia wielozadaniowości z wywłaszczaniem polega na zapewnieniu, że wszystkie programy mają regularny czas na CPU. 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 współpraca wielozadaniowa jest całkowicie wystarczająca, ponieważ na komputerach domowych na ogół działa niewielka liczba dobrze przetestowanych programów. AmigaOS wyjątek, z poboru wielozadaniowość z pierwszej wersji. Windows NT był pierwszą wersją Microsoft Windows, która wymusiła wielozadaniowość z wywłaszczaniem, ale nie trafiła na rynek użytkowników domowych aż do 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 przy użyciu katalogów (lub „folderów”).

Dostęp do danych przechowywanych na dyskach jest centralną cechą wszystkich systemów operacyjnych. Komputery przechowują dane na dyskach za pomocą plików , które są uporządkowane w określony sposób, aby umożliwić szybszy dostęp, wyższą niezawodność i lepsze wykorzystanie dostępnego miejsca na dysku. Specyficzny sposób przechowywania plików na dysku nazywany jest systemem plików i umożliwia nadanie plikom nazw i atrybutów. Pozwala również na przechowywanie ich w hierarchii katalogów lub folderów ułożonych w drzewie katalogów .

Wczesne systemy operacyjne na ogół 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 struktury katalogów, których mogły używać. Ograniczenia te często odzwierciedlały ograniczenia systemów operacyjnych, dla których zostały zaprojektowane, przez co system operacyjny może bardzo utrudniać 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 o urządzeniu, do którego uzyskują dostęp. VFS umożliwia systemowi operacyjnemu zapewnienie programom dostępu 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 magazynującego , takiego jak dysk twardy , uzyskuje się za pośrednictwem sterownika urządzenia . Sterownik urządzenia rozumie konkretny 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 dysków. W systemie UNIX jest to język urządzeń blokowych .

Gdy jądro ma zainstalowany odpowiedni sterownik urządzenia, może wtedy uzyskać dostęp do zawartości dysku w formacie surowym, 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 w celu uzyskania dostępu do każdego określonego systemu plików na standardowy zestaw poleceń, których system operacyjny może używać do komunikowania się ze wszystkimi systemami plików. Programy mogą wtedy obsługiwać te systemy 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 o nich, w tym uprawnienia dostępu, rozmiar, ilość wolnego miejsca 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 i obecność różnego rodzaju atrybutów plików sprawia, że ​​implementacja jednego interfejsu dla każdego systemu plików jest trudnym zadaniem. Systemy operacyjne zwykle zalecają używanie (a więc natywnie obsługują) systemy plików zaprojektowane specjalnie dla nich; na przykład NTFS w systemie Windows i ext3 i ReiserFS w systemie Linux. Jednak w praktyce sterowniki innych firm są zwykle dostępne, aby zapewnić obsługę najczęściej używanych systemów plików w większości systemów operacyjnych ogólnego przeznaczenia (na przykład NTFS jest dostępny w Linuksie przez NTFS-3g , a ext2 / 3 i ReiserFS są dostępne. w systemie Windows za pośrednictwem oprogramowania innej firmy).

Obsługa systemów plików jest bardzo zróżnicowana we współczesnych systemach operacyjnych, chociaż istnieje kilka typowych systemów plików, dla których prawie wszystkie systemy operacyjne obsługują i obsługują sterowniki. Systemy operacyjne różnią się pod względem obsługi systemów plików i formatów dysków, na których mogą być instalowane. W systemie Windows każdy system plików ma zwykle ograniczone zastosowanie do określonych nośników; na przykład dyski CD muszą używać ISO 9660 lub UDF , a od systemu Windows Vista NTFS jest jedynym systemem plików, w 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 pozwalają na użycie 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, czy nawet zawiera 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. Zwykle stanowi to interfejs do komunikacji z urządzeniem za pośrednictwem określonej magistrali komputerowej lub podsystemu komunikacyjnego, do którego jest podłączony sprzęt, dostarczania poleceń do urządzenia i / lub odbierania danych z urządzenia, a z drugiej strony wymagane interfejsy do 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, zazwyczaj systemowi operacyjnemu lub pakietowi oprogramowania aplikacji lub programowi komputerowemu działającemu w jądrze systemu operacyjnego, przezroczystą interakcję z urządzeniem sprzętowym i zwykle zapewnia wymagana obsługa przerwań niezbędna dla wszelkich potrzeb związanych z asynchronicznymi, zależnymi od czasu, sprzętowymi interfejsami.

Głównym celem projektowania 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ż wypuszczane przez producentów, którzy 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ą potrafiły kontrolować każde urządzenie, zarówno teraz, jak iw przyszłości. Aby rozwiązać ten problem, systemy operacyjne zasadniczo dyktują, w jaki sposób należy kontrolować każdy typ urządzenia. Zadaniem sterownika urządzenia jest wtedy przetłumaczenie tych wywołań funkcji narzuconych przez system operacyjny na wywołania specyficzne dla urządzenia. Teoretycznie nowe urządzenie, które jest 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 systemu Windows wcześniejszych niż Vista i wersji Linuksa starszych niż 2.6 wszystkie wykonania sterowników były kooperatywne, co oznacza, że ​​jeśli sterownik wszedłby w nieskończoną pętlę, zawiesiłby system. Nowsze wersje tych systemów operacyjnych obejmują wywłaszczanie jądra, w którym jądro przerywa sterownik, aby przekazać mu zadania, a następnie oddziela się od procesu, dopóki nie otrzyma odpowiedzi od sterownika urządzenia lub nie powie więcej zadań do wykonania.

Networking

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, przy użyciu 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, które byłyby możliwe, gdyby zasoby te były podłączone bezpośrednio do komputera lokalnego. Obejmuje to wszystko, od prostej komunikacji po korzystanie z sieciowych systemów plików, a nawet udostępnianie sprzętu graficznego lub 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, zwanemu klientem, łączenie się za pośrednictwem sieci z innym komputerem, zwanym serwerem. Serwery oferują (lub hostują) różne usługi innym komputerom i użytkownikom w sieci. Usługi te są zwykle świadczone przez porty lub numerowane punkty dostępu 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 specyficznych dla dostawcy lub otwartych protokołów sieciowych, na przykład SNA w systemach IBM , DECnet w systemach firmy Digital Equipment Corporation i specyficzne protokoły Microsoft ( SMB ) w systemie Windows. Obsługiwane mogą być również 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 lokalnych aplikacji na sprzęt dźwiękowy zdalnego systemu.

Bezpieczeństwo

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

System operacyjny musi być zdolny do rozróżnienia między żądaniami, które powinny być przetwarzane, a innymi, które nie powinny być przetwarzane. Podczas gdy niektóre systemy mogą po prostu rozróżniać „uprzywilejowane” i „nieuprzywilejowane”, systemy zwykle mają formę tożsamości żądającego , taką jak nazwa użytkownika. Aby ustalić tożsamość, może wystąpić proces uwierzytelniania . Często nazwa użytkownika musi być cytowana, 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żna uzyskać bez żadnego uwierzytelniania (np. Odczytywanie plików z udziału sieciowego). Pojęcie tożsamości osoby składającej wniosek obejmuje również autoryzację ; określone 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 zezwalającego lub nie zezwalającego na bezpieczeństwo, system o wysokim poziomie bezpieczeństwa oferuje również opcje audytu. Umożliwiłoby to śledzenie wniosków o dostęp do zasobów (np. „Kto czytał ten plik?”). Bezpieczeństwo wewnętrzne lub ochrona przed już działającym programem jest możliwa tylko wtedy, gdy wszystkie potencjalnie szkodliwe żądania muszą być realizowane poprzez przerwania jądra systemu operacyjnego. Jeśli programy mają bezpośredni dostęp do sprzętu i zasobów, nie można ich zabezpieczyć.

Zabezpieczenia zewnętrzne obejmują żądanie spoza komputera, takie jak logowanie na podłączonej konsoli lub jakieś 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 wykonywane bezpośrednio. Bezpieczeństwo systemów operacyjnych od dawna budzi obawy ze względu na bardzo wrażliwe dane przechowywane na komputerach, zarówno o charakterze komercyjnym, jak i wojskowym. Departament Obrony Rządu Stanów Zjednoczonych (DoD) stworzył kryteria oceny zaufanych systemów komputerowych (TCSEC), które są standardem określającym podstawowe wymagania dotyczące oceny skuteczności zabezpieczeń. Stało się to niezwykle ważne dla twórców systemów operacyjnych, ponieważ TCSEC był używany do oceny, klasyfikacji i wyboru zaufanych systemów operacyjnych, które były brane pod uwagę przy przetwarzaniu, przechowywaniu i odzyskiwaniu wrażliwych 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 mieć wpływ na bezpieczeństwo. Na pierwszej linii bezpieczeństwa znajdują się urządzenia sprzętowe zwane zaporami ogniowymi lub systemami wykrywania / zapobiegania włamaniom. Na poziomie systemu operacyjnego dostępnych jest wiele zapór programowych, a także systemy 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ć tak, aby zezwalała lub blokowała ruch sieciowy do lub z usługi lub aplikacji uruchomionej w systemie operacyjnym. Dlatego można zainstalować i uruchomić niezabezpieczoną usługę, taką jak Telnet lub FTP, i nie trzeba być zagrożonym naruszeniem bezpieczeństwa, ponieważ zapora sieciowa odmówiłaby całego ruchu próbującego połączyć się z usługą na tym porcie.

Alternatywną strategią i jedyną strategią piaskownicy dostępną w systemach, które nie spełniają wymagań wirtualizacji Popek i Goldberg , jest sytuacja, w której system operacyjny nie uruchamia programów użytkownika jako kodu natywnego, ale zamiast tego albo emuluje procesor, albo zapewnia hosta dla p system oparty na kodzie , taki jak Java.

Bezpieczeństwo wewnętrzne jest szczególnie istotne w przypadku systemów wielu użytkowników; pozwala każdemu użytkownikowi systemu na posiadanie prywatnych plików, których inni użytkownicy nie mogą modyfikować ani odczytywać. Bezpieczeństwo wewnętrzne jest również istotne, jeśli audyt ma być jakikolwiek przydatny, ponieważ program może potencjalnie obejść system operacyjny, w tym ominąć audyt.

Interfejs użytkownika

Zrzut ekranu wiersza poleceń Bash . Każde polecenie jest wpisywane po „znaku zachęty”, 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 osobę fizyczną, wymaga interfejsu użytkownika . Interfejs użytkownika jest zwykle nazywany powłoką i jest niezbędny, jeśli ma być obsługiwana interakcja międzyludzka. Interfejs użytkownika wyświetla strukturę katalogów i żąda usług z systemu operacyjnego, które będą pobierać dane z urządzeń wejściowych , takich jak klawiatura , mysz lub czytnik kart kredytowych , i żądają 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 . Dwie najczęstsze formy interfejsu użytkownika to w przeszłości interfejs wiersza poleceń , w którym polecenia komputera 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. Do nawigacji po komputerze używana jest mysz.

Większość współczesnych 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 go do jądra systemu operacyjnego może pozwolić GUI na szybszą reakcję 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, które zostały zbudowane w ten sposób. Linux i macOS są również zbudowane w ten sposób. Nowoczesne wydania systemu Microsoft Windows, takie jak Windows Vista, implementują podsystem graficzny, który znajduje się głównie w przestrzeni użytkownika; jednakże procedury rysowania grafiki w wersjach pomiędzy Windows NT 4.0 a Windows Server 2003 istnieją głównie w przestrzeni jądra. Windows 9x miał bardzo niewielkie rozróżnienie między interfejsem a jądrem.

Wiele komputerowych systemów operacyjnych umożliwia użytkownikowi zainstalowanie lub utworzenie dowolnego interfejsu użytkownika. 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 szereg zamienników powłoki systemu Windows, które oferują alternatywy dla dołączonej powłoki systemu Windows , ale samej powłoki nie można oddzielić od systemu Windows.

Z biegiem czasu istniało wiele GUI 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 dużej fragmentacji, chociaż próby standaryzacji COSE i CDE w latach 90. 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 zestawami narzędzi i środowiskami graficznymi opartymi na wolnym oprogramowaniu Motif był dominującym połączeniem zestawu narzędzi / pulpitu (i był podstawą, na której opracowano CDE).

Graficzne interfejsy użytkownika ewoluują w czasie. 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 graficzny interfejs użytkownika systemu Mac OS zmienił się dramatycznie wraz z wprowadzeniem systemu Mac OS X w 1999 r.

Systemy operacyjne czasu rzeczywistego

System operacyjny czasu rzeczywistego (RTOS) to system operacyjny przeznaczony do 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 obliczeniowe 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 udostępnia podobne interfejsy API do systemu Windows na komputery stacjonarne, ale nie udostępnia żadnego kodu bazowego systemu Windows na komputer stacjonarny. Symbian OS ma również jądro RTOS (EKA2) począwszy od wersji 8.0b.

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

Rozwój systemu operacyjnego jako hobby

System operacyjny hobbystyczny 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 hobby związane z rozwojem polega na wspieraniu urządzenia komputerowego „ homebrew ”, na przykład prostego komputera jednopłytkowego zasilanego mikroprocesorem 6502 . Lub programowanie może dotyczyć architektury, która jest już w powszechnym użyciu. Rozwój systemu operacyjnego może wynikać z całkowicie nowych koncepcji lub rozpocząć się od modelowania istniejącego systemu operacyjnego. W obu przypadkach hobbysta jest swoim własnym twórcą lub może wchodzić w interakcje z małą i czasami nieustrukturyzowaną grupą osób, które mają podobne zainteresowania.

Przykłady obejmują system operacyjny hobby sylaby i TempleOS .

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

Oprogramowanie aplikacyjne jest generalnie napisane do użytku w określonym systemie operacyjnym, a czasem nawet dla określonego sprzętu. Podczas przenoszenia aplikacji do działania w innym systemie operacyjnym funkcjonalność wymagana przez tę aplikację może być implementowana w różny sposób przez ten system operacyjny (nazwy funkcji, znaczenie argumentów itp.), Co wymaga dostosowania, zmiany lub innego utrzymania aplikacji .

Unix był pierwszym systemem operacyjnym, który nie został napisany w języku asemblera, co czyni go bardzo przenośnym na systemy inne niż jego natywny PDP-11 .

Tego kosztu związanego z obsługą różnorodności systemów operacyjnych można uniknąć, zamiast tego pisząc aplikacje na platformach oprogramowania, takich jak Java lub Qt . Te abstrakcje już poniosły koszty dostosowania do określonych systemów operacyjnych i ich bibliotek systemowych .

Inne podejście polega na przyjęciu 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ż

Bibliografia

Dalsza lektura

Linki zewnętrzne