SYSTEM OPERACYJNY LINUX

SYSTEM OPERACYJNY LINUX

1 System operacyjny Linux i jego dystrybucja

Linux  – rodzina uniksopodobnych systemów operacyjnych opartych na jądrze Linux. Linux

jest jednym z przykładów wolnego i otwartego oprogramowania (FLOSS): jego kod źródłowy

może być dowolnie wykorzystywany, modyfikowany i rozpowszechniany

W skład dystrybucji, oprócz samego jądra, wchodzą podstawowe programy i usługi takie, jak

powłoka, skrypty startowe, narzędzia konfiguracyjne, a także często duży zestaw aplikacji

użytkowych. W obrębie dystrybucji używana jest jednolita organizacja plików

konfiguracyjnych oraz wspólny mechanizm instalowania nowych aplikacji. Niekiedy

terminem dystrybucja określa się także systemy zbudowane na bazie jąder innych niż Linux

(np. GNU Hurd); szczególnie można tutaj wyróżnić klony dystrybucji uniksowych (np.

Debian)

2 Jakie wady i zalety posiada system Linux

Zalety:

1. Stabilność

2. Bezpieczeństwo - posiadają minimalną ilość błędów, a odkryte błędy natychmiast są

poprawiane

3. Małe wymagania sprzętowe

4. Wielodostępność - na jednym komputerze może pracować kilkaset użytkowników nie

wpływając na siebie wzajemnie

5. Wysoka konfigurowalność - właściwie każdy aspekt systemu można dostosować

6. Wydajność - we wszelkich porównaniach jest na wysokich miejscach

7. Doskonała sieciowość.

Wady:

1. Niedobór driverów - ciężko o sterowniki do widowsowego sprzętu,

2. Skomplikowany - przedtem było to zaletą, a teraz wadą - jest zbyt trudny dla leni

3. Nie jest przystosowany dla użytkowników korzystających z gier

4. Jego instalacja zajmuje dużo czasu

5. Trudności w konfiguracji - przy braku znajomości języka angielskiego, który jest

niezbędny , gdyż cała dokumentacja jest w tym języku

3 Jak zarządza się dyskietkami i partycjami w systemie Linux

Dyski i partycje

Partycje, na których znajdują się dyski logiczne w systemach typu windows są widziane od

razu, jednakże w Linuxie tak nie jest. Dlaczego? Ponieważ lepiej jest gdy samemu się

decyduje kiedy chcemy, aby były widziane dane dyski. W Linuxie zatem zanim zobaczymy

jakiś dysk trzeba go najpierw zamontować. Windows montuje automatycznie na samym

początku ładowania systemu, robi to też automatycznie, gdy zmieniamy dyskietkę lub cd-

rom. Jest jeszcze jedna różnica miedzy systemem windows a linux.

W Windowsie (DOSie) wszystkie dyski są widoczne pod nazwami A: B: C: D: E: F: G: H:

itd. Dyski dostają odpowiednią literkę w zależności od tego, który jest pierwszy. W linuxie

jest zupełnie inna sytuacja. Na początku, przy włączaniu systemu montuje się główny system

plików, który oczywiście ma jakieś katalogi. Aby zamontować jakiś dodatkowy dysk trzeba

wybrać sobie, do którego katalogu w systemie plików mamy podmontować ten dysk. Może to

być dowolny, pusty katalog. To daje nam pewną elastyczność co do nazw tych dysków.

Możemy je nazywać jakkolwiek chcemy. W windows’ie tego nie możemy zrobić, muszą się

nazywać jedną z literek alfabetu. Można jeszcze wspomnieć, że w tej chwili można już

odpowiednio skonfigurować Linuxa do tego, aby zachowywał się tak, jak windows i

montował automatycznie CD-ROMy i stacje dysków wtedy tylko, gdy chcemy je używać.

Krotki opis organizacji katalogów

Poniżej znajduje się minimalny zestaw katalogów dla naszego głównego systemu plików:

/dev – urządzenia, wymagane do operacji wejścia/wyjścia,

/proc – katalog wymagana przez system plików proc,

/etc – pliki konfiguracyjne systemu,

/sbin – programy krytyczne dla działania systemu,

/bin – podstawowe programy uważane za część systemu,

/lib – biblioteki dzielone,

/mnt – miejsce montowania innych systemów plików,

/usr – dodatkowe narzędzia i aplikacje,

/var – znajduje się w nim wiele plików z informacjami o działaniu systemu i nie tylko,

/home – katalog przeznaczony na podkatalogi użytkowników,

