background image

1

Systemy operacyjne i sieci 

komputerowe

Prowadzący:
mgr inż. Łukasz 

Tabała

Semestr III

background image

2

System komputerowy

SYSTEMEM KOMPUTEROWYM – 

nazywamy połączenie komputera z 

systemem operacyjnym. System 

taki ma budowę warstwową i 

składa się z:
a) użytkowników
b) aplikacji
c) systemu operacyjnego
d) sterowników
e) sprzętu komputerowego
f) dodatkowo mikroprocesora, 

napędów i pamięci masowych, 

urządzeń peryferyjnych, karty 

rozszerzeń oraz pamięci 

operacyjnej.

background image

3

System operacyjny

SYSTEM OPERACYJNY jest programem, który działa
jako pośrednik między użytkownikiem komputera a
sprzętem komputerowym. Zadaniem systemu
operacyjnego jest tworzenie środowiska, w którym 
użytkownik może wykonywać programy. Podstawowym
celem systemu operacyjnego jest zatem 

spowodowanie,

aby system komputerowy był ‘wygodny’ w użyciu. 

Drugi

cel stanowi wydajna eksploatacja sprzętu
komputerowego.

background image

4

System operacyjny c.d.

System operacyjny nadzoruje i koordynuje posługiwanie się sprzętem przez 

różne programy użytkowe, które pracują na zlecenie różnych użytkowników. 

Częściami składowymi systemu komputerowego są: sprzęt, oprogramowanie 

i dane. System operacyjny dostarcza środków do prawidłowego użycia tych 

zasobów w działającym systemie komputerowym. System operacyjny tworzy 

środowisko, w którym inne programy mogą wykonywać pożyteczne prace. 

Możemy uważać system operacyjny za dystrybutora zasobów. System 

operacyjny pełni rolę zarządcy pozostałymi elementami systemu 

komputerowego i przydziela je poszczególnym programom i użytkownikom 

wówczas, gdy są one nieodzowne do wykonywania ich zadań. Ponieważ 

często może dochodzić do konfliktowych zamówień na zasoby, system 

operacyjny musi decydować o przydziale zasobów poszczególnym 

zamawiającym, mając na względzie wydajne i harmonijne działanie całego 

systemu komputerowego. System operacyjny jest programem sterującym

Program sterujący nadzoruje działanie programów użytkownika, 

przeciwdziała błędom i zapobiega niewłaściwemu użyciu komputera. Zajmuje 

się zwłaszcza obsługiwaniem i kontrolowaniem pracy urządzeń we-wy. 

Najważniejszym celem systemu operacyjnego jest wygoda użytkownika. 

Drugim celem jest efektywne działanie systemu komputerowego. Ten cel jest 

szczególnie ważny w rozbudowanych, wielodostępnych systemach z 

podziałem czasu. Systemy tego rodzaju są zazwyczaj bardzo kosztowne, 

toteż jest pożądane, aby były maksymalnie wydajne.

background image

5

Wielodostępność

W klasycznym przetwarzaniu danych komputer centralny 
(ang.mainframe) wykonuje żądane zadania. Łącza szeregowe 
dołączają do tego komputera terminale tekstowe (proste tekstowe 
konsole z klawiaturami). Wielu użytkownikom, korzystającym z 
jednego komputera centralnego, jest potrzebny system kontroli i 
dostępu, aby osiągnąć sprawiedliwy podział wspólnych zasobów. 
Nazwy użytkowników, znane także jako identyfikatory 
użytkowników
, tworzą podstawę takiego systemu. Każdy 
użytkownik ma przypisany identyfikator, który musi podać 
systemowi wraz ze związanym z nim hasłem (ang. Password), 
zgodnie z procedurą zwaną rejestrowaniem się (logowaniem) w 
systemie. Na podstawie identyfikatorów użytkowników i
związanych z nimi praw dostępu (ang. Access privileges) lub 
uprawnień (ang. Permissions) system zarządza dostępem do 
plików i innych zasobów. System, który zapewnia taki sposób 
zarządzania wieloma użytkownikami, nazywa się systemem 
wielodostępnym.

background image

6

Wielodostępność c.d.

Unix/Linux jest typowym systemem wielodostępnym, w którym 

każdemu użytkownikowi jest przydzielany identyfikator oraz jeden 

lub więcej identyfikatorów grup. Użytkownik może jednocześnie 

należeć do wielu grup. Jest to praktyczne, jeśli angażuje się on w 

wiele projektów albo musi mieć dostęp do danych z wielu dziedzin. 

Każdy system wielodostępny ma jednego uprzywilejowanego 

użytkownika, który administruje system. Użytkownik ten nazywa się 

administratorem lub nadzorcą systemu (ang. Superuser). W 

systemie Unix/Linux ten uprzywilejowany użytkownik ma nazwę 

root i numeryczny identyfikator 0. Administrator może tworzyć 

nowych użytkowników oraz nadawać uprawnienia. Obecnie zamiast 

komputera centralnego z wieloma terminalami i użytkownikami 

pojawia się sytuacja gdzie, pojedynczy użytkownik intensywnie 

wykorzystuje jeden lub więcej komputerów. Komputery te są 

połączone między sobą oraz z innymi komputerami i serwerami 

siecią, co pozwala na łatwą wymianę danych. Tendencje do 

wykorzystywania wielu komputerów w tym samym czasie przez 

jednego użytkownika w celu umożliwienia jednoczesnego dostępu 

do różnych programów i danych prowadzi do korzystania z 

terminali wirtualnych (ang. Virtual terminals). Pozwalają one 

użytkownikowi logować się w tym samym komputerze wielokrotnie, 

mimo iż fizycznie ma dostępny tylko jeden monitor.

background image

7

Wielozadaniowość

Pod pojęciem wielozadaniowości (multitasking) 

rozumieć należy quasi-równoległe wykonywanie 

więcej niż jednej aplikacji . Ponieważ jednak procesor 

w rzeczywistości nie jest w stanie wykonywać 

równocześnie wielu zadań , w bardzo krótkich 

odstępach czasu wykonuje on kolejno po fragmencie 

każdego z uruchomionych właśnie programów. 

Najmniejsza jednostka, która może być obsługiwana 

