System operacyjny: Różnice pomiędzy wersjami

[wersja przejrzana][wersja nieprzejrzana]
Usunięta treść Dodana treść
m Wycofano edycje użytkownika 83.27.70.167 (dyskusja). Autor przywróconej wersji to Marcin.ms.
Znacznik: Wycofanie zmian
Nie podano opisu zmian
Znaczniki: usuwanie dużej ilości tekstu (filtr nadużyć) VisualEditor
Linia 1:
[[Plik:KDE 3.2.1 on SuSE Linux 9.1 showing OpenOffice.org 1.1.1, Konqueror, and Konsole.png|thumb|Przykład graficznego interfejsu systemu operacyjnego wraz z uruchomionym oprogramowaniem]]
'''System operacyjny''' ({{w języku|en|operating system}}, skrót {{k|en|OS}}) – [[oprogramowanie]] zarządzające [[system komputerowy|systemem komputerowym]], tworzące [[środowisko]] do uruchamiania i kontroli [[zadanie (informatyka)|zadań]].
 
*
W celu uruchamiania i kontroli zadań użytkownika system operacyjny zajmuje się:
* sprzętowe.
* planowaniem oraz [[algorytm szeregowania|przydziałem czasu procesora]] poszczególnym zadaniom,
* kontrolą i przydziałem [[pamięć operacyjna|pamięci operacyjnej]] dla uruchomionych zadań,
* dostarczaniem mechanizmów do synchronizacji zadań i komunikacji pomiędzy zadaniami,
* obsługą sprzętu oraz zapewnieniem równolegle wykonywanym zadaniom jednolitego, wolnego od [[Interferencja procesów|interferencji]] dostępu do sprzętu.
 
Dodatkowe przykładowe zadania, którymi może, ale nie musi, zajmować się system operacyjny to:
* ustalanie [[Sieć komputerowa|połączeń sieciowych]],
* zarządzanie [[plik]]ami.
Większość współczesnych systemów operacyjnych posiada [[Interfejs graficzny|środowiska graficzne]] ułatwiające komunikacje maszyny z użytkownikiem.
 
== Geneza ==
{{Osobny artykuł|Historia systemów operacyjnych}}
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 liczby prac. Miało to efektywniej wykorzystać nakłady poniesione na zakup [[komputer]]a. Komputer zainstalowany w ośrodku obliczeniowym pracował niekiedy nie tylko na potrzeby swojego właściciela, ale realizował usługi dla innych [[podmiot gospodarczy|podmiotów gospodarczych]].
Rozpoczęto poszukiwania możliwości zwiększenia wydajności komputera oraz ułatwienie jego [[Programowanie komputerów|programowania]], a ponieważ proste rozwiązania w postaci zmiany [[Procesor|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ż [[Jednostka systemowa|jednostki centralnej]] (zresztą ta zależność utrzymuje się dzisiaj i zdaje się pogłębiać). Wprowadzanie programu i danych z [[karta dziurkowana|kart perforowanych]], a nawet [[taśma magnetyczna|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 temu nie było już konieczne każdorazowe ładowanie kodu obsługi sprzętu i komunikacji z użytkownikiem przy ładowaniu programu użytkowego. Uzyskano w ten sposób pewną oszczędność czasu oraz zwiększono efektywność.
 
Dalsze ulepszenia polegały na dostrzeżeniu faktu, że podczas samego wprowadzania programu lub 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 kilka zadań w tym samym czasie nazywa się [[Wielozadaniowość|wielozadaniowością]] i jest jedną z podstawowych cech nowoczesnych systemów operacyjnych.
 
== System operacyjny jako interfejs pomiędzy maszyną a człowiekiem ==
[[Plik:Operating system placement-pl.svg|thumb|Schemat warstw logicznych obrazujący relacje pomiędzy elementami systemu komputerowego]]
Aby można było mówić, że system operacyjny tworzy środowisko niezbędne do uruchamiania i kontroli zadań, musi on udostępniać interfejs pozwalający na wykonanie pewnych operacji. Przykładowo musi dostarczać metody pozwalające na uruchomienie lub zatrzymanie wskazanego zadania. Zazwyczaj system operacyjny udostępnia w tym celu zestaw funkcji zwanych API (''[[Application Programming Interface]]'') lub [[Wywołanie systemowe|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 posiada system plików).
 
Jakąkolwiek czynność zadania użytkownika chcą wykonać na sprzęcie, korzystają zawsze z interfejsu systemu. Ma to tę zaletę, że o szczegółach obsługi sprzętu jest poinformowany tylko i wyłącznie system operacyjny, a same zadania nie muszą znać specyfiki obsługi urządzeń. Ułatwia to zadanie programistom aplikacyjnym oraz rozwiązuje [[Interferencja procesów|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 lub wywołania systemowe) jest elementem koniecznym, o tyle interfejs użytkownika jest elementem opcjonalnym.
 
== Budowa systemu operacyjnego ==
[[Plik:System operacyjny schemat ogolny.svg|thumb|Schematyczna budowa systemu komputerowego]]
Przyjęto, że system operacyjny dzieli się na trzy główne elementy:
* [[jądro systemu operacyjnego|jądro]] systemu wykonujące i kontrolujące zadania:
** [[Algorytm szeregowania|planisty]] czasu procesora, ustalającego które zadanie i jak długo będzie wykonywane,
** przełącznika zadań, odpowiedzialnego za przełączanie pomiędzy uruchomionymi zadaniami,
** i dodatkowo:
*** modułu zapewniającego synchronizacje i komunikację pomiędzy zadaniami,
*** modułu obsługi przerwań i zarządzania urządzeniami,
*** modułu obsługi pamięci, zapewniającego przydział i ochronę pamięci,
*** innych modułów zależnie od funkcji i przeznaczenia systemu.
* [[Powłoka systemowa|powłoka]] – specjalny [[Oprogramowanie|program]] komunikujący użytkownika z systemem operacyjnym,
* [[system plików]] – sposób ustrukturyzowanego zapisu danych na [[nośnik danych|nośniku]].
 
== Podział systemów operacyjnych ==
Najszerszym, ale najbardziej podstawowym kryterium podziału systemów operacyjnych jest podział na:
* [[system operacyjny czasu rzeczywistego]] [[System operacyjny czasu rzeczywistego|(RTOS)]]
* systemy operacyjne czasowo niedeterministyczne
Podział ten odnosi się do najbardziej podstawowej funkcjonalności systemu operacyjnego jakim jest planowanie i przydział czasu procesora poszczególnym zadaniom.
 
Ze względu na sposób realizacji przełączania zadań systemy operacyjne można podzielić na:
* systemy z [[Wywłaszczenie (informatyka)|wywłaszczaniem]] zadań
* systemy bez wywłaszczania.
 
Inny rodzaj podziału to podział na:
* otwarte systemy operacyjne
* wbudowane systemy operacyjne.
Systemy otwarte można uruchomić na dowolnej maszynie wskazanego rodzaju np. PC i w określonym stopniu modyfikować.
Systemy wbudowane jak sama nazwa wskazuje są zaszyte [[System wbudowany|(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 można wprowadzić 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ęść systemu przyśpiesza wybrany zakres czynności wykonywanych przez system (przykładowo przełączania zadań i zachowywanie ich kontekstu).