/tmp – składowane są tam przeważnie pliki tymczasowe.

/dev - katalog ten zawiera specjalne pliki dla każdego wykorzystywanego przez system

urządzenia, katalog ten jest obowiązkowy. Jest to zwykły katalog, więc może zostać

stworzony poleceniem mkdir. Jednak poszczególne pliki urządzeń muszą zostać utworzone w

nietypowy sposób, za pomocą komendy mknod. Dobrym pomysłem jest usunięcie

niepotrzebnych urządzeń z katalogu (kompilacja jądra o czym będzie później). Wiele

urządzeń jest kompletnie nieprzydatnych w konkretnych systemach. Na przykład jeśli nie

posiadasz żadnych dysków SCSI, możesz bez żadnych problemów usunąć wszystkie

urządzenia zaczynające się na sd. Jeśli nie masz zamiaru korzystać z portu szeregowego,

możesz usunąć wszystkie pliki zaczynające się od cua.

/etc - ten katalog zawiera większość plików konfiguracyjnych. Oprócz nich znajdują się tam

pliki, które zawierają informacje, kto, gdzie i jaki ma dostęp do odpowiednich usług,

katalogów i plików. Niektóre pliki znajdują się tam we wszystkich systemach Linuxowych,

niektóre zaś w zależności od dystrybucji. Aby było łatwiej orientować się w katalogu tym są

jeszcze podkatalogi.

/bin i /usr/bin - katalog zawiera wiele programów, bardzo często używanych w czasie pracy

na systemie. Programy opowiadające za kopiowanie, przenoszenie, kasowanie plików,

tworzenie katalogów, modyfikowanie praw itd. Jest ich tam naprawdę dużo. Przeważnie do

tych plików mają dostęp wszyscy użytkownicy systemu.

/sbin i /usr/sbin - tutaj znajdują się programy pozwalające konfigurować system. Dostęp do

nich może być zabroniony dla zwyczajnych użytkowników, choć nie musi, ponieważ zwykły

użytkownik nie będzie specjalnie ich potrzebował. Administrator systemu zaś bardzo często

ich używa.

/lib - w katalogu umieszczane są potrzebne biblioteki dzielone oraz programy służące do ich

ładowania. Jeśli wymagane biblioteki nie zostaną odnalezione w katalogu /lib, to system nie

wystartuje. Przy odrobinie szczęścia możesz ujrzeć komunikat mówiący o błędzie. Prawie

każdy program wymaga co najmniej biblioteki libc, libc.so.N, gdzie N to numer wersji.

/var - w katalogu znajdują się pliki, gdzie składowane są logi systemu. Chodzi o to, aby

administrator mógł zobaczyć co się działo w systemie, kiedy podczas jego nieobecności.

Bardzo pomaga to w wykrywaniu czy przypadkiem coś złego nie zaczyna się dziać, czy

przypadkiem ktoś nie próbował się włamać na system lub czy tego już nie zrobił. Znajdują się

tez tam pliki, w których składowana jest poczta elektroniczna, na użytkowników systemu i

wiele innych.

/mnt - katalog przeznaczony jest do tego, aby zamontować tam inne dyski. Zamontować

dodatkowy dysk możemy w każdym (pustym) katalogu. Powoduje to, że jak się wchodzi do

tego katalogu to wchodzimy na dysk zamontowany. Gdy zaś nie zamontujemy tam żadnego

dysku katalog będzie pusty.

/proc - jeden z ciekawszych katalogów. Znajdują się w nim pliki i katalogi, które są tworzone

dynamicznie przez system. Każdy aktualnie włączony w systemie program posiada

podkatalog w tym katalogu. Są w nim pliki z opisem, np. kto włączył dany program, z jakiego

katalogu go włączył, ile program zabiera pamięci itd. W katalogu tym znajdują się tez

informacje dotyczące systemu. Jakie karty PCI są zainicjowane, jaki jest procesor w systemie,

ile ma pamięci i tego typu informacje.

/home - katalog ten zawiera podkatalogi użytkowników, ponieważ każdy użytkownik w

systemie powinien mieć własny katalog, aby mógł zapisywać sobie tam różne swoje dane,

ponieważ przeważnie nigdzie indziej nie może tego robić oprócz katalogu /tmp. Często też

znajdują się tam katalogi, w których są składowane różne inne dane, np. katalog z plikami

HTML dla głównej strony serwera albo katalog z plikami, które są dostępne na publicznym

FTP.

/tmp - w tym katalogu składowane są tymczasowe pliki w czasie pracy.

