Sieci komputerowe
© Jerzy Skurczyński
Instytut Matematyki Uniwersytetu
Gdańskiego
Gdańsk, 2002 r.
Literatura:
1. M.J. Bach, Budowa systemu operacyjnego UNIX, WNT, 1995.
2. Ch. Brenton, Projektowanie sieci wieloprotokołowych (t. I, II), Exit, 1995.
3. C. Hunt, TCP/IP. Administracja sieci, RM, 1998.
4. K. Nowicki, J. Woźniak, Sieci LAN, MAN i WAN – protokoły komunikacyjne,
Wydawnictwo
Fundacji Postępu Telekomunikacji, 1998.
5. A. Silberschatz, J.L. Peterson, P.B. Galvin, Podstawy systemów operacyjnych,
WNT, 1993.
6. R. Stevens, Programowanie zastosowań sieciowych w systemie Unix, WNT,
1996.
7. A.S. Tanenbaum, Rozproszone systemy operacyjne, PWN, 1997.
8. A. Wolisz, Podstawy lokalnych sieci komputerowych (t. I – sprzęt sieciowy),
WNT, 1990.
1. CELE I KORZYŚCI Z ŁĄCZENIA KOMPUTERÓW W SIECI
1)
Współdzielenie zasobów
Zasobami są wszystkie części składowe (fizyczne i abstrakcyjne) systemu
komputerowego,
o których udostępnianiu użytkownikowi decyduje system operacyjny.
Do zasobów zaliczamy między innymi:
- moc obliczeniową procesora;
- pojemność pamięci operacyjnej;
- pojemność pamięci zewnętrznych;
- urządzenia zewnętrzne (drukarki, skanery, ...).
Zwykle zasoby rozumiemy w sposób abstrakcyjny, dostrzegając je przez
pryzmat usług, jakie
oferuje system operacyjny, np. w jednoprocesorowym systemie
wielodostępnym poszczególnym
procesom przydzielane są procesory wirtualne, w przypadku zbyt małej
pamięci operacyjnej
większa jej ilość może być symulowana przez przestrzeń wymiany na dysku -
uzyskujemy wtedy
wirtualną przestrzeń adresową, na dużym dysku mogą być wydzielone
fragmenty widziane
jako dyski wirtualne (dyski logiczne) itp.
Zwykły użytkownik systemu komputerowego nie mając uprawnień
administratora i odpowiednich
programów narzędziowych na ogół nie ma możliwości dowiedzenia się, jakie
są parametry
fizyczne systemu z którym współpracuje - ma do czynienia wyłącznie z
maszyną wirtualną.
W przeciętnym komputerze osobistym „czas życia” jego procesora (licząc od
chwili zakupu do
chwili zniszczenia) jest efektywnie wykorzystywany w mniej niż jednym
procencie !
Podobnie wygląda wykorzystanie innych zasobów - np. pliki z programami na
dysku mogłyby być
używane przez wiele osób bez potrzeby tworzenia oddzielnych kopii dla
każdego komputera.
Współdzielenie zasobów systemu komputerowego jest bardzo korzystne
ekonomicznie -
elementy systemu zazwyczaj „starzeją się moralnie” dużo szybciej, niż ulegają
zużyciu lub
uszkodzeniu, więc należy starać się je jak najintensywniej eksploatować.
2) Komunikacja
Sieć komputerowa jest bardzo dogodnym medium komunikacyjnym. Umożliwia
łączność pomiędzy
poszczególnymi osobami (poczta elektroniczna, programy zastępujące telegraf i
telefon), w obrębie
grup osób („telekonferencje”), zastępuje tablice ogłoszeń (strony domowe -
widoczne w obrębie
całego Internetu). W przypadku dużej przepustowości łącz umożliwia nawet
transmisję dźwięku
i obrazu w czasie rzeczywistym (może więc zastępować radio i telewizję).
Dużą część danych przesyłanych w sieciach komputerowych stanowią dane,
które nie są
przeznaczone do bezpośredniego odbioru przez ludzi (zakodowane transakcje
bankowe,
cyfrowe sygnały zdalnego sterowania, rozdzielone dane do dużych obliczeń
naukowych
lub technicznych prowadzonych współbieżnie na wielu komputerach).
W przypadku zastosowań komunikacyjnych istotną rzeczą jest standaryzacja
formy przesyłanych
informacji. Różne systemy komputerowe mogą mieć różne procesory -
dysponujące rejestrami
o różnych długościach i różnych uszeregowaniach bajtów, odmienne systemy
operacyjne
wykorzystujące różnie zorganizowane systemy plików oraz różne urządzenia
zewnętrzne
(w szczególności karty sieciowe i modemy). Aby komputery mogły się ze sobą
skutecznie
porozumiewać, muszą dysponować:
a) wspólnym systemem adresowania;
b) wspólnym formatem przesyłanych ciągów bitów.
Efektem prac standaryzacyjnych są protokoły komunikacyjne specyfikujące
(na różnych
poziomach abstrakcji) sposoby przesyłania informacji pomiędzy komputerami.
Protokoły są
zaimplementowane w postaci oprogramowania, jak również w postaci norm
technicznych
określających np. rodzaje i maksymalne długości przewodów, charakterystyki
nadawanych
sygnałów elektrycznych itp.
W przypadku łączenia ze sobą sieci komputerowych o odmiennych protokołach
potrzebne jest
odpowiednie „oprogramowanie tłumaczące” z jednego protokołu na drugi i na
odwrót.
3) Niezawodność
W niektórych dziedzinach zastosowań niezawodność działania jest szczególnie
istotna (służba
zdrowia, kierowanie ruchem lotniczym, obronność, ...). W tych dziedzinach
komputery powinny
w razie awarii być w stanie przejmować wzajemnie swoje funkcje (co najwyżej
przy niewielkim
pogorszeniu wydajności pracy).
W tego rodzaju zastosowaniach istotne jest:
a) zwielokrotnianie danych (plików, a czasem nawet zawartości pamięci
operacyjnej);
b) zwielokrotnianie łącz (tak, aby nie było łącz krytycznych);
c) istnienie pewnych rezerw mocy obliczeniowej procesorów;
d) zastępcze źródło (czasowego) zasilania.
4) Uzyskiwanie łącznych mocy obliczeniowych nieosiągalnych dla
pojedynczych komputerów
Obecnie istnieją już komputery wieloprocesorowe (nawet zawierające tysiące
procesorów), ale
cały czas istnieje bariera technologiczna ograniczająca liczbę procesorów w
pojedynczym
komputerze. Nie ma natomiast praktycznie żadnych barier ograniczających
możliwości łączenia
komputerów w sieci (sieć działa nieco wolniej, niż pojedynczy komputer, ale przy
umiejętnym
rozdzieleniu podzadań na poszczególne współpracujące ze sobą komputery może
nie mieć to
dużego znaczenia).
Przykład: analiza sygnałów z Kosmosu przy użyciu wielu indywidualnych
komputerów
podłączonych do Internetu.
Wiele klasycznych zastosowań sieci komputerowych wiąże się z więcej niż jedną
spośród wyżej
omówionych korzyści (wielodostępne rozproszone bazy danych, programy do
zdalnej współpracy,
zdalna dydaktyka, sieciowe gry komputerowe ...).
2. SIECIOWE SYSTEMY OPERACYJNE
Sieciowy system operacyjny to taki, który ma wbudowane mechanizmy
komunikacji z innymi
komputerami o takim samym systemie (lub posiadającymi kompatybilne
oprogramowanie).
Programy użytkowe oparte na funkcjach komunikacyjnych systemu operacyjnego
oferują
różnego rodzaju usługi - np. umożliwiają korzystanie z systemu plików na innym
komputerze,
mogą zlecać wykonanie na nim pojedynczych procedur lub nawiązywać z nim
trwałą łączność
(otwierać sesję).
Klasycznym przykładem systemu sieciowego jest Unix (udostępnia wszystkie w/w
usługi).
System oferujący jedynie zdalny dostęp do swojego systemu plików nazywany jest
serwerem
plików.
Rozproszony system operacyjny to taki sieciowy system operacyjny, który
działając w pewnej
liczbie komputerów połączonych w sieć sprawia na ich użytkownikach
wrażenie, że pracują na
jednym (dużym, wielodostępnym) komputerze.
Własność uwalniania użytkowników systemu sieciowego od potrzeby
świadomości (szczegółów
technicznych) aspektów komunikacji wewnątrz sieci nazywamy
przezroczystością
(transparency)
.
Istnieją różne rodzaje przezroczystości, np.:
• przezroczystość położenia zasobów
• przezroczystość zwielokrotniania
• przezroczystość awarii
• przezroczystość działań równoległych
Ostatni rodzaj przezroczystości (dotyczący programistów, a nie zwykłych
użytkowników
komputerów) jest algorytmicznie najtrudniejszy do uzyskania.