Systemy operacyjne i sieci komputerowe
14. Linux cz.1: czym jest Linux, struktura plików
Pingwin Tux, czym jest Linux, twórca Linus Torvalds, Wolne Oprogramowanie, jądro, GNU GPL, historia i rozwój Linuxa, dystrybucje, cechy sytemu, wielozadaniowość, wielodostępność, system plików, ext, struktura katalogów: bin, etc, boot, dev, home, lib, mnt, media, proc, sbin, root, usr, tmp, var, powłoka, interpreter, bash, csh, ksh
Poznaj pana Tuxa
Tux – maskotka Linuksa, funkcjonująca jako nieoficjalne logo. Jest to objedzony, (żeby nie powiedzieć: tłusty) i wiecznie uśmiechający się pingwin. Imię pochodzi najprawdopodobniej od słów: Torvalds UniX, często jest wyprowadzana również od angielskiej nazwy smokingu (tuxedo), ponieważ pingwiny wyglądają, jakby nosiły smoking. Tux stał się symbolem społeczności użytkowników Linuksa i zwolenników wolnego oprogramowania na całym świecie.
Czym jest Linux?
- Linux to rodzina systemów operacyjnych opartych o udostępniane na licencji GNU GPL jądro Linux napisane przez Fina Linusa Torvaldsa w roku 1991
- Linux jest Wolnym Oprogramowaniem
- Wolność Linuksa oznacza to, że jest rozprowadzany wraz z kodem źródłowym, który możesz dowolnie zmieniać wedle swoich potrzeb
- Poprzez słowa dystrybucja Linuxa rozumiemy złożony w całość system operacyjny oparty o jądro Linux (czyli zestaw złożony z jądra, oprogramowania narzędziowego i użytkowego oraz instalatora).
- Linux formalnie oznacza jądro systemu, jednak większość ludzi zwykła nazywać w ten sposób całą dystrybucję
Jądro systemu operacyjnego
Jądro systemu operacyjnego (ang. kernel) – podstawowa część systemu operacyjnego, która jest odpowiedzialna za wszystkie jego podstawowe zadania: współpracę z rejestrami procesora, pamięcią (operacje zapisu/odczytu) oraz urządzeniami zewnętrznymi.
Z budowy jądra wynikają jego cechy, takie jak:
- wielozadaniowość,
- wielowątkowość,
- wielodostępność,
- wywłaszczalność. |
|
Linus Torvalds nadal koordynuje wydawanie nowych wersji jądra, konsolidując poprawki napisane przez innych programistów i dodając własne zmiany. Wydania jądra z parzystym drugorzędnym numerem wersji należą do serii stabilnych wydań: 1.0.x, 1.2.x, 2.0.x, 2.2.x, 2.4.x, 2.6.x i obecna 3.0.x; wydania z nieparzystym drugorzędnym numerem wersji, np. seria 2.5.x, nazywane są rozwojowymi i nie są zalecane do celów produkcyjnych. Podczas gdy Torvalds zajmuje się najnowszymi wersjami rozwojowymi, starszymi "stabilnymi" opiekują się inni programiści. Po każdej serii stabilnej (a właściwie już w jej trakcie) rozpoczynana jest seria rozwojowa, w której jest miejsce na eksperymenty, przebudowy itd. Z tego powodu wersje rozwojowe nie nadają się do poważnego użytkowania, często nawet nie mogą zostać skompilowane.
Licencja GNU GPL
Freeware programy, których można używać i rozpowszechniać za darmo. Nie wolno ich jednak sprzedawać, ani dokonywać w nich zmian - mogą być rozpowszechniane wyłącznie w niezmienionej formie.
Licencja GNU GPL (General Public Licence) lub po prostu GPL zasady licencyjne określone przez konsorcjum Free Software Foundation. Jeśli ktoś wprowadza do obiegu oprogramowanie zawierające jakąkolwiek część podlegającą licencji GPL, to musi udostępnić wraz z każdą dystrybucją binarną jej postać źródłową.
Jądro Linux jest rozprowadzane na licencji GNU GPL. Celem licencji GNU GPL jest zagwarantowanie użytkownikowi swobody udostępniania i zmieniania wolnego oprogramowania, a więc danie pewności, iż oprogramowanie jest wolno dostępne dla wszystkich użytkowników.
System Linux nie jest oprogramowaniem będącym własnością ogółu (public domain). Prawa autorskie do poszczególnych źródeł części składowych Linuxa należą do różnych autorów poszczególnych części kodu.
Jednakże Linux jest oprogramowaniem w wolnym obiegu w tym sensie, że jego użytkownikom wolno go kopiować, zmieniać i stosować w dowolny sposób oraz rozdawać własne kopie bez ograniczeń.
Ograniczenia tej licencji wynikające z zasad licencji GNUGPL nie zakazują tworzenia ani sprzedawania wyłącznie binarnych dystrybucji oprogramowania, jeżeli tylko każdy, kto otrzymuje kopie binarne, będzie miał szansę uzyskania również kodu źródłowego za rozsądną opłatą dystrybucyjną.
Nazwa GNU (ang. GNU is Not Unix) pochodzi od tzw. Projektu GNU – przedsięwzięcia mającego na celu stworzenie kompletnego, wolnego systemu operacyjnego GNU, zapoczątkowane w styczniu 1984 roku przez Richarda Stallmana (hackera o pseudonimie RMS, twórcy ruchu na rzecz wolnego oprogramowania, autora m.in. kompilatora GCC) |
|
Trochę historii - rozwój Linuxa
Dystrybucje Linuxa
Dystrybucja cały system operacyjny oparty o jądro Linux (czyli zestaw złożony z jądra, oprogramowania narzędziowego i użytkowego oraz instalatora.
Nie wszystkie systemy ukazane powyżej są Linuxami. Czy potrafisz wskazać które?
Najważniejsze cechy systemu
- wielozadaniowość, czyli praca z podziałem czasu procesora pomiędzy wiele zadań
- wielodostępność
- wieloprzetwarzanie, czyli praca wieloprocesorowa
- obsługa różnych typów systemów plików
- obsługa różnych protokołów sieciowych
- obsługa różnych formatów plików wykonywalnych
Wielozadaniowość
Wielozadaniowość - cecha systemu operacyjnego umożliwiająca mu równoczesne wykonywanie więcej niż jednego procesu. Za realizację wielozadaniowości odpowiedzialne jest jądro systemu operacyjnego.
Można więc jednocześnie np. kopiować pliki na pendrive'a, drukować coś na drukarce i dokonywać obliczeń w arkuszu kalkulacyjnym.
Proces - egzemplarz wykonywanego programu, posiadający własną przestrzeń adresową.
Przestrzeń adresowa zbiór adresów pamięci, do których potencjalnie moze sie odnieść procesor
Wielozadaniowość
Wielozadaniowość zapewniona jest między innymi przez program nazywany planistą
Planista - realizuje algorytm szeregowania odpowiedzialny za ustalanie kolejności dostępu zadań do procesora
Wywłaszczanie - Polega na przerwaniu wykonywania procesu, odebraniu mu procesora i przekazaniu sterowania do planisty.
Linux może wykorzystywać wiele procesorów. Gdy system ma mniej dostępnych procesorów niż zadań do wykonania, czas działania procesora jest dzielony pomiędzy wszystkie zadania.
W systemach bez wywłaszczania procesy musza same dbać o sprawiedliwy podział czasu procesora
Wielodostępność
Wielodostępność - cecha umożliwiająca wielu użytkownikom pracę na jednym systemie w tym samym czasie
Każdy użytkownik ma przydzielone zasoby, np. pamięć, czas procesora, miejsce na dysku, do których nikt oprócz niego nie ma dostępu. Użytkownik jest niezależny i odizolowany od innych
System plików systemu Linux
System plików metoda przechowywania plików i zarządzania nimi, tak by dostęp do nich i danych w nich zgromadzonych był łatwy dla użytkownika systemu.
System Linux potrafi obsługiwać wiele różnych systemów plików, w tym również te najbardziej popularne:
- ext3,4,5 - domyślny system plików w większości dystrybucji systemu Linux opartych na jadrze 2.4 oraz nowszych. W starszych dystrybucjach można spotkać wersję ext2
- FAT - system plików używany w środowisku DOS/Windows
- NTFS - wersja systemu plików dla Windows (niektóre starsze dystrybucje mogą mieć problemy, zwłaszcza z obsługą zapisu)
- ISO9660 - stosowny na dyskach CD/DVD
Struktura katalogów systemu Linux
Podczas instalacji Linuksa tworzona jest struktura folderów na dysku lub dyskach zainstalowanych w komputerze.Podstawowa struktura katalogów jest dość ściśle określona wg standardu FHS (z ang. Filesystem Hierarchy System). Oficjalna strona standardu: http://www.pathname.com/fhs/
|
folder główny oznaczony jest w Linuksie symbolem slash lub czasami słowem root, które oznacza z angielskiego korzeń. Wszystkie katalogi wywodzą się od tego folderu. To w tym miejscu jest zainstalowana cała struktura plików, katalog główny tworzy osobną partycję |
|
tutaj znajdują się binarne (wykonywalne) pliki najbardziej podstawowych narzędzi systemowych |
|
przechowywane jest w nim jądro systemu (kernel) oraz m.in. pliki bootloadera w przypadku GRUB (czyli programu rozruchowego) |
|
znajdujące się tutaj pliki nie są faktycznie plikami na dysku, lecz odnoszą się do urządzeń - są to punkty dostępu do urządzeń systemowych, np. napędów CD/DVD |
|
zawiera pliki konfiguracyjne, ustawienia systemowe |
|
przechowywane są w nim katalogi domowe poszczególnych użytkowników. Ponadto jest on przeznaczony na zapisywanie danych, np. dokumentów, obrazków, muzyki i wszelkich plików których używa dany user |
|
zawiera biblioteki (ang. libraries) dla programów z katalogów /bin i /sbin |
|
z uwagi na to, że katalog główny w Linuksie musi być odrębną partycją, w katalogu głównym znajduje się również folder, w którym system plików umieszcza zagubione pliki (np. z powodu błędów na dysku) |
|
punkt montowania (ang. mount point) innych niż natywny systemów plików |
|
Punkty montowań dla nośników wymienialnych (ang. media; np. CD-ROMów) - katalog pojawił się w FHS v2.3 |
|
zawiera statycznie kompilowane aplikacje |
|
wirtualny system plików proc informujący o stanie systemu i poszczególnych procesów, w większości pliki tekstowe |
|
katalog domowy użytkownika root |
|
pliki wykonywalne do zarządzania systemem (ang. system
binaries) |
|
przechowywane sa w nim pliki tymczasowe (ang. temporary
files), wykorzystywane przez różne aplikacje |
|
przechowywane są w nim pliki dokumentacji systemu oraz
większość programów użytkownika |
|
pliki często ulegające zmianom (ang. variable files), takie jak:
logi, bazy danych, tymczasowe pliki e-mail |
Interpreter poleceń, powłoka systemowa
Interpreter poleceń = powłoka systemowa - Program pośredniczący we współpracy użytkownika z jądrem systemu, ma postać wiersza poleceń
Nie można pracować bezpośrednio z podstawową częścią systemu linuksowego, jaką jest jego jądro (kernel) - niezbędny jest do tego program pośredniczący, czyli właśnie interpreter, inaczej nazywany powłoką systemu operacyjnego (shell).
Jądro systemu zawiera wszelkie podprogramy potrzebne do przeprowadzania operacji wejścia i wyjścia, zarządzania plikami itp. Powłoka pozwala korzystać z tych podprogramów za pomocą wiersza poleceń. Poza tym, powłoki obsługują również język programowania. Programy napisane w języku powłoki nazywane są zwykle skryptami lub skryptami powłoki.
Powłoka znana z systemu MS-DOS
command.com
domyślna powłoka (interpreter poleceń) systemu MS-DOS. Tłumaczy polecenia wpisane po znaku zachęty (ang. prompt - zwykle w postaci C:\ lub C>) na komendy wykonywalne przez system MS-DOS
Po wpisaniu przez użytkownika dowolnego ciągu znaków i naciśnięciu przycisku enter powłoka interpretuje wpisany ciąg znaków, sprawdzając czy jest to polecenie wewnętrzne (np. CLS, CHOICE, ECHO, PROMPT, IF, FOR) albo polecenie uruchomienia programu zewnętrznego (np. FORMAT.COM, EDIT.COM) |
|
Schemat komunikacji w systemie
Zasada działania powłoki System plików.
Powłoki Linux: BASH, SH
BASH – powłoka systemowa napisana dla projektu GNU. Program jest rozprowadzany na licencji GNU GPL. BASH to jedna z
najpopularniejszych powłok systemowych.
Jest domyślną powłoką w większości dystrybucji systemu GNU/Linux oraz w systemie Mac OS X od wersji 10.3, istnieją także wersje dla większości systemów uniksowych.
Nazwa jest akronimem od Bourne-Again Shell (angielska gra słów: fonetycznie brzmi tak samo, jak born again shell, czyli odrodzona powłoka). Wywodzi się od powłoki Bourne'a sh, która była jedną z pierwszych i najważniejszych powłok systemu UNIX.
Powłoki Linux: CSH
CSH (od ang. C shell) jest jedną z systemowych powłok uniksowych. Została stworzona przez Billa Joya dla systemu BSD.
Nazwa C shell jest grą słów: dosłownie oznacza powłokę [o składni] języka C, fonetycznie da się to jednak odczytać sea shell, czyli muszelka
Powłoka ta pochodzi od powłoki SH. Powłoka C shell wniosła wiele ulepszeń w stosunku do SH, takich jak m.in. aliasy i historia komend.
Niestety jej możliwości skryptowe pozostawiają wiele do życzenia.
Powłoki Linux: KSH
Korn shell (KSH) - powłoka unixowa stworzona przez Davida Korna z AT&T Bell Laboratories w połowie lat osiemdziesiątych. Powłoka KSH jest całkowicie kompatybilna wstecz z powłoką SH, zawiera także wiele elementów z powłoki CSH – takich jak historia wpisanych komend.
KSH zawiera wbudowany system obliczania wyrażeń arytmetycznych oraz zaawansowane funkcje skryptów podobne do tych używanych w bardziej zaawansowanych językach programowania, takich jak AWK, Perl.
Korn Shell jest sprzedawany w postaci kodu źródłowego oraz plików binarnych – przez AT&T i Novell oraz przez inne firmy poza granicami USA.
PDKSH jest implementacją KSH na licencji public domain (czyli „dla dobra publicznego”.
Opr. Adam Nawara |