4 Budowa systemu operacyjnego Linux

Linux to system wielodostępny i wielozadaniowy, z pełnym zestawem narzędzi zgodnych z

systemem UNIX. System plików pasuje do tradycyjnej semantyki uniksowej, zrealizowano

też w pełni sieciowy standard systemu UNIX. Na wewnętrzne szczegóły projektu Linux

wywarły duży wpływ kolejne jego powstawania. Dziś Linux może z powodzeniem działać na

maszynie wieloprocesorowej z setkami megabajtów pamięci operacyjnej i wieloma

gigabajtami przestrzeni dyskowej, a jednocześnie wciąż jest w stanie pracować poprawnie z

pamięcią RAM mniejszą niż 4 MB. System Linux zaprojektowano tak, aby pozostawał w

wyraźniej zgodzie z istotnymi opisami standardu POSIX. Oficjalne certyfikaty komitetu

normalizacyjnego POSIX zdobyły co najmniej dwie dystrybucje systemu Linux.

Na mocy ustaleń zastępczych, interfejs programisty w systemie Linux odpowiada semantyce

systemu SVR4 UNIX, a nie zachowaniu systemu BSD. Do realizacji semantyki BSD w

miejscach, gdzie oba sposoby działania istotnie się różnią, służy oddzielny zbiór bibliotek.

Składowe systemu Linux

System Linux składa się z trzech głównych fragmentów kodu, zgodnych z większością

tradycyjnych implementacji systemu UNIX. Są to:

 Jądro: Jest odpowiedzialne za realizację wszystkich istotnych abstrakcji systemu

operacyjnego, łącznie z takimi elementami, jak pamięć wirtualna i procesy.

 Biblioteki systemowe: Definiują standardowy zbiór funkcji, za pomocą których

aplikacje mogą współdziałać z jądrem i które realizują wiele właściwości systemu

operacyjnego nie wymagających pełnych przywilejów kodu jądra.

 Pomoce systemowe: Są programami, które wykonują osobne, specjalizowane zadania

administracyjne. Z niektórych pomocy systemowych można korzystać tylko jeden raz

w celu zapoczątkowania i skonfigurowania pewnych elementów systemu; inne (w

terminologii unixowej na-zywane demonami) mogą działać nieustannie, obsługując

takie zadania, jak odpowiadanie na sygnały nadchodzące z sieci, przyjmowanie z

terminali zamówień na rozpoczęcie sesji lub uaktualnianie plików z dziennikami

zdarzeń systemowych.

Na rysunku 2.1 widać różne części, z których składa się system Linux. Najważniejsza linia

podziału biegnie tu między jądrem a wszystkim innym. Cały kod jądra jest wykonywany w

uprzywilejowanym trybie procesora, z pełnym dostępem do wszystkich fizycznych zasobów

komputera. W systemie Linux ów uprzywilejowany tryb nazywa się trybem jądra (ang.

Kornel mode) i jest równoważny trybowi monitora . W jądro systemu Linux nie jest

wbudowany żaden kod działający w trybie użytkownika. Zamiast tego wszelki kod

wspierający system operacyjny, a nie wymagający wykonywania w trybie jądra, umieszczono

w bibliotekach systemowych.

rys.2.1.Składowe sytemu Linux

Cały kod jądra i wszystkie struktury danych są trzymane w jednej przestrzeni adresowej, więc

gdy proces wywołuje funkcję systemu operacyjnego albo gdy sprzęt zgłosi przerwanie, nie

ma potrzeby przełączania kontekstu. W tej samej przestrzeni adresowej przebywa nie tylko

kod centralnego planowania i pamięci wirtualnej, lecz także cały kod jądra ze wszystkimi

modułami obsługi urządzeń, systemami plików i oprogramowaniem sieci.

Jądro systemu Linux może dynamicznie ładować (i rozładowywać) moduły podczas pracy.

Jądro nie musi obowiązkowo wiedzieć z góry, które moduły będą potrzebne - są to elementy

ładowalne w pełni niezależnie.

Jądro Linux tworzy rdzeń systemu operacyjnego Linux. Jądro realizuje całość cech

wymaganych, aby zasłużyć na miano systemu operacyjnego. Jednak system operacyjny

tworzony przez samo jądro Linux ma niewiele wspólnego z systemem UNIX. Interfejs

systemu operacyjnego, widoczny dla wykonywanych aplikacji, nie jest bezpośrednio

realizowany przez jądro. Zamiast tego programy użytkowe odwołują się do bibliotek

