Systemy operacyjne i sieci komputerowe sem3

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 zadania, któ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 init. init 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 getty. init dla każdego z

terminali uruchamia osobny proces getty. getty 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


Wyszukiwarka

Podobne podstrony:
format[1], Szkoła, Systemy Operacyjnie i sieci komputerowe, systemy, semestr I
System plików, zOthers, Systemy operacyjne i sieci komputerowe
Pamięci dynamiczne RAM, Szkoła, Systemy Operacyjnie i sieci komputerowe, utk, semestr I
bramki logiczne, Szkoła, Systemy Operacyjnie i sieci komputerowe, utk, semestr I
router, Szkoła, Systemy Operacyjnie i sieci komputerowe, sieci
Dyski twarde-woluminy, Szkoła, Systemy Operacyjnie i sieci komputerowe, systemy, semestr II
WiFi, Systemy Operacyjne i Sieci Komputerowe
Normy prawne dotyczące rozpowszechniania programów komputerowych, 1.Systemy operacyjne i sieci kompu
System operacyjny i sieci komputerowe, Liceum
Konsola odzyskiwania systemu, Szkoła, Systemy Operacyjnie i sieci komputerowe, systemy, semestr II
Windows 7 - Wersje i Instalacja, Systemy Operacyjne i Sieci Komputerowe
Materiał Nauczania - SOiSK - kl. I Technikum, Systemy Operacyjne i Sieci Komputerowe
Rejestry, Szkoła, Systemy Operacyjnie i sieci komputerowe, utk, semestr I
Zagadnienia egzaminacyne z przedmiotu Systemy Operacyjne i Sieci Komputerowe w cosinusie, informatyk
Systemy plików, zOthers, Systemy operacyjne i sieci komputerowe
Zarządzanie Partycjami, Systemy Operacyjne i Sieci Komputerowe

więcej podobnych podstron