równolegle w takim systemie, jest nazywana 

procesem ( ang. Process) bądź zadaniem (ang. 

Task). W systemie Unix/Linux, który jest 

jednocześnie systemem wielodostępnym i 

wielozadaniowym, mówimy ogólnie o procesach. 

Procesy wykonujące się równolegle w tym systemie 

mogą być programami różnych użytkowników albo 

programami zawsze działającymi w tle (demonami).

background image

8

Zarządzanie procesami

Pod pojęciem zarządzania procesami rozumiemy 

tworzenie, usuwanie, wstrzymywanie i wznawianie 

procesów. System operacyjny dostarczać również musi 

mechanizmy umożliwiające komunikację pomiędzy 

poszczególnymi procesami, jak również obsługę 

zakleszczeń (blokad).

Definicja procesu.
Proces
 – program w trakcie wykonywania.

Proces jest pojęciem aktywnym (w trakcie działania), 

natomiast program jest pojęciem pasywnym (zapis 

pewnych rozkazów na nośniku danych).

Wykonywanie procesu musi przebiegać sekwencyjnie, 

co oznacza, że w danym momencie na zamówienie 

procesu może być wykonany tylko jeden rozkaz kodu 

programu.

background image

9

Zarządzanie procesami cd.

Proces może znajdować się w jednym z pięciu stanów działania:

 - nowy - to taki który został właśnie utworzony,

 - aktywny - to ten którego instrukcje są aktualnie przetwarzanie przez procesor,

 - oczekiwanie - proces oczekuje na wystąpienie jakiegoś zdarzenia np. ukończenie 

operacji wejścia-wyjścia (wpisanie danych z klawiatury, zakończenie odczytu pliku z 

dysku, zakończenie wydruku), lub oczekuje pewnych danych, które będą dostępne 

po zakończeniu działania innego procesu np. wynik obliczeń,

 - gotowy - proces który oczekuje na przydział czasu procesora,

 - zakończony - to taki którego działanie zakończyło się.

Ważne jest, aby pamiętać, że systemie jednoprocesorowym tylko jeden proces może 

być aktywny, natomiast wiele procesów może być w stanie oczekiwania lub gotowy.

W systemie jednoprocesorowym mechanizm wielozadaniowości (podział czasu 

procesora) uzyskuje się dzięki przełączaniu wykonywania procesów przez procesor. 

Przełączanie to następuje tak często, że użytkownik ma złudzenie pracy z kilkoma 

programami jednocześnie.

Aby maksymalnie wykorzystać czas pracy procesora, system operacyjny stara się 

tak zarządzać pracą procesów, aby w momencie kiedy aktywny proces (który może 

być tylko jeden w systemie jednoprocesorowym) musi oczekiwać na jakieś zdarzenie 

(np. operacje wyjścia-wejścia), przełącza się go w stan „oczekiwanie”, a aktywuje 

się inny proces z kolejki procesów oczekujących na przydział pracy procesora. W ten 

sposób nie marnuje się czasu pracy jednostki centralnej. Mechanizm ten jest 

podstawą wielozadaniowości i zwany jest wieloprogramowaniem.

background image

10

Zarządzanie pamięcią 
operacyjną

Pamięć odgrywa główną rolę w działaniu współczesnych systemów 

komputerowych. Pamięć operacyjne jest tablicą słów lub bajtów, z 

których każdy ma przypisany konkretny adres. Pamięć operacyjne jest 

jedynym typem pamięci, który może być adresowany przez system 

bezpośrednio, wszystkie inne operacje (jak np. czytanie, czy zapis na 

dysk, wykonywanie rozkazów procesu) przebiegają z wykorzystaniem 

pamięci operacyjnej. Aby program był wykonany musi on zostać 

pobrany z dysku i zapisany do pamięci operacyjnej, dopiero wtedy 

możliwe jest uruchomienie i wykonanie rozkazów programu (procesu).

Główne zadania systemu operacyjnego dotyczące zarządzania 

pamięcią operacyjną to:

 - ewidencja zajętych obszarów pamięci, wraz z informacją który 

proces jest w posiadaniu tych obszarów,

 - decydowanie które procesy czy dane mają być załadowany do 

wolnych obszarów pamięci,

 - przydzielanie i zwalnianie obszarów pamięci stosownie do 

aktualnych potrzeb systemu komputerowego.

background image

11

Zarządzanie pamięcią 
zewnętrzną

Pamięć zewnętrzna jest głównym źródłem magazynowania 

danych dla współczesnych systemów komputerowych. 

Ponieważ pamięć operacyjna jest z reguły bardzo ograniczona 

(pojemnościowo), dlatego do składowania danych używa się 

pamięci zewnętrznych. Są one z reguły dużo wolniejsze niż 

pamięć operacyjna, jednakże mają tę zaletę, że w przeciwności 

do pamięci operacyjnej dane w niej zapisane nie „giną” po 

wyłączeniu/zaniku napięcia. 

Główne zadania systemu operacyjnego odnośnie zarządzania 

pamięcią zewnętrzną to:

 - utrzymywanie informacja na temat obszarów wolnych w 

dostępnej pamięci zewnętrznej,

 - przydzielanie i zwalnianie obszarów tej pamięci,

 - kontrola stanu funkcjonowania pamięci zewnętrznej (błędy 

zapisu/odczytu).

background image

12

Zarządzanie plikami

Dla wygody użytkownika, system operacyjny realizuje abstrakcyjny model 

plików, tworząc, niezależnie od typu pamięci zewnętrznej, jednolity 

systemów plików i katalogów do przechowywanie danych. Każdy z nośników 

posiada specyficzne cechy (niektóre również różną strukturę), więc 

bezpośredni dostęp do tych urządzeń byłby utrudniony. Dlatego system 

operacyjny przejmuje nad nimi kontrolę i komunikuje się z tymi 

urządzeniami przy pomocy sterowników – z jednej strony, z drugiej 

udostępniając użytkownikom strukturę plików i katalogów. SYSTEM 

PLIKÓW – tworzy organizację danych i pozwala z nich korzystać w sposób 

wygodny dla użytkownika.

Najważniejsze zadania systemu operacyjnego w związku z zarządzaniem 