systemowych (ang. system libraries), w których z kolei następują niezbędne odwołania do

usług systemu operacyjnego.

Biblioteki systemowe dostarczają wielorakich działań. Na najprostszym poziomie pozwalają

one aplikacjom zamawiać systemowe usługi jądra. Odwołanie do systemu wymaga

przekazania sterowania z nieuprzywilejowanego trybu użytkownika do uprzywilejowanego

trybu jądra. Szczegóły tego przejścia zmieniają się w zależności od rodzaju architektury.

Biblioteki dopilnowują zbierania argumentów wywołań funkcji systemowych i w razie

konieczności nadawania tym argumentom specjalnej postaci, niezbędnej do wykonania

wywołania.

Biblioteki mogą również dostarczać bardziej złożonych wersji podstawowych funkcji

systemowych. Na przykład wszystkie funkcje buforowanych działań na plikach w języku C są

zrealizowane w bibliotekach systemowych, umożliwiając bardziej zaawansowane sterowanie

plikowymi operacjami wejścia-wyjścia niż to zapewniają podstawowe funkcje systemowe

jądra. Biblioteki zawierają także podprogramy, które nie mają odpowiedników w

odwołaniach do systemu, takie jak algorytmy sortowania, funkcje matematyczne i operacje na

napisach. Wszystkie funkcje niezbędne do wspierania działań aplikacji standardu UNIX lub

POSIX są zaimplementowane właśnie w bibliotekach systemowych.

System Linux zawiera ponadto szeroki repertuar programów działających w trybie

użytkownika - zarówno pomocy systemowych, jak i narzędzi dla użytkowników. W skład

pomocy systemowych wchodzą wszystkie programy niezbędne do rozpoczęcia pracy

systemu, takie jak programy do konfigurowania urządzeń sieciowych lub do ładowania

modułów jądra. Programy serwerów pracujące nieustannie też zalicza się do pomocy

systemowych. Obsługują one rozpoczynanie sesji przez użytkowników, sygnały nadchodzące

z sieci oraz kolejki do drukarek.

Środowisko użytkownika systemu UNIX zawiera dużą liczbę standardowych pomocy do

wykonywanych prostych, codziennych prac, takich jak wyprowadzenie zawartości katalogów,

przemieszczanie i usuwanie plików lub wyświetlanie zawartości pliku. Bardziej

skomplikowane narzędzia mogą przetwarzać teksty, na przykład porządkować dane tekstowe

lub poszukiwać w tekście wejściowym zadanych wzorców. Łącznie pomoce te tworzą

standardowy zestaw narzędziowy, którego użytkownicy mogą się spodziewać w każdym

systemie uniksowym. Choć nie wykonują one żadnej funkcji systemu operacyjnego, pozostają

ważną częścią podstawowego systemu Linux.

5 Założyciel Linuxa, rok powstania, wersja systemu

Historia Linuksa rozpoczęła się w 1991 roku, kiedy to fiński programista, Linus Torvalds

poinformował o hobbystycznym tworzeniu przez siebie niedużego, wolnego systemu

operacyjnego, przeznaczonego dla procesorów z rodzin i386 oraz i486.

Linus stworzył jednak tylko jądro, pełny system operacyjny potrzebował jeszcze powłoki

systemowej, kompilatora, bibliotek itp. W roli większości z tych narzędzi użyto

oprogramowania GNU, co jednak w przypadku niektórych komponentów systemu wymagało

poważnych zmian, niekiedy finansowanych przez Projekt GNU, niekiedy dokonanych już

wcześniej przez Linusa Torvaldsa.

Dużo pracy wymagało także zintegrowanie systemu do postaci dystrybucji, które umożliwiały

zainstalowanie go w stosunkowo prosty sposób. Jednymi z pierwszych były opublikowany 16

lipca 1993 Slackware Linux czy założony miesiąc później Debian, nazywający siebie

GNU/Linux

.

6 Najważniejsze cechy systemu

- wielozadaniowość

Wielozadaniowość

Linux jest systemem wielozadaniowym – co umożliwia mu równoczesne wykorzystywanie

więcej niż jednego procesu (proces to egzemplarz wykonywanego programu, posiadający

własną przestrzeń adresową). Za realizację wielozadaniowości odpowiedzialne jest jądro

systemu operacyjnego (kernel).

Wielozadaniowość zapewniona jest przez program nazywany planistą, który realizuje

algorytm szeregowania zadań w kolejce do przyznania czasu procesora. Linux może

