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 windowsie 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ń