plikami to:

 - tworzenie i usuwanie plików i katalogów,

 - umożliwianie wykonywania podstawowych operacji na plikach i katalogach 

(edycja, kopiowanie, usuwanie, tworzenie, archiwizacja, pakowanie),

 - odwzorowywanie plików na obszarze pamięci zewnętrznej,

 - składowanie (zapis) plików na nośnikach pamięci zewnętrznej.

background image

13

Urządzenia

Każdy system komputerowy korzysta z różnorodnych urządzeń zewnętrznych, 

które generalnie można podzielić na trzy grupy:

 - urządzenia pamięci - dyski, taśmy, cd-romy, dyskietki itp.,

 - urządzenia interfejsu - monitor, klawiatura, myszka itp.,

 - urządzenia przesyłania danych - modem, karta sieciowa itp.

Większość współczesnych systemów operacyjnych tworzy w jądrze podsystem 

wejścia-wyjścia, które oddziela to złożone zagadnienie od reszty systemu 

operacyjnego. Ze względy na różnorodność sprzętowych modułów wejścia 

wyjścia, zaobserwować można podejście wykorzystania modułów sterujących 

przygotowanych przez producentów sprzętu dla konkretnego systemu 

operacyjnego (drivery, sterowniki, device controllers), które odpowiadają za 

komunikację systemu operacyjnego z urządzeniami wejścia-wyjścia. 

Udostępniają one na potrzeby systemu operacje możliwe do przeprowadzenia 

na konkretnym urządzeniu, np. dla drukarek mogą to być: wysunięcie papieru, 

przewinięcie strony papieru (dla papieru składanki), pozycjonowanie głowicy, 

druk w kolorach itp.

Podstawowe elementy sprzętowe, które również zaliczamy do urządzeń 

wejścia-wyjścia, a które występują w każdym systemie komputerowych do 

porty i szyny danych.

.

background image

14

Ochrona zasobów

Jeżeli system operacyjny jest przewidziany do pracy z 

wieloma użytkownikami (system sieciowy), wtedy 

zachodzi konieczność by chronił on poszczególne 

elementy pracy jednego użytkownika, przed skutkami 

pracy innych. W skład takiej ochrony oprócz oczywistej 

ochrony i nadzorowania dostępu do plików i katalogów 

(danych), wchodzi również zagadnienie ochrony 

procesów uruchomionych przez poszczególnych 

użytkowników systemu. System chroni również dostęp 

do pamięci operacyjnej, w której przechowywane są 

dane wielu użytkowników systemu.

Ogólnie mówiąc ochrona jest mechanizmem 

nadzorowania dostępu programów, procesów i 

użytkowników do zasobów zdefiniowanych przez system 

komputerowy.

background image

15

Interpretatory poleceń

System interpretacji poleceń jest jednym z 

najważniejszych modułów z jakich składa się system 

operacyjny. W systemach UNIX/Linux interpreter 

poleceń określany jest również jako powłoka (ang. 

shell), która jest używana m. in. w trakcie rejestracji 

użytkownika w systemie. Nazwa wywodzi się stąd, 

że program ten pełni rolę warstwy pośredniczącej 

między użytkownikiem a systemem operacyjnym. 

Pozwala na pełną, interakcyjną pracę z systemem, i 

jest zarówno środowiskiem roboczym, jak i 

interfejsem, za pomocą którego użytkownik 

porozumiewa się z komputerem. Powłoka systemu 

służy nie tylko do uruchamiania poleceń i 

programów. Jest ona również potężnym, 

skryptowym językiem programowania, dającym 

użytkownikowi powłoki ogromne możliwości.  

background image

16

Przegląd interpretatorów 
poleceń

Pierwszym interpreterem napisanym dla systemu UNIX był sh, czyli 

powłoka Bourne'a (ang. Bourne shell). Program ten odznacza się 

dużą szybkością działania i z tego względu jest wciąż powszechnie 

wykorzystywany do uruchamiania skryptów. Jego funkcjonalność jest 

niestety mocno ograniczona podczas pracy interaktywnej ze względu 

na brak licznych udogodnień, które oferują nowocześniejsze powłoki. 
Znacznie wygodniejszy jest drugi klasyczny interpreter csh (ang. C 

shell). Program csh oferuje m.in. historię poleceń, aliasy, i sterowanie 

pracami. Składnia złożonych poleceń jest bardzo zbliżona do języka 

C (w którym został napisany) i różni się znacząco od składni 

stosowanej w sh. 
Trzecim klasycznym interpreterem jest ksh (ang. Korn shell), 

stanowiący rozszerzenie programu sh o wiele nowych funkcji. Z 

założenia, ksh przeznaczony był dla administratorów i raczej nie 

zdobył uznania zwykłych użytkowników ze względu na 

skomplikowaną składnię. 
Obecnie największą popularność cieszą się nowoczesne interpretery 

łączące duże możliwości z łatwością obsługi. Należy tu wymienić 

powłoki zsh i bash (ang. Bourne Again shell), powstałe z rozwinięcia 

sh, oraz powłokę tcsh. Powłoka zsh staje się powoli standardem 

systemu UNIX, zaś bash jest od samego początku podstawowym i 

domyślnym interpreterem Linuxa.

background image

17

Praca w tle

Pracując  z powłoką systemu Linux można uruchamiać wiele 

zadań (procesów) działających równolegle. Zadania można 

podzielić na:

 pierwszoplanowe - zadania pobierające dane ze 

standardowego wejścia i wysyłające rezultaty na standardowe 

wyjście

 drugoplanowe (pracujące w tle) – pozostałe zadania

Powłoka systemu przypisuje do każdego takiego procesu 

unikalny numer zadaniaktórego można użyć jako argument 

dla poleceń obsługujących zadania.
Nowe zadania domyślnie pracują jako pierwszoplanowe. Aby 

dane zadanie uruchomić jako zadanie pracujące w tle należy 

użyć na końcu wiersza polecenia znak & (ang. ampersand). 

Jest to szczególnie użyteczne do uruchamiania programów, 

które nie wymagają interakcji z użytkownikiem, a 

jednocześnie przetwarzają duże ilości danych.

background image

18

Praca w tle cd.

Demony

