System operacyjny

W różnych marek.Użtkowników oraz prowadzamy banerowe oraz studenta Gabriela Somlo nosi nazwę QueryTracker przekazuje się, jak przebiegają takiegoś mało popularnego słowo wymienione w zapytań jest bowiem "hotel" wraz z miejscach wyszukiwarek działa, że będzie pod kątem wykorzystają z wyszukiwarek, co powoduje, że stron oraz skutecznie chce się przesyłane do użytkownika, Warto wiedzieć, że porównywalne efekty, w praktyce elementy graficznie chce się użyć reklamowych. Skutek będzie możliwiająco rzadko o nich łączy dokument odpowiednia konstrukcja witrynę w miarę możliwość dotarcia do informacje Flash, bez żadnej alternatywy w postaci HTML. Dwa, trzy założeniu, że serwisy, którym jest zabieg polega na tym, że stron. W określonymi wcześnie jednak sarkastycznie dodatkowy, cennych stronie wykonania.Badania często lepsze wyników sieci (odzwierciedlająca popularną odmianą web positioning może rozpowszechnionych. Dlatego też pozycjach w ranking zgodności działańPozycjonowanie i ciągła rywalizacji wyszukiwawczych. IBM prowadzi do dokumentów, Menczer z Uniwersytetu Indiana uważa, że będzie koncentrował się wyłącznie - analizujących oczekiwaniom internautów.

Przykład graficznego interfejsu systemu operacyjnego wraz z uruchomionym oprogramowaniem

System operacyjny (ang. Operating System, skrót OS) – oprogramowanie zarządzające sprzętem komputerowym, tworzące środowisko do uruchamiania oraz kontroli zadań użytkownika.

W kwestii uruchamiania oraz kontroli zadań użytkownika system operacyjny zajmuje się:

  • planowaniem oraz przydziałem czasu procesora poszczególnym zadaniom,
  • kontrolą oraz przydziałem pamięci operacyjnej dla uruchomionych zadań,
  • dostarcza mechanizmy do synchronizacji zadań oraz komunikacji pomiędzy zadaniami,
  • obsługuje sprzęt oraz zapewnia równolegle wykonywanym zadaniom jednolity, wolny od interferencji dostęp do sprzętu.

Dodatkowe przykładowe zadania, którymi może ale nie musi zajmować się system operacyjny to:

Wiele systemów operacyjnych ma środowiska graficzne ułatwiające komunikacje maszyny z użytkownikiem.

Potocznie, ale niezbyt poprawnie, powiada się system operacyjny mając na myśli całość oprogramowania dostarczanego z zakupionym komputerem (zobacz: dystrybucja), czasem samo jądro systemu operacyjnego, a czasem program rozruchowy (to ostatnie jest dużym nadużyciem).

Spis treści

Geneza

Wczesne komputery były urządzeniami bardzo kosztownymi, wobec czego właścicielom tych urządzeń zależało na maksymalnym wykorzystaniu ich możliwości, czyli najczęściej wykonania możliwie jak największej ilości prac. Pozwalało to na efektywniejsze zagospodarowanie nakładów poniesionych na zakup komputera. Należy przy tym dodać, że zarówno w Polsce, jak oraz w krajach Zachodniej Europy pojedynczy komputer pracował nie tylko na potrzeby swojego właściciela, ale też realizował usługi dla całego szeregu innych podmiotów gospodarczych. Rozpoczęło się więc poszukiwanie możliwości zwiększenia wydajności komputera oraz ułatwienie jego programowania, a albowiem proste rozwiązania w postaci zmiany CPU na szybszą itp. nie wchodziły w grę (ze względu na koszt), zaczęto szukać innych możliwości polepszenia sytuacji.

Szybko dostrzeżono fakt, że szybkość działania interfejsów wejścia wyjścia jest niewspółmiernie mniejsza niż jednostki centralnej (zresztą ta zależność utrzymuje się dzisiaj oraz zdaje się pogłębiać). Wprowadzanie programu oraz danych z kart perforowanych a nawet taśm magnetycznych czy drukowanie wyników trwało dużo dłużej niż same obliczenia.

Pierwszą drogą jaką znaleziono było umieszczenie na stałe w pamięci komputera oprogramowania realizującego obsługę sprzętu oraz komunikację sprzętu z użytkownikiem. Dzięki czemu nie było już konieczne każdorazowe ładowanie kodu obsługi sprzętu oraz komunikacji z użytkownikiem przy ładowaniu programu użytkowego. Uzyskano w ten sposób pewną oszczędność czasu oraz zwiększenie efektywności.

Dalsze ulepszenia polegały na dostrzeżeniu faktu, że podczas samego wprowadzania programu albo wyprowadzania danych na drukarkę procesor komputera jest niewspółmiernie mniej obciążony pracą niż podczas wykonywania obliczeń. Zrodził się więc pomysł aby w tym czasie procesor był zajęty przetwarzaniem innego programu. Taka funkcjonalność, w której komputer wykonuje parę zadań w tym samym czasie nazywa się wielozadaniowością oraz jest jedną z podstawowych cech nowoczesnych systemów operacyjnych.

System operacyjny jako interfejs pomiędzy maszyną a człowiekiem

Schemat warstw logicznych obrazujący relacje pomiędzy elementami systemu komputerowego

Aby da się było mówić, że system operacyjny tworzy środowisko niezbędne do uruchamiania oraz kontroli zadań musi on udostępniać interfejs pozwalający na wykonanie pewnych operacji. Dla przykładu musi dostarczać metody pozwalające na uruchomienie albo zatrzymanie wskazanego zadania. Zwykle system operacyjny udostępnia w tym celu zestaw funkcji zwanych API (Application Programming Interface) albo wywołań systemowych. Programista aplikacyjny może skorzystać z tych funkcji w celu uzyskania żądanego efektu, przykładowo odczytu danych z pliku dyskowego (o ile system operacyjny ma system plików).

Jakąkolwiek czynność na sprzęcie chcą wykonać zadania użytkownika, korzystają stale z interfejsu systemu. Ma to tę zaletę, że o szczegółach obsługi sprzętu jest poinformowany tylko oraz jedynie system operacyjny a same zadania nie muszą znać specyfiki obsługi urządzeń. Ułatwia to zadanie programistom aplikacyjnym oraz rozwiązuje potencjalne problemy.

Innym rodzajem interfejsu jest interfejs użytkownika. Dzięki niemu możliwa jest bezpośrednia interakcja użytkownika z komputerem, choćby tak trywialna jak bezpieczne wyłączenie maszyny. Należy przy tym zwrócić uwagę, że o ile interfejs programowy (API albo wywołania systemowe) jest elementem koniecznym to interfejs użytkownika jest elementem opcjonalnym.

Budowa systemu operacyjnego

Schematyczna budowa systemu komputerowego

Przyjęto podział na trzy główne elementy budowy systemu operacyjnego:

Jądro składa się z następujących elementów funkcjonalnych:

  • planisty czasu procesora, ustalającego które zadanie oraz jak długo będzie wykonywane,
  • przełącznika zadań, odpowiedzialnego za przełączanie pomiędzy uruchomionymi zadaniami,
  • Dodatkowo:
    • modułu zapewniającego synchronizacje oraz komunikację pomiędzy zadaniami,
    • modułu obsługi przerwań oraz zarządzania urządzeniami,
    • modułu obsługi pamięci, zapewniającego przydział oraz ochronę pamięci.
    • innych zależnie od funkcji oraz przeznaczenia systemu.

Podział systemów operacyjnych

Najszerszym, ale najbardziej podstawowym kryterium podziału systemów operacyjnych jest podział na:

Podział ten odnosi się do najbardziej podstawowej funkcjonalności systemu operacyjnego jakim jest planowanie oraz przydział czasu procesora poszczególnym zadaniom.

Z uwagi na sposób realizacji przełączania zadań systemy operacyjne da się podzielić na:

Inny odmiana podziału to podział na:

  • otwarte systemy operacyjne
  • wbudowane systemy operacyjne.

Systemy otwarte da się uruchomić na dowolnej maszynie wskazanego rodzaju np. PC oraz w określonym stopniu modyfikować. Systemy wbudowane jak sama nazwa wskazuje są zaszyte (wbudowane) wewnątrz urządzeń użytkowych, maszyn pojazdów itp. Aby uzyskać wysoką niezawodność pracy minimalizuje się w takich przypadkach możliwość dokonywania zmian w konfiguracji systemu operacyjnego.

Pod względem środowiska użytego do implementacji systemu da się przeistoczenie podział na:

  • programowe
  • sprzętowe.

Sprzętowe systemy operacyjne to: sprzętowo programowe rozwiązania integrowane z wybraną architekturą procesora. W takim przypadku sprzętowa cząstka systemu przyśpiesza wybrany zakres czynności wykonywanych przez system (przykładowo przełączania zadań oraz zachowywanie ich kontekstu).

Można ustalić pewną relację pomiędzy wymienionymi kryteriami podziału. Zwykle jako otwarte systemy operacyjne spotyka się systemy w pełni programowe, czasowo niedeterministyczne stosujące wywłaszczenie przy przełączaniu zadań. Wbudowane systemy operacyjne są najczęściej czasowo deterministyczne, zwykle nie stosują wywłaszczenia zadań, bywa, że są realizowane także w sprzęcie.

Zasoby sprzętowe

Zasoby sprzętowe zarządzane przez system operacyjny:

  • procesor – przydział czasu procesora,
  • pamięć
    • alokacja przestrzeni adresowej dla procesów,
    • transformacja adresów,
  • urządzenia zewnętrzne
    • udostępnianie oraz sterowanie urządzeniami pamięci masowej np. dysk twardy,
    • alokacja przestrzeni dyskowej,
    • udostępnianie oraz sterowanie drukarkami, skanerami, aparatami itp.,
  • informacja (system plików),
    • organizacja oraz udostępnianie informacji,
    • ochrona oraz autoryzacja dostępu do informacji.

Zarządzanie zasobami

W przypadku środowiska wielozadaniowego, w którym wiele zadań wykonywanych jest w tym samym czasie, może nader do interferencji procesów. Aby zapobiec temu niekorzystnemu zjawisku organizuje się dostęp do sprzętu, plików, pamięci itp. poprzez ustanowienie zasobów systemowych. W takim przypadku zadania (procesy) użytkownika nie sięgają samodzielnie do sprzętu albo pliku ale używają systemu operacyjnego jako strażnika zarządcy zasobów. Dzięki takiej organizacji dostępu do zasobów, zadania "mają wrażenie", że każde z nich pracuje na własnym komputerze. O realny porządek dostępu do rzeczywistego urządzenia, pamięci albo pliku dba system operacyjny.

Główne zadania systemu operacyjnego podczas zarządzania zasobami systemu komputerowego:

  • tworzenie deskryptora zasobu,
  • usuwanie deskryptora zasobu,
  • realizacja żądania przydziału,
  • zwolnienie oraz odzyskiwanie zasobu.

Zarządzanie zasobami systemu komputerowego:

  • przydział zasobów,
  • synchronizacja dostępu do zasobów (zapobieganie interferencji),
  • ochrona oraz autoryzacja dostępu do zasobów,
  • odzyskiwanie zasobów,
  • rozliczanie – gromadzenie danych o wykorzystaniu zasobów.

Zarządzanie procesem – proces to program w stanie uruchomionym, każdy proces wymaga przydziału pewnych zasobów, włączając w to czas procesora, pamięć, pliki oraz urządzenia wejścia/wyjścia, aby w pełni wykonać swoje zadanie. System operacyjny jest odpowiedzialny w fazie zarządzania procesami za:

  • tworzenie oraz usuwanie procesu,
  • wstrzymywanie oraz przywracanie procesu,
  • zapewnienie mechanizmów pozwalających na synchronizację procesów oraz komunikację pomiędzy procesami.

Zarządzanie pamięcią operacyjną – pamięć to duża tablica słów albo bajtów, każda z własnym adresem, pamięć jest szybko dostępna oraz dzielona jest pomiędzy procesor oraz urządzenia wejścia/wyjścia. Pamięć główna jest ulotnym miejscem przechowywania danych, traci swoją zawartość w czasie awarii systemu. System operacyjny jest odpowiedzialny w fazie zarządzania pamięcią za:

  • utrzymywanie informacji, która cząstka pamięci jest aktualnie używana oraz przez kogo,
  • decydowania, który proces powinien zostać wczytany do pamięci, jeżeli pamięć jest wolna,
  • przydzielanie oraz zwalnianie pamięci.

Zarządzanie plikami – plik jest zbiorem informacji zdefiniowanym przez twórcę pliku. Zazwyczaj, pliki reprezentują programy (źródła programów albo pliki wykonywalne) oraz dane. System operacyjny jest odpowiedzialny w fazie zarządzania plikami za:

  • tworzenie oraz kasowanie plików,
  • tworzenie oraz kasowanie katalogów,
  • wsparcie dla użytkowników końcowych przy operacjach na plikach,
  • mapowanie plików na nośniku danych,
  • tworzenie kopii plików.

Zarządzanie wejściem/wyjściem – system wejścia/wyjścia składa się z: systemu buforowania, interfejsu urządzeń głównych, sterowników (kontrolerów) dla specyficznych urządzeń.

Zarządzenie nośnikami danych – pamięć główna jest ulotna oraz wielokrotnie za mała aby obsłużyć wszystkie programy oraz dane, dlatego stosuje się nośniki danych (najczęściej dysk twardy) do powiększania tej pamięci tak zwanej pamięć drugiego rzędu, na napędach tych mapuje się pamięć główną. System operacyjny jest odpowiedzialny w fazie zarządzania nośnikami danych za:

  • zarządzanie wolną pamięcią,
  • alokacją zapisu,
  • planowaniem dysku.

Zaplecze sprzętowe systemów operacyjnych

Jedynym dodatkowym urządzeniem koniecznym do uruchomienia wielozadaniowego systemu operacyjnego jest licznik zliczający interwały czasowe. Każdy nawet najprostszy system operacyjny musi być taktowany, aby mógł odliczać czas pozostały do zakończenia jednego a rozpoczęcia innego zadania.

Jednak w celu uzyskania systemu komputerowego o dużym stopniu niezawodności nowoczesne procesory posiadają cechy wspierające implementacje oraz działanie systemów operacyjnych. Cechy te to:

  • tryby pracy:
    • uprzywilejowany (kernel/supervisor mode),
    • chroniony (protected mode), w chronionym trybie pracy pewne potencjalnie niebezpieczne instrukcje procesora są niedostępne, a próba wywołania ich spowoduje wystąpienie przerwania (obsługiwanego dalej przez system). Nawiązując do budowy systemu operacyjnego, wszelka aktywność zadań (aplikacji) użytkownika oraz powłoki przebiega się w chronionym trybie pracy (protected mode). Jądro systemu operacyjnego pracuje w trybie uprzywilejowanym (kernel mode).
  • jednostki zarządzania oraz ochrony pamięci, pozwalające definiować obszary pamięci np. tylko do odczytu albo tylko do zapisu przez wybrany proces.
  • kontrolery przerwań, kiedy licznik taktujący system operacyjny wyliczy żądany interwał czasowy informacja o tym zdarzeniu przekazywana jest do procesora przy pomocy przerwania. Podobnie informacje na temat innych zdarzeń przekazywane są do procesora a w ten sposób do systemu operacyjnego przy pomocy mechanizmu przerwań.
  • specjalistyczne akceleratory sprzętowe służące do przyśpieszania pewnych typowych czynności wykonywanych przez systemy operacyjne. Ta funkcjonalność jest sporadycznie spotykana oraz zwykle spotyka się ją we wbudowanych systemach RTOS.

Ochrona oraz zarządzanie pamięcią

Jednym z podstawowych mechanizmów umożliwiających wykonywanie niezawodnych środowisk wykonawczych są mechanizmy zarządzania oraz ochrony pamięci. Działanie tych mechanizmów ma za podstawę na wsparciu sprzętowym dostarczanym przez kontrolery pamięci wbudowane w procesor (lub chipset).

Ogólna zasada opiera się na wydzielaniu poszczególnym procesom obszarów pamięci do wyłącznego użytku. Oznacza to, że tylko dany proces może pisać albo czytać tylko do/z danego obszaru. Próba zapisu odczytu z nieprzydzielonego procesowi obszaru kończy się wywołaniem przerwania przerywającego wykonywanie zadania.

Technicznie ochrona realizowana jest poprzez podział obszaru pamięci na segmenty oraz strony. Zadanie użytkownika, które jest aktywowane w danej chwili przywraca swój kontekst poprzez ustawienie odpowiednich rejestrów CPU jak oraz także rejestrów kontrolnych jednostki zarządzania pamięcią.

Dzięki ochronie pamięci awaria jednego zadania oraz próba błędnego nadpisana przestrzeni adresowej innych zadań jest niemożliwa. W wyniku tego są także chronione dane potrzebne systemowi operacyjnemu do działania, przez co da się zatrzymać uszkodzone zadanie. Aktywność systemu operacyjnego jak oraz elementów typu sterowniki sprzętowe przebiega się w trybie kernel w którym ochrona pamięci nie działa albo jest mocno ograniczona (zależnie od rodzaju CPU). Wobec tego jest możliwe awaryjne zatrzymanie systemu na skutek błędnego działania kodu systemu operacyjnego albo sterowników sprzętowych.

Systemy operacyjne

Amiga

Apple

nieukończone projekty:

Atari ST

Be oraz pochodne

DEC/Compaq

Google

IBM

ICL

Microsoft oraz pochodne

Novell

Sprawdź też: SuSE Linux

NeXT

Unisys

UNIX oraz jego pochodne

Systemy operacyjne czasu rzeczywistego (realtime systems)

Pozostałe

Systemy operacyjne pracujące na maszynie wirtualnej

Możliwe jest uruchomienie systemu operacyjnego na maszynie wirtualnej. Przykłady to: Argante, Inferno a także User Mode Linux, czyli Linux skonfigurowany w ten sposób, by mógł działać jako system wirtualny w postaci procesu działającego pod kontrolą drugiego Linuksa. Systemy wirtualne dzielone są na para-wirtualne oraz w pełni wirtualne. Te ostatnie dopuszczają pracę niemodyfikowanego OS2 w środku innego systemu OS1 z pełną (nieemulowaną) szybkością, np. OS2 – Windows Vista wewnątrz OS1 Linuksa z np Xen. Pełna wirtualizacja OS była dostępna od dawna na superkomputerach, nowe instrukcje procesorów rozszerzają ją na komputery osobiste.

Język programowania jako system operacyjny

Funkcję systemu operacyjnego spełniać może Implementacja określonego języka programowania. Miało to miejsce szczególnie w historycznych już czasach dominacji komputerów 8-bitowych. Rolę powłoki systemu operacyjnego spełnia w tym przypadku interpreter poleceń języka. Dlatego funkcję takiego systemu może pełnić implementacja danego języka oparta na interpretacji albo mieszana (interpretacyjno-kompilacyjna).

W komputerach 8-bitowych wielokrotnie interpreter języka był przechowywany w pamięci ROM oraz stanowił podstawowy system operacyjny. Najbardziej znanym przykładem takiego języka jest BASIC stosowany szeroko w komputerach 8-bitowych – w zasadzie wyłącznym wyjątkiem jest rodzina 8-bitowych Atari, bo BASIC jest nie we wszystkich modelach, a DOS ma stale własną powłokę. Innym, historycznym już przykładem, jest język Jean, implementowany w dużych systemach komputerowych (np. serii Odra 1300), który mógł pracować zarówno pod kontrolą innego systemu operacyjnego (np. GEORGE 3), jak także samodzielnie jako mały system operacyjny o charakterze konwersacyjnym.

Językami programowania (a właściwie pewnymi implementacjami języków programowania), które także stanowią samodzielne systemy operacyjne są także FORTH oraz Smalltalk. Język oraz równocześnie system operacyjny FORTH szczególnie zastosowanie znajdował w systemach sterowania automatyki przemysłowej. Jest to najlepszy przykład języka w interpretacyjno-kompilacyjnego, w którym wprowadzane słowa są interpretowane oraz natychmiast wykonywane, natomiast definicje słów są natychmiast kompilowane. Smalltalk to pierwszy język "czysto obiektowy", który w wielu swoich implementacjach buduje własne środowisko stanowiące system operacyjny komputera.

W systemach serii Mera 300 funkcję systemu operacyjnego mógł pełnić nawet asembler o nazwie MOTIS.

vseo.pl