1 Systemy operacyjne © Jerzy SkurczyńskiInstytut Informatyki Uniwersytetu Gdańskiego Gdańsk, 2016 r. Ostatnia aktualizacja: 2016 r.
2 Literatura: 1. M.J. Bach, Budowa systemu operacyjnego UNIX, WNT, 1995. 2. D.P. Bovet, M. Cesati, Linux kernel, RM, 2001. 3. M.K. Johnson, E.W. Troan, Oprogramowanie użytkowe w systemie Linux, WNT, 2000. 4. A. Silberschatz i in., Podstawy systemów operacyjnych, WNT, 2005. 5. W.R. Stanek, Microsoft Windows Server 2008 R2. Vademecum Administratora, Helion, 2016. 6. A.S. Tanenbaum, Systemy operacyjne, Helion, 2010. 7. Materiały do kursu ITA-107 (Microsoft Windows Server 2008)
3 1. HISTORIA ROZWOJU I OGÓLNA CHARAKTERYSTYKA SYSTEMU UNIXSystem operacyjny Unix w swojej najwcześniejszej wersji powstał w 1969 roku w Bell Telephone Laboratories - jednostce badawczej, której firmą macierzystą była telekomunikacyjna firma AT&T. Na jego powstanie miały wpływ prace nad projektem systemu operacyjnego Multics prowadzone od 1965 roku wspólnie przez Bell Laboratories, General Electric Company i Massachusetts Institute of Technology (Bell Labs odstąpiły od tego projektu w 1969 roku). Multics z założenia miał być systemem wieloprocesowym i wielodostępnym, oferującym swoim użytkownikom dużą moc obliczeniową i dużą pojemność pamięci, jak również łatwość współdzielenia danych. Najwcześniejsza wersja Uniksa była napisana przez K. Thompsona dla maszyny PDP-7. Do pracy nad systemem przyłączyli się D. Ritchie (biorący uprzednio udział w projektowaniu systemu Multics), nieco później B. Kernighan i inni pracownicy Bell Labs. Thompson i Ritchie opracowali pierwotny system plików Uniksa i nieduży zbiór prostych funkcji systemowych. Pomysłodawcą nazwy Unix (początkowo pisanej Unics) był B. Kernighan. Nazwa ta przez długie lata była zastrzeżonym znakiem towarowym firmy AT&T, nabytym dopiero w 1993 roku przez firmę Novell (i odstąpionym w tym samym roku X/Open Company).
4 Istotnym momentem w rozwoju systemu Unix było opracowanie przez DIstotnym momentem w rozwoju systemu Unix było opracowanie przez D. Ritchi’ego języka C (pod wpływem opracowanego przez K. Thompsona języka B) i napisanie w 1973 roku na nowo całego jądra systemu w tym języku. Spowodowało to, że konstrukcja systemu stała się przejrzysta i łatwo przenośna na wszystkie komputery, dla których opracowano kompilator języka C oraz sterowniki urządzeń zewnętrznych udostępniające wirtualny obraz sprzętu oczekiwany przez jądro systemu Unix (tak zwaną maszynę wirtualną Uniksa). Od 1973 roku Unix stał się nierozerwalnie związany z językiem C - kompilator C jest dostępny w każdej wersji Uniksa i wszystkie uniksowe biblioteki systemowe mają interfejsy programisty w języku C. Na początku lat 70-tych firma AT&T, nie mając prawa handlowania produktami komputerowymi, przekazała licencje systemu Unix innym firmom komercyjnym i uniwersytetom amerykańskim. Spowodowało to ogromną popularyzację systemów uniksowych i rozwój prac nad ich ulepszaniem w wielu ośrodkach uniwersyteckich. Największy wpływ na dalszy rozwój Uniksa miały prace prowadzone na Uniwersytecie Kalifornijskim w Berkeley - głównie prace związane z pamięcią wirtualną i mechanizmem stronicowania. Spowodowały one zainteresowanie rządu amerykańskiego projektem i wybranie Uniksa jako standardowego systemu operacyjnego dla potrzeb rządowych.
5 Prace nad systemem Unix w Berkeley były finansowane przez rządową agencję DARPA (DefenseAdvanced Research Projects Agency), w dużym stopniu w związku z zapotrzebowaniem rządu na opracowanie i implementację protokołów sieci Internet pozwalających na komunikację pomiędzy lokalnymi sieciami komputerowymi opartymi na różnym sprzęcie i różnych protokołach warstwy łącza. Spowodowało to szybki rozwój systemów uniksowych jako sieciowych systemów operacyjnych, jak również rozwój samego Internetu, pełniącego początkowo rolę sieci służącej do celów militarnych i akademickich w Stanach Zjednoczonych. Wersje źródłowe systemu Unix były udostępniane przez AT&T bez żadnego oprogramowania użytko- wego. Wiele firm produkowało swoje własne oprogramowanie dla systemów uniksowych i sprzedawało swoje produkty pod rozmaitymi nazwami kojarzącymi się z nazwą Unix, na przykład Xenix (początkującej wówczas firmy Microsoft), Ultrix, Irix itp. Nawet duże firmy prowadzące własne prace badawcze, takie jak Hewlett-Packard, DEC czy IBM decydowały się na implementacje systemów zgodnych z systemem Unix. Na przełomie lat 70-tych i 80-tych firma AT&T zdecydowała się na wyprodukowanie własnej komer- cyjnej wersji Uniksa - pierwsza taka wersja pojawiła się w 1982 roku pod nazwą Unix System III.
6 Różne wersje Uniksów rozpowszechniane przez różne firmy i uczelnie były ze sobą zgodne z punktuwidzenia zwykłego użytkownika, ale nie było pełnej zgodności pomiędzy ich interfejsami programisty (nie oferowały jednakowych zbiorów funkcji systemowych). Przy porównywaniu ich własności typowymi „punktami odniesienia” były najbardziej rozpowszechnione wersje systemów z AT&T (System III, a od roku 1983 System V) oraz z Berkeley (BSD - Berkeley Software Distribution). Pierwszą szeroko rozpowszechnioną wersją Uniksa z Berkeley była wersja 4.2 BSD. Ostatnią wersją utworzoną w Bell Labs była SVR4 (System V Release 4), zaś na Uniwersytecie w Berkeley BSD. Spośród innych wersji Uniksa najszerzej rozpowszechnionych na świecie należy wymienić systemy Solaris firmy SUN Microsystems. Istnieją również systemy operacyjne, które oferują nie-uniksowy interfejs użytkownika, ale są w dużym stopniu zgodne z Uniksem pod względem wewnętrznej konstrukcji - przykładem może być system Windows NT firmy Microsoft. Różnorodność i rozpowszechnienie systemów uniksowych spowodowały podjęcie prac nad międzynarodową standaryzacją Uniksa. Standard taki został opracowany przez organizację IEEE pod nazwą POSIX (Portable Operating Systems Interface). Standaryzacji uległ także język C (ANSI C).
7 Kwestie związane ze standaryzacją systemu Unix były przez wiele lat kwestiami spornymi (ze względuna zaszłości na rynku systemów operacyjnych i zaangażowanie dużego kapitału). W 1984 roku kilka firm europejskich (ICL, Siemens i inne) utworzyło konsorcjum X/Open Company w celu ułatwienia przenoszenia oprogramowania pomiędzy różnymi platformami sprzętowymi i systemowymi przez opracowywanie wspólnych standardów. W 1987 roku firma AT&T, jako właściciel znaku towarowego Unix, zawarła porozumienie z firmą Sun Microsystems, będącą zwolennikiem rozwiązań zastosowanych w Uniksach BSD, w celu ujednolicenia polityki. Rok później zaowocowało to założeniem organizacji Unix International. Duża część pozostałych amerykańskich producentów systemów operacyjnych (IBM, DEC, HP i inne), czując zagrożenie, w 1988 roku utworzyła fundację OSF (Open Software Foundation), mającą w gruncie rzeczy podobne cele. Kilka kolejnych lat trwały utarczki pomiędzy obydwoma ugrupowaniami – okres ten został później nazwany przez autorów opracowań historycznych wojnami uniksowymi (Unix wars).
8 Konsorcjum X/Open starało się zachować w tej sytuacji postawę neutralną, kontynuując swoje pracestandaryzacyjne i przyjmując jako swoich członków zbiorowych zarówno Unix International, jak i Open Software Foundation. Spory wygasły w 1993 roku, kiedy obie strony zorientowały się, że w międzyczasie firma Microsoft zaczęła odgrywać coraz większą rolę na rynku systemów dla przedsiębiorstw. W tym samym roku firma AT&T, będąc uwikłaną w spór z Uniwersytetem Kalifornijskim w Berkeley, odprzedała zarówno znak towarowy Unix, jak i kod źródłowy systemu firmie Novell (sąd oddalił pozew, a w Uniksie BSD zastały usunięte fragmenty oprogramowania pochodzące z AT&T). Pod koniec 1993 roku firma Novell odprzedała kod źródłowy firmie Santa Cruz Operation (produkującej systemy SCO Unix), a znak towarowy Unix odstąpiła konsorcjum X/Open. W 1996 roku formalnie X/Open połączyło się z OSF, tworząc konsorcjum The Open Group. The Open Group wydawało kolejne specyfikacje standardów pod nazwą Single Unix Specification (pierwszą w 1995 roku, jeszcze jako X/Open, drugą w 1997 roku i trzecią w 2001 roku). Organizacja IEEE publikowała swoje standardy POSIX jako normy ISO/IEC w latach 2003 i 2008.
9 Rodziną systemów operacyjnych zgodnych z systemem Unix są też rozpowszechniane (w niektórychwersjach nieodpłatnie) systemy Linux. Najwcześniejsza wersja Linuksa została napisana w 1991 roku przez Linusa Torvaldsa (studenta z Finlandii) i udostępniona w Internecie. Była przeznaczona dla procesora Intel Wersja ta była częściowo oparta na istniejącym wcześniej miniaturowym systemie Minix utworzonym przez A. Tanenbauma i przeznaczonym do celów dydaktycznych. Prace nad Linuksem spontanicznie podjęła międzynarodowa społeczność informatyków w celu utworzenia pełnowartościowego, dostępnego dla wielu różnych rodzajów sprzętu i niezależnego od firm komercyjnych systemu operacyjnego zgodnego z normą POSIX (co do tej pory nie zostało w pełni osiągnięte). Obecnie Linux jest rozpowszechniany zgodnie z regułami GPL (General Public License) określonymi przez międzynarodową organizację FSF (Free Software Foundation). Reguły te pozwalają kopiować, modyfikować i rozpowszechniać programy podlegające licencji GPL i nakazują udostępnianie kodu źródłowego (nie tylko kodu binarnego) każdego takiego programu. Obecnie istnieje wiele różnych odmian systemu Linux, przy czym każda z nich pojawia się w wielu coraz to nowszych wersjach. Do niedawna najczęściej spotykanymi odmianami były Red Hat, Debian i Slackware, ostatnio zaś dużą popularnością cieszą się różne wersje Ubuntu.
10 Organizacja Free Software Foundation została założona przez Richarda Stallmana w 1985 rokuw celu stanowienia podstawy organizacyjnej i finansowej projektu GNU (GNU is Not Unix). Jej misją jest szeroko pojęta wolność tworzenia i używania oprogramowania oraz ochrona jego użytkowników przed ingerencją organów państwowych i firm prywatnych. Projekt GNU miał na celu utworzenie pełnowartościowego, zaopatrzonego w oprogramowanie użytkowe, uniksopodobnego systemu operacyjnego dostępnego za darmo. W sytuacji przeciągających się prac nad nim, system Linux został chętnie powitany przez FSF jako spełniający tę rolę (choć prace nad jądrem systemu GNU były kontynuowane). Uwaga 1) Z Linuksem może również współpracować oprogramowanie komercyjne (nie podlegające licencji GPL). 2) Wiele osób myli ze sobą organizacje OSF i FSF. Poza podobieństwem nazw mają one jedynie wspólne to, że obie powstały w Massachusetts. 3) Darmowe systemy operacyjne OpenBSD i FreeBSD nie mają nic wspólnego z wyżej wymienionymi organizacjami.
11 Oprogramowanie komputerów (nie tylko systemy operacyjne) może być udostępniane użytkownikomna wielu różnych zasadach, z których niektóre nie wykluczają się wzajemnie (por. [3]): - oprogramowanie komercyjne (zamknięte) – użytkownik nie ma prawa zapoznawać się z treścią źródłową programów, a jego prawa do używania programów zależą od wykupionej licencji; - oprogramowanie otwarte (open source) – wszyscy mają prawo do darmowego zapoznania się z treścią źródłową programów; - oprogramowanie na licencji GPL – oprogramowanie open source, które wszyscy mają prawo używać za darmo, a wszelkie oprogramowanie utworzone na jego podstawie również musi być udostępniane na licencji GPL; - oprogramowanie na licencji MIT/X – nakłada obowiązek powielania w oprogramowaniu pochodnym notek o prawach autorskich i zasadach licencjonowania; - oprogramowanie na licencji BSD – jak wyżej, a ponadto nakłada obowiązek umieszczania w ewentualnych materiałach reklamowych podziękowania dla autorów (acknowledgment); - oprogramowanie na licencji artystycznej (artistic license) – nie można przerobionych wersji oprogramowania sprzedawać jako własnych wersji oficjalnych; - własność publiczna (public domain) – do dowolnego wykorzystania przez wszystkich.
12 Graficzne łącze użytkownika (GUI – Graphical User Interface) zostało wynalezione przez D. Engelbartai jego zespół badawczy w Instytucie Stanforda pod koniec lat 60-tych ubiegłego stulecia. Licencja została odprzedana firmie Xerox, która kontynuowała prace nad GUI w swoim ośrodku badawczo- rozwojowym w Palo Alto (PARC – Palo Alto Research Center), co zaowocowało pierwszym zastosowaniem na skalę przemysłową w 1973 roku. Pomysł podchwyciła firma Apple w 1983 roku, a niedługo potem wiele innych firm (IBM w 1983 roku, Microsoft w 1984 roku). Pierwsze GUI dla systemów uniksowych (X Window System) zostało opracowane w MIT w 1984 roku w ramach projektu Athena. Obecnie istnieje wiele bibliotek funkcji graficznych dla systemów uniksowych – zarówno komercyjnych, jak i darmowych. Wewnętrzna realizacja GUI dla systemów uniksowych różni się w istotny sposób od realizacji dla systemów Microsoft Windows. W przypadku uniksów jest to usługa systemowa (X server) realizowana jako proces na poziomie użytkownika, zaś w przypadku Windows jest to zbiór funkcji wbudowanych w jądro systemu operacyjnego.
13 Wielodostępne systemy z podziałem czasu umożliwiają współpracę z komputerem wieluużytkownikom jednocześnie. Aby technicznie było to możliwe, do komputera musi być przyłączonych wiele stanowisk pracy (tak zwanych terminali, czyli urządzeń końcowych). Klasyczny terminal składał się tylko z monitora i klawiatury, natomiast obecnie zawiera również mysz, a czasem też inne urządzenia. Komputer wielodostępny (mainframe) Terminal n Terminal 1 Terminal 2 Terminale były przyłączone do komputera przy użyciu modemów i linii doprowadzanych do złącz szeregowych.
14 W odniesieniu do rozmaitych rodzajów urządzeń zewnętrznych systemów uniksowych istnieje dośćbogata terminologia, która często wywodzi się jeszcze z zamierzchłej przeszłości, i która w obecnych czasach jest dość często używana w nieprawidłowy sposób (terminal – nieinteligentny lub inteligentny, konsola, pseudoterminal, konsola wirtualna, graficzna stacja robocza itp.). Najwcześniejsze terminale nie zawierały jeszcze monitorów ekranowych, ale miały postać elektromechanicznych maszyn do pisania, wykorzystywanych w telekomunikacji jako dalekopisy (tty - teletype). Umożliwiały zwykle zdalną współpracę z komputerem w obrębie dużego budynku (odległości rzędu dziesiątek, a nawet setek metrów). Konsolą nazywano urządzenie bezpośrednio (bez pośrednictwa modemu) przyłączone do komputera i służące do celów administracyjnych. Terminal inteligentny wykonuje wstępne przetworzenie ciągu bajtów wygenerowanego w trakcie wpisywania tekstu w wierszu poleceń przez użytkownika (na przykład odpowiednio interpretuje znaki cofania i kasowania w celu wykonania korekty tekstu), przez co odciąża komputer główny. Graficzna stacja robocza jest terminalem obsługującym GUI (zwykle posiada duże zasoby sprzętowe). Pozostałe terminy będą wyjaśnione w trakcie późniejszych wykładów.
15 Przykładowe źródła informacji na temat systemów linuksowych:- strona domowa Linux Documentation Project (LDP) - pomoce wbudowane (polecenia man oraz info); - książki i listy dyskusyjne. Uwaga: w przypadku niewystarczającej dokumentacji linuksowej często przydatna okazuje się dokumentacja do różnych rodzajów systemów uniksowych (zwykle jest staranniej zredagowana).