Demony, inaczej usługi, są pewnym rodzajem programów, które są uruchamiane 

zazwyczaj przy starcie systemu, i działają potem cały czas w tle, zużywając 

minimalne zasoby. W każdej chwili mogą przyjąć od innego programu polecenie 

(żądanie), i je w jakiś sposób wykonać. Demonem jest np. serwer http, który cały 

czas jest uruchomiony w tle, a w momencie gdy przychodzi żądanie od 

przeglądarki wysyła odpowiedni plik, lub wykonuje jakąś akcję. Demon może 

również obsługiwać programy działające na tym samym komputerze.

Kolejną cechą charakterystyczną demonów, jest to że po zamknięciu ich w 

zwykły sposób, są automatycznie ponownie uruchamiane, np. jeżeli w serwerze 

wystąpi błąd, to zostanie on znowu uruchomiony, i dzięki temu będzie dalej 

możliwe łączenie się z daną usługą. Do zatrzymania działania demona służą 

specjalne skrypty, które znajdują się zazwyczaj w katalogu:
/etc/init.d/ 
Skrypty te mogą być uruchamiane z następującymi opcjami:
 - start - uruchamia demona 
 - stop - zatrzymuje demona 
 - restart - zatrzymuje, i ponownie uruchamia demona; przydatne np. w 

przypadku gdy   zmieniona została konfiguracja danego demona 

Niektóre mogą przyjmować również inne opcje, jednak te trzy są standardowe.

background image

19

Licencja GNU

Powszechna Licencja Publiczna GNU (GNU General Public License) jest jedną z 

licencji wolnego oprogramowania, która została sformułowana w 1988 przez 

Richarda Stallmana i Ebena Moglena na potrzeby Projektu GNU, na podstawie 

wcześniejszej Emacs General Public License. Wersja 2 licencji GNU GPL została 

wydana w roku 1991.

Celem tej licencji jest przekazanie użytkownikom praw do uruchamiania programu w 

dowolnym celu, analizowania działania programu i dostosowywania go do swoich 

potrzeb, kopiowania oraz udoskonalania i publikowania własnych poprawek 

programów i kodu źródłowego tych programów, których programiści postanowili 

wydać je w oparciu o tę licencję.

Większość licencji na oprogramowanie pomyślana jest po to, aby odebrać 

użytkownikowi możliwość swobodnego udostępniania innym i zmieniania danego 

software'u. Natomiast w wypadku GNU GPL celem jest zagwarantowanie 

użytkownikowi swobody udostępniania i zmieniania tego wolnego oprogramowania, 

a więc danie pewności, iż oprogramowanie jest wolno dostępne dla wszystkich 

użytkowników. 

Licencja ma zapewniać użytkownikom programów komputerowych prawo do:
 - korzystania z programu w dowolnym celu 
 - badania, w jaki sposób program działa i modyfikowania go 
 - prawo do dystrybucji kopii 
 - prawo do ulepszania programu i obowiązek upubliczniania tych poprawek 

Tekst licencji znajduje się na stronie 

http://www.gnu.org.pl/text/licencja-gnu.html

background image

20

Konsole wirtualne i zdalne

Wirtualne terminale (Virtual Terminals) pozwalają 

użytkownikowi na logowanie się w tym samym 

komputerze wielokrotnie, mimo iż fizycznie ma 

dostępny tylko jeden monitor. Inaczej mówiąc konsola 

wirtualna emuluje monitor i klawiaturę. W systemach 

Linuxowych standardowo występuje 7 wirtualnych 

konsol, lecz można rozszerzyć ich liczbę do 64. Konsole 

5 lub 7 ( w zależności od dystrybucji) są 

wykorzystywane dla środowiska X Windows.

Zdalne terminale pozwalają na logowanie się z odległym 

komputerem poprzez sieć za pomocą odpowiedniego 

oprogramowania (telnet, ssh). Sesja ssh, w odróznieniu 

do telnet, jest w 100% zaszyfrowana zachowując przy 

tym bezpieczeństwo haseł. Komputer stojący po drugiej 

stronie jest serwerem tych aplikacji. 

background image

21

Użytkownicy i grupy

W systemie Linux każdy plik musi posiadać właściciela. Każdy 

użytkownik posiada niepowtarzalny numer identyfikacyjny UID. 

Użytkownik jest czlonkiem co najmniej jednej grupy tzw. grupy 

logowania. Nazwa tej grupy jest identyczna z nazwą konta danego 

użytkownika. Grupa jest to zespół użytkowników współpracujących 

ze sobą i wzajemnie udostępniających sobie pliki. Każda grupa 

musi mieć unikalną nazwę i numer identyfikacyjny grupy GID. 

Dostępność danego programu lub pliku jest ustalona w oparciu o 

numer UID i GID. Uprawnienia użytkowników są różne w zależności 

od tego czy jest to zwykły użytkownik, czy administrator (root). 

Zwykły użytkownik ma dostęp do plików, których jest właścicielem 

lub posiada odpowiednie uprawnienia. Użytkownik należy do 

grupy, która jest właścicielem pliku lub też plik jest dostępny dla 

wszystkich użytkowników. Operator systemu (root) ma dostęp do 

wszystkich plików i może uruchamiać wszystki9e programy w 

systemie, niezależnie od tego, czy jest on właścicielem pliku czy 

też nie. Tylko root może tworzyć nowe grupy i przydzielać do nich 

nowych użytkowników

background image

22

Użytkownicy i grupy cd.

Aby konto użytkownika działało poprawnie należy ustawić kilka rzeczy:

Katalogi domowe – zawierają wszystkie pliki konfiguracyjne 

uzytkownika oraz jego prywatne dokumenty. Użytkownik pracuje w 

swoim spersonalizowanym środowisku. Katalogi te są tworzone w 

katalogu /home, a ich nazwa zazwyczaj odpowiada nazwie konta 

użytkowników (login name). Katalog domowy uzytkownika root jest 

tradycyjnie w /root. Katalogi domowe nie muszą być umieszczone 

bezpośrednio w katalogu /home.

Hasła – Każde konto musi posiadać hasło, które powinno być na tyle 

skomplikowane, aby zwiększyć bezpieczeństwo systemu. 

