System operacyjny
System operacyjny (OS), program, który zarządza zasobami komputera, w szczególności przydziałem tych zasobów innym programom. Typowe zasoby obejmują centralną jednostkę obliczeniową (CPU), pamięć komputera, przechowywanie plików, urządzenia wejścia/wyjścia (I/O) oraz połączenia sieciowe. Zadania związane z zarządzaniem obejmują planowanie wykorzystania zasobów w celu uniknięcia konfliktów i zakłóceń między programami. W przeciwieństwie do większości programów, które wykonują zadanie i kończą pracę, system operacyjny działa bezterminowo i kończy pracę dopiero po wyłączeniu komputera.
Nowoczesne wieloprocesowe systemy operacyjne pozwalają na aktywność wielu procesów, gdzie każdy proces jest „wątkiem” obliczeniowym wykorzystywanym do wykonania programu. Jedną z form wieloprocesowości jest tzw. współdzielenie czasu, które pozwala wielu użytkownikom dzielić dostęp do komputera poprzez szybkie przełączanie się między nimi. Podział czasu musi chronić przed interferencją między programami użytkowników, a większość systemów wykorzystuje pamięć wirtualną, w której pamięć lub „przestrzeń adresowa” używana przez program może rezydować w pamięci wtórnej (np. na magnetycznym dysku twardym), gdy nie jest bezpośrednio używana, aby na żądanie zostać zamieniona z powrotem na szybszą pamięć główną komputera. Ta pamięć wirtualna zarówno zwiększa przestrzeń adresową dostępną dla programu, jak i pomaga zapobiegać wzajemnemu zakłócaniu się programów, ale wymaga starannej kontroli ze strony systemu operacyjnego i zestawu tabel alokacji, aby śledzić wykorzystanie pamięci. Prawdopodobnie najbardziej delikatnym i krytycznym zadaniem dla nowoczesnego systemu operacyjnego jest alokacja procesora; każdy proces może korzystać z procesora przez ograniczony czas, który może wynosić ułamek sekundy, a następnie musi oddać kontrolę i zostać zawieszony aż do następnej tury. Przełączanie między procesami musi samo w sobie wykorzystywać CPU, jednocześnie chroniąc wszystkie dane procesów.
Pierwsze komputery cyfrowe nie miały systemów operacyjnych. Działał na nich jeden program, który miał kontrolę nad wszystkimi zasobami systemowymi, a ludzki operator zapewniał wszelkie potrzebne zasoby specjalne. Pierwsze systemy operacyjne zostały opracowane w połowie lat pięćdziesiątych. Były to małe „programy nadzorcze”, które zapewniały podstawowe operacje wejścia/wyjścia (takie jak sterowanie czytnikami kart dziurkowanych i drukarkami) i prowadziły rejestr wykorzystania procesora w celu naliczania opłat. Programy nadzorcze zapewniały również możliwość pracy w trybie multiprogramowania, umożliwiając jednoczesne uruchamianie kilku programów. Było to szczególnie ważne, aby te wczesne, warte wiele milionów dolarów maszyny nie były bezczynne podczas powolnych operacji we/wy.
Komputery zyskały bardziej wydajne systemy operacyjne w latach 60. wraz z pojawieniem się systemu time-sharing, który wymagał systemu do zarządzania wieloma użytkownikami dzielącymi czas procesora i terminali. Dwa wczesne systemy podziału czasu to CTSS (Compatible Time Sharing System), opracowany w Massachusetts Institute of Technology, oraz Dartmouth College Basic System, opracowany w Dartmouth College. Inne systemy wieloprogramowe obejmowały Atlas, opracowany na Uniwersytecie w Manchesterze w Anglii, oraz OS/360 firmy IBM, prawdopodobnie najbardziej złożony pakiet oprogramowania lat sześćdziesiątych. Po roku 1972 system Multics dla komputera GE 645 firmy General Electric Co. (a później dla komputerów firmy Honeywell Inc.) stał się najbardziej zaawansowanym systemem, z większością możliwości multiprogramowania i współdzielenia czasu, które później stały się standardem.
Minikomputery z lat 70. miały ograniczoną pamięć i wymagały mniejszych systemów operacyjnych. Najważniejszym systemem operacyjnym tego okresu był UNIX, opracowany przez AT&T dla dużych minikomputerów jako prostsza alternatywa dla Multics. Stał się powszechnie używany w latach 80-tych, po części dlatego, że był darmowy dla uniwersytetów, a po części dlatego, że został zaprojektowany z zestawem narzędzi, które były potężne w rękach wykwalifikowanych programistów. Ostatnio Linux, wersja UNIX-a o otwartym kodzie źródłowym, opracowana częściowo przez grupę kierowaną przez fińskiego studenta informatyki Linusa Torvaldsa, a częściowo przez grupę kierowaną przez amerykańskiego programistę komputerowego Richarda Stallmana, stał się popularny zarówno na komputerach osobistych, jak i na większych komputerach.
Oprócz systemów ogólnego przeznaczenia, systemy operacyjne specjalnego przeznaczenia działają na małych komputerach, które kontrolują linie montażowe, samoloty, a nawet urządzenia domowe. Są to systemy czasu rzeczywistego, zaprojektowane w celu zapewnienia szybkiej reakcji na czujniki i wykorzystania ich danych wejściowych do sterowania maszynami. Systemy operacyjne zostały również opracowane dla urządzeń mobilnych, takich jak smartfony i tablety. System iOS firmy Apple Inc, który działa na iPhone’ach i iPadach, oraz Android firmy Google Inc. to dwa znaczące mobilne systemy operacyjne.
Z punktu widzenia użytkownika lub programu użytkowego, system operacyjny zapewnia usługi. Niektóre z nich to proste polecenia użytkownika, takie jak „dir” – pokaż pliki na dysku – inne to niskopoziomowe „wywołania systemowe”, których program graficzny może użyć do wyświetlenia obrazu. W obu przypadkach system operacyjny zapewnia odpowiedni dostęp do swoich obiektów, w jednym przypadku są to tablice lokalizacji na dysku, a w drugim procedury przesyłania danych na ekran. Niektóre z jego procedur, te, które zarządzają procesorem i pamięcią, są ogólnie dostępne tylko dla innych części systemu operacyjnego.
Współczesne systemy operacyjne dla komputerów osobistych powszechnie zapewniają graficzny interfejs użytkownika (GUI). GUI może być nieodłączną częścią systemu, jak w starszych wersjach Mac OS firmy Apple i Windows OS firmy Microsoft Corporation; w innych jest to zestaw programów, które zależą od systemu bazowego, jak w systemie X Window dla UNIX i Mac OS X firmy Apple.
.