You are on page 1of 6

System operacyjny Linux - architektura

Wstęp

Linux został opracowany przez młodego fińskiego studenta Linusa Torvaldsa i początkowo nie miał to być
„pełny” system operacyjny. W 1991 roku kompletny kod źródłowy Linuxa pojawił się po raz pierwszy na
największym fińskim serwerze FTP. Zaprezentowano go jako rozpowszechniany bezpłatnie klon Minixa –
dydaktycznego systemu operacyjnego napisanego przez Andrew Tannenbauma do zajęć z systemów
operacyjnych (nazwa Linux to akronim od Linux Is Not UniX - Linux nie jest Unixem). Załączony kompilator
GNU (gcc) dawał możliwość kompilacji małych programów w języku C, pozwalając na przeniesienie
uniksowego interpretatora poleceń. W miarę upływu czasu coraz więcej użytkowników zaczęło przysyłać swoje
uwagi i sugestie do Finlandii i w ten sposób doskonalono system Linuxa. To Internet okazał się najszybszym
narzędziem rozwoju tego systemu operacyjnego. Projekt rozwijał się i rozwija do dzisiaj dzięki entuzjastom
komunikującym się przez sieć. Stale dostarczane są ulepszenia i poprawki do istniejącego oprogramowania.
Linus Torvalds nadal zajmuje się rozwojem jądra systemu, a kilkudziesięciu innych programistów ( grup) zajęło
się innymi częściami systemu (np. kompilator GNU C, biblioteki C dla Linuxa, dokumentacja dla użytkowników
czy system X Windows

Linuxa dotyczy licencja GPL ( General Public Licence) fundacji FSF (Free Software Fundation), która ma na
celu rozwijanie wysokiej jakości wolnego oprogramowania dostępnego dla wszystkich. Licencja ta oznacza, że
kopiowanie i dystrybucja oprogramowania wraz z kodami źródłowymi, nie są ograniczone, ale zachowywane są
prawa autorskie. Jeżeli programista wykorzystuje tego typu oprogramowanie jako podstawę własnych
produktów, to jego dzieło musi być także dostępne na warunkach określonych w GPL.
Projekt GNU (Gnu's Not Unix - GNU nie jest Unixem) fundacji FSF ma na celu opracowanie kompletnego,
bezpiecznego i powszechnie dostępnego systemu operacyjnego, który w dużym stopniu ma być zgodny z
Unixem. W ramach tego projektu stworzono wiele programów użytkowych i narzędzi Unixa, a ponieważ Linux
( czytaj jądro systemu ) spełnia cel i warunki GNU to całość stanowi kompletny system uniksowy.

Dystrybucje Linuxa

Dystrybucja Linuxa to jądro (właściwy Linux) wraz z dostępnymi powłokami, kompilatorami, bibliotekami
systemowymi, środowiskiem graficznym oraz niezliczoną liczbą programów narzędziowych i użytkowych
dostarczanych jako skompilowane pakiety. Dystrybucja dostarcza zwykle mechanizmy instalacji, usuwania i
aktualizacji pojedynczych i całych grup pakietów wraz z interfejsem ich konfiguracji. Najbardziej znane
dystrybucje to:
Fedora/Centos – następca RedHat Linux rozwijana przez Fedora Project/Centos Project, nadająca się zarówno
na serwer jak i komputer domowy. Stawia na innowacyjność rozwiązań dlatego regularnie nowe wydania
pojawiają się co 6 miesięcy. Dystrybucja oparta jest o pakiety .rpm a do zarządzania nimi służy dedykowany
program yum

Debian – dystrybucja charakteryzująca się ogromną liczbą dostępnych pakietów, dobra zarówno na serwer jak i
komputer domowy. Ma opinię systemu bardzo stabilnego, a rozprowadzana jest w oparciu o pakiety .deb

Ubuntu/Kubuntu – to dystrybucja dla początkujących (oparta na Debianie), wyposażona w proste mechanizmy


instalacji i konfiguracji. System świetne sobie radzi z wykrywaniem sprzętu i jego obsługą. Doskonale nadaje się
do komputerów domowych i biurowych.

Slackware – dystrybucja raczej dla zaawansowanych użytkowników, dostarcza jedynie sprawdzonych i


stabilnych pakietów, bazuje na prostych narzędziach konfiguracyjnych pracujących w CLI. Pakiety to zwykłe
archiwa tar spakowane programem xz zawierające dodatkowe informacje o ich zawartości oraz opcjonalnie
skrypt instalacyjny

1
Charakterystyka systemu Linux

 efektywność i stabilność systemu,


 powszechna dostępność bez jakichkolwiek opłat licencyjnych,
 bogaty zestaw oprogramowania umożliwiający szeroki zakres zastosowań,
 możliwość pracy na wielu platformach sprzętowych przy stosunkowo niewielkich
wymaganiach,
 możliwość łatwej współpracy z innymi popularnymi systemami operacyjnymi,
 bogata dokumentacja w wersji elektronicznej,
 dostępność kodu źródłowego.

Podstawowe cechy Linuxa

 wielodostęp,
 wielozadaniowość, czyli praca z podziałem czasu procesora pomiędzy wiele
zadań,
 wieloprzetwarzanie, czyli praca wieloprocesorowa,
 obsługa różnych typów systemów plików,
 obsługa różnych protokołów sieciowych,
 obsługa różnych formatów plików wykonywalnych,
 wykorzystanie współdzielonych bibliotek.

Proces autoryzacji

System Linux po uruchomieniu nie jest bezpośrednio dostępny dla użytkowników, tylko
oczekuje na ich zgłoszenia. Zgłaszając się do systemu, użytkownik podaje swoją nazwę i
hasło. System dokonuje autoryzacji poprzez:
 sprawdzenie, czy użytkownik o podanej nazwie jest zarejestrowany w systemie w pliku
/etc/passwd,
 zakodowanie podanego hasła,
 porównanie z zakodowanym hasłem przechowywanym przez system w pliku
/etc/shadow.
W wyniku pomyślnej autoryzacji system uruchamia sesję użytkownika, udostępniając jego
konto. Proces zgłaszania i autoryzacji użytkownika określa się jako logowanie do systemu.

Użytkownik może zmienić swoje hasło wpisując w konsolo passwd


$ passwd
Changing password for kraksa
(current) Unix password:******
New UNIX password:*******
Retype new UNIX password:*******
passwd: all authentication tokens updated successfully

2
Praca wielodostępna
Podstawę pracy takiego systemu tworzy przypisanie dla każdego użytkownika unikatowego
identyfikatora (user identifications ID ), który należy podać systemowi wraz z przypisanym
hasłem ( ang. password) zgodnie z procedurą zwaną logowaniem. Na podstawie
identyfikatora oraz związanymi z nim uprawnieniami system zarządza dostępem do plików i
zasobów. W systemie Linux każdy użytkownik otrzymuje swój własny identyfikator oraz
identyfikator grupy, do której należy. Użytkownik może być przypisany do wielu grup.
W systemie wielodostępnym takim jak Linux istnieje jeden super-użytkownik ( administrator
systemu) o nazwie root i numerycznym identyfikatorze 0. Ma on dostęp do wszystkich zasobów
(plików i urządzeń), może dodawać nowych i usuwać istniejących użytkowników w systemie.

System Linux daje możliwość korzystania z terminali wirtualnych czyli wielokrotnego


logowania na tym samym komputerze i uruchamianie jednocześnie różnych programów.
Przełączenie pomiędzy terminalami odbywa się poprzez kombinację klawiszy (ALT +F1,
ALT+F2, ...)

Wielozadaniowość
Przez wielozadaniowość należy rozumieć, że system potrafi wykonywać miej lub bardziej
równolegle wiele procesów ( zadań). W systemie Linux procesem może być program
uruchamiany przez użytkownika lub program działający zawsze w tle – demon. Istnieje
możliwość komunikacji miedzy procesami. Ponieważ zwykle mamy do czynienia z maszynami
pracującymi z jednym procesorem, musi on być dzielony pomiędzy poszczególne procesy.
Zadanie to wykonuje program szeregujący zlecający procesorowi obsługę kolejnych
procesów we właściwych odcinkach czasu.

Struktura warstwowa Linuxa

Warstwa programów obsługi urządzeń komunikuje się bezpośrednio ze sprzętem komputerowym, więc musi
uwzględniać specyficzne cechy tego sprzętu. Programy obsługi muszą być napisane w języku programowania
niskiego poziomu oddzielnie dla każdej platformy sprzętowej. Cała reszta systemu została zaimplementowana w
języku C.

3
Jądra systemów Unix i Linux są monolityczne. Chociaż można w nich wyróżnić funkcjonalne części składowe,
to stanowią one jeden program i korzystają ze wspólnych struktur danych. Takie rozwiązanie zapewnia
największą efektywność systemu. Do podstawowych zadań jądra należy:
 zarządzanie procesami,
 zarządzanie pamięcią,
 zarządzanie plikami,
 zarządzanie urządzeniami wejścia-wyjścia.

Kod jądra Linuxa może być podzielony fizycznie na kilka części:


 jądro podstawowe,
 moduły jądra, dołączane dynamicznie.

Modularność jądra pozwala na elastyczne dostosowywanie jego funkcji do zmieniających się


wymagań bez konieczności ponownej kompilacji całego kodu. Moduły mogą zawierać
programy obsługi nowych urządzeń podłączonych do systemu lub interfejsy programowe
różnych typów systemów plików.

Zarządzanie pamięcią
Linux wykorzystuje mechanizm zarządzania pamięcią wirtualną, czyli udostępnia więcej
pamięci operacyjnej niż ma w rzeczywistości. Wymaga to wydzielenia na twardym dysku tzw.
partycji wymiany (swap partition ). Jądro zapisuje zawartość nieużywanych bloków pamięci
fizycznej na dysku, umożliwiając tym samym wykorzystanie ich do innych celów. Jeżeli
oryginalna zawartość jest potrzebna następuje proces odwrotny. Wszystko to odbywa się
niewidocznie dla użytkownika; działające programy również nie dostrzegają różnicy.
Ponieważ czas dostępu do dysku twardego jest wielokrotnie dłuższy ( kilka ms) niż do pamięci
operacyjnej ( kilka ns), szybkość działania zmniejsza się.

System plików

System plików zarządza danymi zapisanymi na dysku, ma on strukturę hierarchiczną.


Natywne systemy plików ext2,ext3,ext4,inne: ReiserFS, XFS, JFS
W systemie Linux jako separator w ścieżkach używa się ukośnika /.
Ścieżki można podawać bezwzględnie ( ze znakiem / na początku) lub względem katalogu
bieżącego (./).
Po zalogowaniu do systemu każdy użytkownik znajduje się w swoim katalogu domowym.
Linux nie adresuje napędów dyskowych i partycji za pomocą liter, lecz łączy je wszystkie w
jeden system plików. Wydawać by się mogło, że widzimy jeden dysk z pojedynczym systemem
plików. Wymienne nośniki danych ( dyskietka, płyta CD-ROM) muszą być najpierw
„zamontowane „ w systemie ( poleceniem mount przez administratora), aby można było z
nich skorzystać.
Zarządzanie plikami różni się zasadniczo w systemach DOS i Linux. DOS tworzy tablicę
alokacji plików FAT na każdym dysku w celu zapisywania informacji o wolnych i zajętych
sektorach. W katalogu DOS - owym oprócz nazw plików znajdują się także ich atrybuty, takie
jak rozmiar czy data utworzenia. W systemie Linux każdemu plikowi jest przydzielony i-węzeł
( ang. i-node), w którym są zapisane najważniejsze atrybuty takie jak nazwa, prawa dostępu i
adres pierwszego bloku. W katalogach są jedynie odwołania do odpowiednich i-węzłów.
4
Nazwy plików mogą mieć maksymalnie 256 znaków (ext2). Należy pamiętać, że system
rozróżnia małe i duże litery, a kropka na początku nazwy nadaje plikowi atrybut „ukryty” tzn.
nie jest wyświetlany komendą ls bez dodatkowych opcji. W nazwach plików nie należy
stosować znaków specjalnych ( *,?, /) oraz kreski poziomej jako pierwszego znaku w nazwie,
gdyż posiadają one specjalne znaczenie dla powłoki i mogą spowodować zupełnie
niezamierzone działanie poleceń.

Obecny układ katalogów jest wynikiem ewolucji i łączenia elementów składowych różnych dystrybucji
systemu. Znajomość przeznaczenia każdego z katalogów pozwala także zachować bardzo potrzebny porządek na
dyskach systemowych. Wykorzystanie poszczególnych katalogów jest następujące:

/bin - tu zapisane są wszystkie podstawowe programy, bez których niemożliwy jest start i późniejsza
praca systemu ( np. bash)
/boot - zawiera jądro systemu oraz pliki niezbędne do poprawnego uruchomienia i pracy systemu
/dev - w systemach uniksowych katalog ten zawiera pliki reprezentujące poszczególne komponenty
sprzętowe naszej maszyny (modem, napęd dyskietek, twarde dyski itp.)
/etc - tu są zapisane pliki konfiguracyjne wszystkich zainstalowanych w systemie programów
/home - tu tworzone są katalogi domowe użytkowników. Katalog ten może zostać umieszczony na
osobnej, dedykowanej partycji. Pozwala to dokonywać znaczących modyfikacji w systemie (łącznie z
całkowitą reinstalacją) bez narażania użytkowników na stratę ich danych.
/lib - gromadzi biblioteki współdzielone przez zainstalowane w systemie aplikacje
/lost+found - tu zapisywane są pliki i katalogi odtworzone podczas naprawiania systemu plików.
/mnt –w tym katalogu proponuje się podmontowywać zewnętrzne systemy plików (pendrive, napęd
CD-ROM). Jest to jedynie sugestia unifikująca metodologię korzystania z nośników zewnętrznych, bo
system pozwala na podmontowanie tych urządzeń w dowolnym punkcie struktury katalogów.

5
/opt - odpowiednik Program Files z Windows. Tu zwykle instalowane są poszczególne komercyjne
programy, a także inne aplikacje (StarOffice itd.)
/proc - podczas pracy system tworzy tu pliki umożliwiające kontrolę jego działania. Znajdują się tam
pliki, w których zapisane są informacje o działaniu systemu, np. interrupts - wykorzystywane
przerwania, ioports - porty, uptime - obciążenie systemu, net/ - wszystko, co jest związane z siecią i
kartą sieciową
/root - katalog domowy administratora systemu.
/sbin - zawiera programy umożliwiające administratorowi zarządzanie pracą systemu. Zwykli
użytkownicy nie mają potrzeby korzystania z zapisanych tu zbiorów.
/tmp - katalog przeznaczony do tworzenia i przechowywania przez programy plików tymczasowych
(Kosz z Windows)
/usr - bardzo duży objętościowo katalog zawierający pliki i biblioteki tworzące środowisko X
Window i inne podstawowe aplikacje uniksowe, (podkatalog bin). Tutaj też zapisane są pliki
kompilatora, programy sieciowe (telnet, ftp, irc, mail, tin, lynx), demony sieciowe: serwer httpd, ftpd,
telnetd, inetd, identd, sendmail (podkatalog sbin). Pliki źródłowe jądra systemu zapisane są w
podkatalogu src
/var - tutaj przechowywane są pliki dzienników systemowych (podkatalog log), w których zapisywane
są poszczególne zdarzenia oraz pliki blokujące (lock). Tu także trafia poczta przychodząca do
użytkowników naszego systemu oraz tworzone są kolejki: poczty wychodzącej (mqueue) i
drukowania (spool).

Prawa dostępu i prawa własności

Charakterystyczną cechą systemu uniksowego są prawa dostępu do plików i katalogów – każdy z nich
przyporządkowany jest użytkownikowi oraz grupie, do której należy.
Każdy plik utworzony w systemie Linux posiada oprócz podstawowych informacji typu nazwa, data
utworzenia pliku, także identyfikator użytkownika, który go utworzył oraz identyfikator jego grupy.
Aby chronić pliki w systemie plików przed niepożądanym dostępem, dla każdego z nich zapisywane
są oddzielne prawa dostępu.

W systemie Linux operator (root) systemu ogranicza użytkownikom prawa dostępu do plików i
katalogów ustawiając określone uprawnienia. Istnieją trzy podstawowe rodzaje uprawnień:
 r - prawo do odczytu ( umożliwia użytkownikom czytanie określonego pliku)
 w – prawo do zapisu ( umożliwia użytkownikom zmianę zawartości pliku)
 x – prawo do wykonania ( umożliwia użytkownikom wykonanie danego pliku)

Urządzenia
W systemie Linux oprócz danych i wykonywalnych programów, również katalogi i fizyczne
elementy komputera „traktowane” są jak pliki. Oznacza to, że istnieją pliki reprezentujące
klawiaturę, konsolę, drukarkę, CD-ROM, dysk twardy czy napęd dyskietek. Te specjalne pliki
to urządzenia w systemie (ang. devices) i znajdują się w katalogu /dev.
Przykładowa lista plików specjalnych
/dev/ttyN konsola wirtualna
/dev/hda pierwszy dysk IDE
/dev/hda1 pierwsza partycja pierwszego dysku IDE
/dev/sda pierwszy dysk SCSI lub sata
/dev/sda1 pierwsza partycja pierwszego dysku sata
/dev/sdb1 pierwsza partycja drugiego dysku sata
/dev/lp0 pierwszy port drukarki (LPT1)
/dev/null urządzenie puste ( całe wyjście znika)
/dev/fd0 pierwsza stacja dyskietek

You might also like