Powłoki (shells) – Pierwszy program z którym użytkownik się zetknie 

jest nazwany powłoką. Linux zawiera wiele powłok, z których możemy 

sobie wybrać najbardziej nam odpowiadającą – większość z nich jest 

opisana w pliku /etc/shells

Skrypty uruchomieniowe – Każdy użytkownik może posiadać swoje 

własne pliki konfiguracyjne. System powinien zapewniać 

użytkownikowi dowolne skonfigurowanie swojego środowiska, nawet 

wtedy, kiedy inni są zalogowani do systemu. Plik konfiguracyjny jest 

częścią skryptu powłoki – serii komend, które są wykonywane podczas 

logowania do systemu. W przypadku powłoki bash jest to plik .bashrc 

(autoexec.bat w DOS-ie)

Poczta – Uruchomienie możliwości wysyłania i odbierania wiadomości 

e-mail. Skrzynki pocztowe są przechowywane w katalogu 

/var/spoool/mail. Każdy użytkownik posiada skrzynkę pocztową, która 

bazuje na jego nazwie użytkownika.

background image

23

Logowanie

Podczas logowania do systemu użytkownicy wpisywali hasło 

ich wpis był zaszyfrowany np.  algorytmem DES (Data 

Encryption Standard). Zaszyfrowana wartość była następnie 

porównywana z wpisem hasła użytkownika. Jeżeli obie 

zaszyfrowane wartości były identyczne, użytkownik mógł 

wejść do systemu. Szybkie komputery sprawiły, że dość 

szybko można było złamać takie hasło. Doprowadziło to do 

konieczności zmienienia natury haseł: wprowadzono więc 

hasła ukryte. Mechanizm haseł ukrytych polega na usunięciu 

wpisów zaszyfrowanych haseł z pliku haseł (passwd) i 

umieszczeniu ich w osobnym pliku o nazwie shadow. Właściwy 

plik hasła nadal może być odczytany przez dowolnego 

użytkownika systemu, a wpis zaszyfrowanego hasła tylko 

przez użytkownika root. Innym rozwiązaniem było 

udoskonalenie algorytmu do szyfrowania haseł i 

wykorzystywano schemat MD5. Doprowadziło to do 

zwiększenia trudności złamania haseł, które w połączeniu z 

hasłami ukrytymi sprawdzały się całkiem nieźle. 

background image

24

Uwierzytelnianie

background image

25

Podstawowe usługi

init

Jedna z najważniejszych usług w systemie Unix oferowana jest przez 

program initinit jest pierwszym uruchomionym przez jądro procesem, 

ostatnim stadium bootowania jądra. init po uruchomieniu dokańcza 

proces bootowania poprzez wykonanie odpowiednich skryptów (np. 

zawierających sprawdzenie i zamontowanie systemów plików, 

uruchomienie demonów).

Dokładna lista czynności wykonywanych przez init różni się zależnie od 

systemu. init zazwyczaj udostępnia tryb jednego użytkownika, w którym 

nikt nie może się zalogować, a root korzysta z powłoki na konsoli; 

normalnie system pracuje w trybie wielu użytkowników. W niektórych 

systemach istnieje podział na poziomy pracy; tryb jednego użytkownika i 

wielu użytkowników to dwa poziomy pracy, mogą istnieć również 

dodatkowe, np. tryb, w którym X jest domyślnie uruchamiane.

Podczas normalnego działania init sprawdza czy działa getty (aby 

umożliwić użytkownikom zalogowanie), adoptuje osierocone procesy 

(których rodzic umarł; w Uniksie wszystkie procesy muszą tworzyć 

pojedyncze drzewo - sieroty muszą być adoptowane). 

Podczas zamykania systemu init jest odpowiedzialny za zabicie 

wszystkich procesów, oraz inne skonfigurowane rzeczy. 

background image

26

Podstawowe usługi cd

Logowanie z terminala

Logowanie z terminala (via łącza szeregowe) oraz konsolę (jeżeli X nie 

działa) obsługiwane jest przez program gettyinit dla każdego z 

terminali uruchamia osobny proces gettygetty odczytuje nazwę 

użytkownika po czym uruchamia program login, który odczytuje hasło. 

Jeżeli nazwa użytkownika i hasło są poprawne, login uruchomi powłokę. 

Po zakończeniu pracy powłoki (wylogowaniu się użytkownika), lub w 

przypadku niezgadzającego się hasła init uruchomi nowy proces getty

Jądro nie wie co to "logowanie się", jest to zależne od programów 

systemowych.

Syslog

Jądro oraz programy systemowe produkują błędy, ostrzeżenia i inne 

wiadomości. Czasami wymaga się aby była możliwość późniejszego 

przeglądu tych wiadomości, więc powinny być zapisywane do pliku. 

Troszczy się o to syslog. Można go skonfigurować do sortowania 

wiadomości, odrzucania, lub zapisywania wymaganych, zapisywania 

wiadomości do kilku plików ze względu na ważność, itp. Np. wiadomości 

wysyłane przez jądro są najczęściej zapisywane do osobnego pliku, 

ponieważ są one często ważniejsze i powinny być regularnie czytane, by 

dostrzec kłopoty. 

background image

27

Podstawowe usługi cd

Okresowe wykonywanie poleceń: cron i at

Użytkownicy i administratorzy systemu często muszą wykonywać 

polecenia co pewien okres. Dla przykładu: administrator mógłby 

chcieć czyścić co określony czas katalogi zawierające pliki 

tymczasowe (/tmp i /var/tmp). Zapobiega to przepełnieniu dysku, 

gdyż nie wszystkie programy poprawnie sprzątają po sobie.

W tym celu powstał program cron. Każdy użytkownik posiada 

swój plik crontab, w którym można zapisywać instrukcje 

uruchamiania okresowego. Demon cron troszczy się o to aby 

wykonać dane polecenie o wskazanym czasie.

Polecenie at jest podobne do programu cron, różni się tym, że 

polecenie jest uruchamiane tylko raz, w zadanym terminie; nie 

jest powtarzane. 

Inne usługi

X Window System, usługi sieciowe (DNS, DHCP, Samba), poczta, 

drukowanie, zdalne logowanie (telnet, ssh, rlogin), sieciowe 