wykorzystywać wiele procesorów. Gdy system ma mniej dostępnych procesorów niż zadań to

czas działania procesora jest dzielony pomiędzy wszystkie zadania.

Linux operuje także tzw. wywłaszczenie, które polega na przerwaniu wykonywania procesu,

odebraniu mu procesora i przekazaniu sterowania do planisty.

Do wyświetlania listy uruchomionych procesów służy polecenie ps. Polecenia tego może

używać każdy użytkownik, jednak wyświetlane będą tylko te procesy, których jest

właścicielem. Najważniejszą spośród wyświetlanych informacji to:

 PID – identyfikator procesu

 TTY – identyfikator konsoli, z której proces został uruchomiony

 TIME – czas procesora wykorzystany do tej pory

 CMD – polecenie, którym uruchomiono proces

Listę procesów można wyświetlać za pomocą komendy: ps -A lub jeżeli chcemy wyświetlić

procesy wg tego jak obciążają system możemy użyć polecenia top.

Wielodostępność

Linux jest systemem wielodostępnym. Oznacza to, że wielu użytkowników może

jednocześnie z niego korzystać.

Każdy użytkownik ma przydzielone zasoby:

 pamięć

 czas procesora

 miejsce na dysku

Do jego zasobów nie nikt dostępu chyba, ze sam je udostępni. Wyjątkiem jest administrator.

Użytkownik jest niezależny i odizolowany od innych. Aby zalogować się do systemu

możemy skorzystać z klawiatury podłączonej do komputera, lub sieci komputerowej. Po

zalogowaniu się uzyskujemy dostęp do konsoli. W linuxie zdefiniowanych jest wiele konsoli

tekstowych, na których mogą logować się różni użytkownicy.

KONSOLA – LOGOWANIE

[Ctrl] + [Alt] + [Fn] np. [Ctrl] + [Alt] + [Fn] – aby zalogować się do pierwszej konsoli.

[Ctrl] + [Alt] + [F7] – powrót do środowiska graficznego.

KONTO

whoami – sprawdza z jakiego konta aktualnie korzystamy.

who – kto aktualnie jest zalogowany w systemie.

WIADOMOŚCI PRZESYŁANE POMIĘDZY UŻYTKOWNIKAMI

write – polecenie służy do wysyłania wiadomości do innego użytkownika.

wall – polecenie służy do przesyłania wiadomości do wszystkich zalogowanych

użytkowników.

KONSOLA TOMKA PODCZAS WYSYŁANIA

[tomek@localhost ~]$ write wojtek

Witam. Jestem Tomek. Pozdrawiam.

KONSOLA WOJTKA PODCZAS ODCZYTU

[wojtek@localhost ~]$

message from tomek@localhost on pts/3 at 19:21 …

Witam. Jestem Tomek. Pozdrawiam.

EOF

7 Na czym polega wywłaszczenie

Wywłaszczenie – technika używana w środowiskach wielozadaniowych, w której algorytm

szeregujący (scheduler) może wstrzymać aktualnie wykonywane zadanie (np. proces lub

wątek), aby umożliwić działanie innemu. Dzięki temu rozwiązaniu zawieszenie jednego

procesu nie powoduje blokady całego systemu operacyjnego. W systemach bez

wywłaszczenia, zadania jawnie informują scheduler, w którym momencie chcą umożliwić

przejście do innych zadań. Jeżeli nie zrobią tego w odpowiednim czasie, system zaczyna

działać bardzo wolno. Oprócz tego wywłaszczanie umożliwia szczegółowe określanie czasu,

w jakim dany proces może korzystać z procesora. Wywłaszczanie w niektórych systemach

operacyjnych może dotyczyć nie tylko programów, ale także samego jądra – przykładem

takiego systemu jest Linux.

Wywłaszczanie jest często ograniczane, na przykład procedury odpowiedzialne za obsługę

przerwań sprzętowych są zwykle niewywłaszczalne, co znacznie upraszcza ich konstrukcje,

ale wymusza też zadbanie o to, żeby szybko ulegały zakończeniu umożliwiając działanie

innym procesom. W jądrze Linuksa przed wersją 2.6 niemożliwe było wywłaszczenie

procesu, który znajdował się w trybie jądra, co w pewnych sytuacjach mogło być powodem

bardzo wolnej reakcji na działania użytkownika.

8. Jakie systemy plików obsługuje Linux

9 Jak wygląda struktura katalogów systemu Linux

10. Definicja interpretatora poleceń

Załóż własną stronę internetową za darmo Webnode