systemy plików (NFS) itp.

background image

28

Poziomy uruchomienia 
(runlevels)

W systemie GNU/Linuks jest kilka tzw. poziomów uruchamiania, 

np.

1.

poziom 0 - wyłączenie systemu 

2.

poziom 1 - tryb jednego użytkownika (inaczej tryb 

administratora - używany do rozwiązywania poważnych 

problemów z systemem) 

3.

poziom 6 - restart systemu (ponowne uruchomienie) 

Poziomy od 2 do 5 są używane do zwykłej pracy; w niektórych 

dystrybucjach mają one przypisane różne znaczenie (np. tryb 

pracy lokalny, bez możliwości logowania zdalnego, tryb 

wieloużytkownikowy ale bez środowiska graficznego itp.), zaś w 

innych nie mają przypisanego żadnego domyślnego znaczenia, 

jak w Debianie, gdzie domyślnym poziomem uruchomienia jest 2, 

a 3, 4 i 5 każdy może dowolnie ustawić.

Każdy runlevel ma przypisane demony, które będą uruchamiane, 

albo zatrzymywane przy przechodzeniu do tego poziomu 

uruchomienia. Dla przykładu, przy zamykaniu systemu (runlevel 

0), wszystkie demony będą zatrzymywane, a na samym końcu 

zostanie uruchomione polecenie halt. Ponadto jest określona 

kolejność, w jakiej demony są uruchamiane.

background image

29

Jądro systemu

Jądro systemu - inaczej kernel, jest to właśnie Linux. Jest to ta część 

oprogramowania, która

odpowiada za:

komunikację systemu z urządzeniami (sterowniki, które w Linuxie 

nazywane są modułami

uruchamianie i komunikację pomiędzy programami 

obsługę systemów plików - ma bezpośredni dostęp do dysków, i plików 

stworzenie środowiska uruchomieniowego dla programów (np. gdy 

program rezerwuje potrzebną ilość pamięci, to właśnie kernel przyznaje 

mu taki rejon, który nie jest przez żadne inne programy używany). 

Proces init

Podczas uruchamiania systemu, najpierw uruchamia się jądro, inicjując 

proces init. Init jest podstawowym procesem, który pełni funkcję 

procesu macierzystego wszystkich innych procesów. Z tego też powodu 

proces init nie może zostać zakończony wcześniej niż wszystkie inne 

programy (co w praktyce oznacza działanie od uruchomienia systemu 

operacyjnego do zakończenia jego działania). Proces init ma także inną, 

ważną funkcję. W systemach z rodziny UNIX inicjuje on wykonywanie 

skryptów startowych, w których zapisane są wszystkie czynności, jakie 

wykonać ma komputer przed umożliwieniem użytkownikowi 

zalogowania się w systemie.

background image

30

Ważne części jądra

Jądro Linuxa zawiera kilka podstawowych części: zarządzanie procesami, pamięcią, 

sterowniki urządzeń, obsługa systemu plików, zarządzanie siecią i wiele innych. 

background image

31

Ważne częći jądra - opis

Najprawdopodobniej najważniejszymi częściami jądra (bez nich nie działa nic) 

są moduły zarządzania pamięcią i procesami. Zarządzanie pamięcią polega 

na przypisywaniu obszarów pamięci fizycznej i swapu procesom, częściom 

jądra, oraz cache'owi urządzeń blokowych. Zarządzanie procesami polega na 

ich tworzeniu i implementacji wielozadaniowości poprzez zmianę aktywnie 

wykonywanego. 

Na najniższym poziomie jądro zawiera sterowniki obsługiwanych urządzeń. 

Ponieważ świat jest pełny różnorakiego sprzętu jest ich wiele. Istnieje wiele 

podobnych do siebie urządzeń różniących się w warstwie programowej. Te 

podobieństwo pozwala pogrupować sterowniki; w ten sposób członek danej 

klasy ma ustalony interfejs programowy, różni się natomiast wewnętrzną 

komunikacją między sprzętem a jądrem. Np. wszystkie sterowniki dysków 

posiadają funkcje do: inicjalizacji, odczytania, lub zapisania podanego 

sektora. 

Niektóre usługi oferowane przez jądro mają podobne właściwości, dzięki temu 

mogą zostać podzielone w abstrakcyjne klasy. Dla przykładu, różne protokoły 

sieciowe zostały połączone w jednym interfejsie programistycznym, 

bibliotece gniazd BSD. Innym przykładem jest wirtualny system plików (VFS), 

który obsługuje operacje plikowe niezależnie od systemu plików. Jeżeli jakiś 

proces chce skorzystać z systemu plików wszelkie żądania kierowane są do 

VFS, który następnie przekierowuje je do odpowiedniego sterownika.

background image

32

Moduły ładowalne, 

obsługa urządzeń

W jądrze Linux sterowniki do urządzeń mogą zarówno być wbudowane w samo jądro (wkompilowane moduły), albo 

też w osobnym pliku, i wtedy są one ładowane do pamięci komputera i uruchamiane w razie potrzeby, lub przy 

starcie systemu.

Zalety modułowej budowy

Kernel Linux jest makrokernelem, tzn. zajmuje się nie tylko komunikacją pomiędzy poszczególnymi procesami, ale 

także zarządzaniem pamięcią, obsługą urządzeń czy obsługą systemów plików. Dla porównania, w architekturze 

mikrokernela, sam kernel zajmuje się tylko zapewnieniem komunikacji pomiędzy procesami, natomiast do obsługi 

poszczególnych urządzeń, czy systemów plików, zajmują się osobne wykonywalne programy.

Jednak Linux ma modułową budowę, co oznacza że części kodu odpowiadające za obsługę poszczególnych 

urządzeń, systemów plików czy protokołów, mogą zostać od niego oddzielone - i dzięki temu zyskuje największe 

zalety mikrokerneli, czyli:

1.

obsługę poszczególnych urządzeń czy protokołów można rozwijać niezależnie od samego kernela (nie 

wymaga to zmian w innych częściach kernela) 

2.

podział prac nad jądrem na grupy zajmujące się poszczególnymi częściami znacznie ułatwia i przyspiesza 

rozwój 

3.

możliwość zmniejszenia wielkości kernela, poprzez wykasowanie z pamięci operacyjnej nieużywanych 

modułów 

4.

możliwość tworzenia zamkniętych, binarnych sterowników 

Przy tym budowa jako makrokernel, i możliwość wbudowania modułów w strukturę samego kernela, przyspiesza 

działanie, ponieważ nie ma konieczności wielokrotnego powtarzania przełączania procesów, przy komunikacji 

pomiędzy poszczególnymi modułami.

Do czego służą moduły

Moduły, odpowiadają sterownikom w terminologii DOS/Windows. Mogą one obsługiwać nie tylko urządzenia - lista 

możliwych zadań modułów jest szersza:

bezpośrednia komunikacja z urządzeniem (standardowe, systemowe polecenia tłumaczy na kod rozumiany przez 

konkretny model urządzenia) 

bezpośredni odczyt/zapis w systemie plików (dzięki temu system widzi pliki, katalogi i ich właściwości, natomiast 

sam moduł dba o przetłumaczenie tego na kombinację bajtów w określonych miejscach na dysku) 

obsługa protokołów (np. protokołów sieciowych). 

Najogólniej, moduły kernela służą do komunikacji niskopoziomowej - zajmują się tłumaczeniem standardowych 

poleceń na kod odpowiadający im w danym przypadku.

background image

33

Urządzenia

Dostęp na najniższym, bezpośrednim poziomie do urządzeń w Linuxie 

jest w dość ciekawy sposób - mianowicie są one widziane jako pliki w 

katalogu

/dev np.: /dev/hda jest to plik dysku podłączonego jako Primary Master.

Są to tzw. pliki urządzeń - tak naprawdę te pliki nie istnieją nigdzie na 

dysku, czy w pamięci procesora, ale jest to konwencja, że do wszystkich 

podstawowych części systemu można dostać się z jednego drzewa 

katalogów. Może to się wydawać na pozór dziwaczne rozwiązanie, ale tak 

naprawdę umożliwia to łatwe znalezienie, i dostęp do urządzeń, bez 

konieczności uczenia się nowych wymyślnych narzędzi (poleceń).

Takiego pliku urządzenia nie można otworzyć tak jak zwykłych plików, ale 

można z niego czytać, i zapisywać do niego. Inaczej po prostu wysyłać 

do niego strumień danych (wtedy urządzenie odbiera te dane), albo 

odbierać z niego strumień danych.

W przypadku pliku urządzenia dysku, czytając z niego bezpośrednio, 

odczytujemy kolejne bajty, tak jak one są fizycznie zapisane na dysku; 

nie odczytamy w ten sposób plików znajdujących się na nośniku, lecz 

jego obraz. Stąd wniosek, że w Linuxie w bardzo prosty sposób, używając 

najbardziej podstawowych poleceń, możemy zrobić obraz dysku/CD-

ROMu/dyskietki.

background image

34

Systemy plików linuxa

Dla potrzeb systemu GNU/Linux został opracowany specjalny system 

plików - Extended Filesystem (extfs).

Istnieje kilka systemów plików używanych w GNU/Linuksie jako główny 

system:

ext2 (wersja 2 extfs) 

ext3 (ext2 tylko z dodanym tzw. plikiem dziennika - narzędziem 

umożliwiającym łatwe odzyskanie danych w przypadku awarii systemu 

plików) 

ReiserFS 

XFS 

JFS 

Atrybuty plików

Każdy plik (i katalog) ma dodatkowe atrybuty - prawa dostępu. 

Określają one kto jest właścicielem danego pliku, i kto ma możliwość 

odczytu, zapisu oraz uruchamiania danego pliku.

Nie mają natomiast osobnego atrybutu "ukryty" - jest to rozwiązane w 

ten sposób, że pliki których nazwa zaczyna się od kropki, są 

traktowane jako pliki ukryte.

background image

35

ext2

ext2 (ang. second extended filesystem) - drugi rozszerzony 

system plików dla systemu Linux. Ext2 rozwinął się z 

rozszerzonego systemu plików ext. Rozpoznanie uszkodzenia 

systemu plików (np. po załamaniu się systemu) nastepuje przy 

starcie systemu, co pozwala na automatyczne naprawianie 

szkód za pomocą oddzielnego programu (e2fsck), uszkodzone 

pliki zapisywane są w katalogu lost+found.

System plików ext2 zawiera mechanizm zapobiegający 

znacznej fragmentacji dysku.

Ext2 przy domyślnym rozmiarze bloku (4 kB) obsługuje 

partycje o wielkości do 16384 GB i pliki o wielkości do 2048 

GB. Nazwy plików mogą mieć 255 znaków długości.

Ważnym elementem systemu ext2 są wolne pola w 

strukturach danych - to dzięki nim między innymi możliwa jest 

konwersja "w locie" do systemu ext3 - wykorzystuje on po 

prostu część z nich do przechowywania swoich danych.

background image

36

ext3

ext3 (od ang. third extended filesystem) to nowoczesny system plików oparty 

na ext2. Jest to domyślny system plików w większości dystrybucji systemu 

GNU/Linux opartych na jądrze 2.4 oraz nowszych. System ten jest rozszerzeniem 

ext2 i poza dodanym księgowaniem nie różni się od niego prawie niczym.

W odróżnieniu od większości innych systemów z księgowaniem ext3 daje do 

wyboru trzy tryby księgowania:

1.

w trybie najbezpieczniejszym księgowane są zarówno metadane jak i zwykłe dane 

2.

w trybie domyślnym księgowane są tylko metadane 

3.

istnieje jeszcze jeden tryb, w którym księgowane są również tylko metadane, ale jest 

mniej bezpieczny, bo pozwala na modyfikacje danych objętych metadanymi nie 

zapisanymi jeszcze na dysk 

Ext3 dodaje dokładny zapis zmian na dysku co w razie nagłego wyłączenia 

systemu umożliwia szybsze przywrócenie spójności systemu plików niż ext2. 

Inną zaletą tego systemu plików oprócz dużego bezpieczeństwa danych jest to, 

że bardzo łatwo przekonwertować do niego system plików ext2.

Prawidłowo odmontowany system plików może być zarówno przekształcony z 

Ext2 w Ext3 jak i z powrotem. Nie jest konieczne tworzenie kopii zapasowej całej 

partycji by przekonwertować istniejące systemy na Ext3, gdyż polega ona tylko 

na dodaniu pliku dziennika do systemu plików. Poza tym istnieje możliwość 

używania tego systemu plików przez programy obsługujące tylko Ext2 (np. 

GRUB) - ext3 jest w pełni kompatybilny wstecz.

Ze względu na sposób działania, nie jest możliwe odzyskanie skasowanych 

plików (w przeciwieństwie do ext2).

background image

37

ReiserFS

ReiserFS zwany także Reiser3 to system plików zaprojektowany i 

zaimplementowany przez grupę kierowaną przez Hansa Reisera. 

ReiserFS jest obecnie obsługiwany przez Linuksa i może być w 

przyszłości włączony do innych systemów operacyjnych. ReiserFS to 

jeden z pierwszych systemów plików z księgowaniem dla Linuksa. 

Księgowanie (journaling) zapewnia atomowość operacji na systemie 

plików. W odróżnieniu od ext2 ten może trwać godzinami. Za 

zwiększenie bezpieczeństwa danych płacimy szybkością (trzeba 

uaktualniać kronikę) i przestrzenią dyskową (kronika zajmuje miejsce). 

ReiserFS wykonuje operacje na metadanych systemu plików, które są 

atomowe.

ReiserFS do przechowywania obiektów używa b-drzew, znany jest ze 

swojej szybkości i efektywnego przechowywania i dostępu do dużej 

ilości małych plików (szczególnie w jednym katalogu). Obecnie 

Namesys ukończył prace nad nowym systemem plików o nazwie 

Reiser4.

ReiserFS bardzo wydajnie obsługuje katalogi zawierające ogromne 

ilości małych plików. Jest to między innymi korzystne przy obsłudze 

kolejek wiadomości w grupach dyskusyjnych.

background image

38

XFS

XFS - 64-bitowy system plików zaprojektowany przez firmę Silicon Graphics Inc. z przeznaczeniem do użycia go w systemie 

operacyjnym IRIX (wersja UNIX-a firmy SGI). Aktualnie jest dostępna również jego implementacja dla systemu Linux rozwijana 

przez SGI jako projekt na licencji wolnego oprogramowania.

XFS pozwala na obsługę dużych dysków twardych. Maksymalny rozmiar woluminu jest ograniczony do 18 milionów TB. 

Natomiast rozmiar pojedynczego pliku może wynosić maksymalnie 2^63 bajtów czyli ponad 8 milionów TB (dokładnie 8 388 608 

TB). Rozmiar jednostki alokacji może wynosić od 512 bajtów (wielkość fizycznej jednostki alokacji) do 1 MB.

XFS posiada szereg cech zaawansowanego systemu plików do zastosowań serwerowych oraz dla wydajnych stacji roboczych.

Najciekawszym z nich jest realtime subvolume - udostępnienie procesowi możliwości zarezerwowania dla siebie pasma dostępu 

do podanego pliku, o podanej szerokości (w bajtach na sekundę). Znajduje to zastosowanie na przykład przy obróbce m.in. 

plików multimedialnych, gdzie proces musi mieć stały szybki dostęp do plików, aby umożliwić edycję ich na bieżąco.

Drugie rozwiązanie aktualnie szeroko już stosowane to księgowanie metadanych, dzięki któremu sprawdzenie i naprawienie 

błędów w strukturze systemu plików zajmuje ułamki sekund. Dane nie są jednak, ze względów wydajnościowych księgowane, co 

powoduje niekiedy utratę zawartości pliku podczas awarii (jest to możliwe tylko wtedy, gdy metadane zostały zmienione, a dane 

nie zostały jeszcze zapisane na dysku).

Innym interesującym rozwiązaniem jest możliwość defragmentacji systemu plików XFS zamontowanego i posiadającego otwarte 

pliki (pliki otwarte w trybie do zapisu nie są defragmentowane). Stworzenie, usunięcie czy modyfikacja pliku, który nie jest 

aktualnie optymalizowany nie powoduje przerwania tego procesu.

System ten obsługuje również inne technologie takie jak:

1.

pliki rzadkie (ang. sparse files) 

2.

rozszerzone atrybuty plików (ang. extended attributes) 

3.

listy dostępu (ang. POSIX Access Control Lists - ACLs) 

4.

etykiety bezpieczeństwa (ang. security labels) 

5.

limitowane przydziały (ang. quota) 

System plików XFS jest wewnętrznie podzielony na następujące subwoluminy:

1.

data subvolume - przechowuje dane (pliki) 

2.

naming subvolume - przechowuje metadane 

3.

log subvolume - przechowuje metadane, które zostały zmodyfikowane ale odpowiadające im zmiany w data subvolume 

nie zostały jeszcze wprowadzone 

4.

realtime subvolume - przechowuje dane do których może być wymagany dostęp z rezerwacja pasma 

Z powodu różnic architektonicznych między IRIX-em a Linuksem, przy przenoszeniu XFS-a na Linuksa, wprowadzono dodatkową 

warstwę logiczną pomiędzy XFS-em a wirtualnym systemem plików Linuksa, tłumaczącą odwołania do VFS-a IRIX-a na odwołania 

do VFS-a Linuksa.

background image

39

JFS

JFS (ang. Journaled File System) - 64-bitowy system 

plików z księgowaniem, opracowany przez firmę IBM. 

Przy użyciu księgowania dane nie są od razu 

zapisywane na dysk, tylko zapisywane w swoistym 

dzienniku/kronice (ang. journal). Dzięki takiemu 

mechanizmowi działania zmniejsza się 

prawdopodobieństwo utraty danych: jeśli utrata 

zasilania nastąpiła w trakcie zapisu - zapis zostanie 

dokończony po przywróceniu zasilania, jeśli przed - 

stracimy tylko ostatnio naniesione poprawki, a 

oryginalny plik pozostanie nietknięty. Specjalnym 

przypadkiem systemu plików z księgowaniem jest 

księgowanie metadanych - nie księguje się w tym 

wypadku właściwego zapisu danych pliku. 


Document Outline