Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Budowa systemu linux

No description
by

adam pasnik

on 17 February 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Budowa systemu linux

Architektura systemu linux WSTEP Geneza O żadnym systemie operacyjnym od 1995 roku nie mówiło się tak głośno jak o Linuxie. W świecie Unixa, Linux jest już zadomowiony na stałe. Od narodzin w 1992 roku minęło już 8 lat, z systemu tego korzysta już bardzo dużo osób, wykorzystują go inżynierowie, naukowcy a przede wszystkim młodzi entuzjaści systemów operacyjnych dla których Linux stał się orężem w walce ze znienawidzonym wrogiem. Fakt, że jest za darmo powoduje bardzo szybki wzrost liczby użytkowników. W ostatnim roku systemem tym wreszcie zainteresował się świat wielkich komputerowego świata. Wielu producentów sprzętu i oprogramowania z zadowoleniem przyjęło alternatywę dla Windows i zdecydowało się na wspieranie tej platformy.
Mówiąc o systemie Linux nie sposób nie wspomnieć o nie nowym, a tak naprawdę dopiero teraz bardzo popularnym sposobie tworzenia i dystrybucji oprogramowania jakim jest open source. To dzięki mechanizmom zapewnionym przez twórców tej idei system Linux w bardzo krótkim czasie zdobył tak dużą popularność. Linux zawsze, a na pewno przez przynajmniej kilka następnych lat, związany będzie z tym ruchem. Niewątpliwie ruch open source bardzo wpływa na obecny rynek systemów operacyjnych i oprogramowania. Geneza systemu operacyjnego Linux związana jest z systemem UNIX. UNIX powstał na początku lat siedemdziesiątych kiedy Denis Ritchie i Ken Thompson opracowali w laboratoriach AT&T pierwszą wersję systemu, którą następnie przepisali w języku C. Kody źródłowe początkowych wersji systemu były bezpłatne, dzięki czemu system stał się bardzo popularny szczególnie w środowiskach akademickich. Jednak od roku 1979 firma AT&T zaczęła pobierać opłaty licencyjne za kody źródłowe. Spowodowało to, że wiele firm, uniwersytetów zaczęło tworzyć własne wersje systemu UNIX. W wyniku takich działań AT&T powstał wtedy, opracowany przez Uniwersytet Kalifornijski w Berkeley, system BSD (Berkeley Software Distribution), firma Sun Microsystems wypuściła SunOS, Microsoft - Xenix-a. The Santa Cruz Operation - SCO Unix. Również firma AT&T wprowadziła do sprzedaży swoją wersję systemu System V ze swoim interfejsem programowym. Wielość różnych rozwiązań spowodowała chaos na rynku oprogramowania, poszczególne wersje aplikacji nie były ze sobą kompatybilne. Zaistniała więc potrzeba standaryzacji systemu jak również tworzonego dla niego oprogramowania. Opracowania zbioru standardów podjął się Instytut Inżynierów Elektryków i Elektroników ( Institute of Electrical and Electronics Engineers -IEEE) , który to opracował standard POSIX (IEEE POSIX 1003) dla unixowych systemów operacyjnych. Normy te określają poszczególne elementy całego systemu tak aby zachować zgodność programową poszczególnych wersji. Jeżeli oprogramowanie i system operacyjny przestrzega norm POSIX nie powinno być większego problemu z przenoszeniem oprogramowania pomiędzy systemami.
Systemy unixowe są z założenia systemami wielodostępnymi i wielozadaniowymi. Są to jednocześnie systemy dość złożone, wymagające dużych mocy obliczeniowych. Początkowo wymagały one dużych i drogich komputerów mogących sprostać ich wymaganiom co zawęziło grono użytkowników do specjalistów ewentualnie studentów kierunków informatycznych. Komputery domowe np. klasy PC w początkach swojego istnienia nie mogły sprostać wymaganiom systemu. Sytuacja ta zmieniła się w momencie pojawienia się procesorów klasy Intel 386 które już dawały możliwość pracy wielozadaniowej. Historia systemu Linux Za twórcę systemu LINUX uważa się Fina Linusa Torvaldsa, który jako student informatyki pracując nad trybem chronionym procesora 80386 stworzył kilka programów działających w systemie Minix (Minix - typowo edukacyjny wielozadaniowy system operacyjny stworzony przez A. Tanenbauma rozprowadzany na podstawie licencji GNU). Postanowił on stworzyć własne jądro nowego systemu. Wykorzystał do tego celu wiele gotowych rozwiązań wziętych z systemu Minix, dzięki czemu zaoszczędził wiele czasu gdyż nie musiał tworzyć jądra od podstaw. W wyniku czego kiedy to w sierpniu roku 1991 ogłosił na grupie dyskusyjnej comp.os.minix, że pracuje nad bezpłatną wersją systemu operacyjnego dla komputerów AT-386 nazwał ją odmianą Minixa. Początkowo system nie wzbudził większego zainteresowania wśród użytkowników komputerów PC. Instalacja nowego systemu była bardzo skomplikowana, pierwsza wersja była bardzo uboga aby mogła wzbudzić zainteresowanie. Dołączenie kompilatora języka C oraz zaimplementowanie podstawowych poleceń uniksowych nie spowodowało gwałtownego zainteresowania nowym systemem. Dopiero kiedy Torvalds postanowił dostosować system do norm POSIX dzięki czemu umożliwił przenoszenie oprogramowania pomiędzy Linuxem a komercyjnymi systemami grono użytkowników systemu zaczęło bardzo szybko się powiększać. Kod źródłowy upowszechniany na wielu serwerach FTP, uwagi użytkowników przesyłane za pomocą poczty elektronicznej czy list dyskusyjnych przyczyniły się do szybkiego dopracowania systemu. Na popularności Linuxa zaważył jednak bardzo szybki rozwój Internetu na początku lat dziewięćdziesiątych. Gdyby system powstał kilka lat wcześniej być może nie zyskał by aż tylu zwolenników w początkowym okresie i umarłby z braku zainteresowania gdyż byłaby to tylko kolejna edukacyjna wersja systemu Minix. Innym być może ważniejszym czynnikiem był fakt, że opracowany zastał on na podstawie licencji GPL (General public licence ) fundacji FSF (Free Software Fundation). Organizacja ta promuje "wolne" - czyli niezależne od jakichkolwiek firm, wysokiej jakości oprogramowanie użytkowe. Programy takie muszą być rozpowszechniane wraz z pełnym kodem źródłowym i nie ma znaczenia czy są to wersje komercyjne czy nie. Dzięki takiemu posunięciu każdy użytkownik aplikacji, który ma jakieś pojęcie o programowaniu, czy systemach operacyjnych może szybko poprawić, lub co namniej zasygnalizować fakt zaistnienia błędu w kodzie programu. Innym, bardziej socjologicznym niż informatycznym czynnikiem wpływającym na rozwój systemu był fakt, iż użytkownicy (głównie młodzi) systemów komputerowych nie przepadają za monopolem kilku firm na rynku komputerowym (zarówno w dziedzinie oprogramowania jak i sprzętu) . Fakt walki z monopolistami jednoczył informatyków, którzy coraz chętniej uczestniczyli w pracach nad nowym systemem. Schemat Budowy Rozwój i upowszechnienie komunikacji sieciowej spowodowało, że wkrótce tysiące osób zaczęło spontanicznie pisać oprogramowanie dla nowego systemu, udoskonalać jądro systemu, przerabiać inne gotowe aplikacje rozpowszechniane na podstawie licencji GPL. Powstanie wielu list dyskusyjnych poświęconych Linuxowi spowodowało, że coraz więcej osób zaczęło wprowadzać poprawki do jądra systemu w wyniku czego Torvalds nie mógł już samodzielnie zajmować się tworzeniem systemu. Zaczął on tylko rozbudowywać i koordynować pracę nad jądrem systemu natomiast całą resztę pozostawił dla innych.
Dzięki takiemu działaniu wielu tysięcy bardzo często anonimowych programistów system linux stawał się powoli systemem coraz bardziej profesjonalnym i kompletnym.
W początkowym okresie Linux miał problemy ze stabilnością i współpracą pomiędzy poszczególnymi elementami systemu. Pierwsza stabilna wersja jądra 1.0 wydana została dopiero w 1994 roku po usunięciu wszystkich problemów. Z uwagi na spontaniczny charakter powstawania systemu na rynku pojawiło się kilka jego odmian zwyczajowo nazywanych dystrybucjami, które różniły się zawartością programów dodatkowych, wersjami jądra . Jądro systemu Jądro (kernel) to plik vmlinuz znajdujący się w katalogu /boot jest on ładowany do pamięci podczas uruchamiania się systemu. Jądro odpowiada za funkcjonowanie podstawowych elementów systemu: przełączanie zadań, planowanie przydziału procesora, komunikację z urządzeniami, zarządzania pamięcią fizyczną i wirtualną. Powinno być ono dostosowane do rodzaju sprzętu czyli powinno zawierać wszystkie sterowniki do wszystkich komponentów komputera. Jądro jest prawie w całości napisane w języku C, dzięki dostępności kodów źródłowych każdy może poprawić występujące błędy. Fakt, że działanie jądra systemu jest dokładnie znane umożliwia bardzo szybki rozwój Linuxa. Praktycznie co trzy - cztery dni ukazuje się nowa wersja jądra, którą można w postaci plików źródłowych ściągnąć z serwera FTP i przekompilować na swoim komputerze dołączając sterowniki odpowiednich urządzeń . Ponieważ jednak nowe wersje bardzo często zawierają błędy twórcy Linuxa postanowili odpowiednio numerować wersje jądra. Jądra podzielone zostały na stabilne (stable) oraz rozwojowe (development) - użytkownik powinien posiadać najnowszą wersję stabilną jądra. Wersje testowe przeznaczone są dla osób pracujących nad kodem źródłowym lub lubiących eksperymentować z systemem. Numer jądra składa się z trzech cyfr. Pierwszy numer oznacza numer wersji głównej, drugi numer podwersji, mówi on czy jądro jest stabilne czy też nie . Ostatni numer jest to tzw. numer rewizji. W numeracji przestrzega się następującej reguły: stabilne jądra mają środkową liczbę parzystą np. 2.0.35 a rozwojowe nieparzystą np. 2.1.117. Co pewien czas (średnio co pół roku) kod jądra przestaje być rozszerzany, rozpoczyna się faza testów a następnie kernel dostaje numer wersji stabilnej. Koordynacją rozwoju jądra zajmuje się Linus Torvalds - autor wersji 0.0.1 BUDOWA SYSTEMU Budowa Jądra

Sercem Linuxa jest jego jądro. W jądrze można wyróżnić dwa główne składniki:

podsystem plików,

podsystem sterujący procesami.

Podsystem plików zarządza plikami, a podsystem sterujący procesami odpowiedzialny jest za synchronizację procesów, komunikację miedzy nimi, zarządzanie pamięcią i szeregowanie procesów. Podsystem plików zarządza plikami:

przydziela na nie pamięć,

administruje pamięcią wolna,

steruje dostępem do plików,

udostępnia użytkownikom dane. Podsystem sterujący procesami

Podsystem sterowania procesami odpowiedzialny jest za:

synchronizację procesów,

komunikację miedzy nimi,

zarządzanie pamięcią,

szeregowanie procesów. Partycjonowanie - oznacza dzielenie wolnego miejsca na dysku na części, czyli tzw. partycje.

Partycja - jest to wydzielona część miejsca na dysku twardym. Partycje dzielą się na:

Partycja podstawowa - jest to wydzielona część dysku fizycznego, maksymalna ilość partycji podstawwych na jednym dysku to 4 partycje tego typu. Partycje podstawowe w Linuksie przyjmują numerację od 1 do 4.

Partycja rozszerzona - podobnie jak partycja podstawowa, jednak jak nazwa wskazuje, partycja ta jest rozszerzona o możliwość utowrzenia w jej obrębie nieograniczonej liczby partycji logicznych, maksymalna ilość partycji rozszerzonych to 1 partycja tego typu.

Partycja logiczna - partycja tworzona w obrębie partycji rozszerzonej, ilość partycji tego typu jest nieograniczona. W Linuksie przyjmują numerację od 5 do n.


Formatowanie - inaczej zakładanie systemu plików na dysku/partycji, czynność ta powoduje usuwanie zawartości dysku/partycji.

System plików - odpowiada za przechowywanie i zarządzanie plikami na dysku. Podział dysku dla systemów Linux.

Większość dystrybucji GNU/Linux wymaga do poprawnej instalacji jednej partycji ale zalecane jest stworzenie przynajmniej dwóch.

Systemy linuksowe w przeciwieństwie do Windowsa mają inne oznaczenia dysków, są one moim zdaniem bardziej szczegółowe i wyglądają tak:

hda1
sdb1


Wydaje się trudne do zrozumienia ale wcale tak nie jest:

h - oznacza rodzaj dysku, oznaczenie takie przyjmują głównie starsze dyski typu ATA

s - tą literą oznaczane są już dyski typu SATA, SCSI itp.

a,b - oznacza kolejność dysków, czyli hda, sda - pierwszy dysk,natomiast hdb, sdb oznacza drugi dysk i podobnie jak w Windows od a do z oznaczone są kolejne dyski.
1,2 - cyframi rozpoczynając od jeden oznacza się kolejność partycji na dysku.

Stacja dyskietek oznaczona jest jako fd, gdzie fd0 to pierwsza stacja dyskietek, fd1 druga itd., napędy cd najczęściej oznaczane są jako sr0. Wielkość partycji.

Wielkość partycji również zależy w głównej mierze od ilości oprogramowania i przechowywanych danych i wymagań konkretnych dystrybucji, obecne dystrybucje dla początkujących jak Ubuntu itp. wymagają ok. 4GB wolnego miejsca na dysku. Dla partycji, która będzie montowana w katalogu głównym, proponuję przeznaczyć od 5 do 10GB. Partycja wymiany inaczej swap, przyjmuje wielkość w zależności od ilości posiadanej pamięci RAM, oczywiście nie ma musu trzymać się jakiejś reguły, ogólnie dla swapu wystarczy już jakieś 256MB, jeśli nie zamierza się korzystać z hibernacji, gdy ilość pamięci RAM jest większa: Formatowanie partycji.

Partycję linuksowe można formatować różnymi systemami plików, najbardziej popularne to ext2, ext3 i obecnie najnowszy ext4 oraz ReserFS, Reiser4, Xfs, Jfx i inne przeznaczone dla Linuksa. Wybranym systemem plików formatuje się wszystkie partycje oprócz partycji swap, która jest samoczynnie czyszczona po każdym restarcie. PARTYCJE i SYSTEMY PLIKÓW Funkcje systemowe

Funkcje systemowe tworzą interfejs miedzy wykonywanym programem a systemem operacyjnym. Ogólnie rzecz biorąc, można z nich korzystać za pomocą instrukcji np. w języku asemblera. Zbiór funkcji systemowych podzielono na te, które współpracują z podsystemem plików i te współpracujące z podsystemem sterowania procesami.

Funkcje systemowe można z grubsza podzielić na piec podstawowych kategorii:

nadzorowanie procesów,

operacje na plikach,

operacje na urządzeniach,

komunikacja,

utrzymywania informacji.
minix - najstarszy, uważany za najbardziej niezawodny, jednak posiada znaczne ograniczenia (brakuje niektórych znaczników czasu, nazwy plików mogą mieć maksymalnie 30 znaków, system plików może mieć co najwyżej 64 MB).
xia - zmodyfikowana wersja systemu minix, w której zostały podniesione limity: maksymalnej długości nazwy oraz rozmiaru systemu plików. Żadne nowości nie zostały wprowadzone. Nie jest obsługiwany od wersji 2.1.21.
ReiserFS - bardzo szybki i stabilny system plików, szczególnie dobrze radzi sobie z dużą liczbą małych plików. Obecnie w wersji 3.6, na ukończeniu są natomiast prace nad następcą Reiser4.
XFS - również szybki system plików, głównie za sprawą tego, iż wiele informacji przechowuje w pamięci RAM. Niestety jest przez to podatny na awaryjne przerwanie działania systemu.
ext4 – następca ext3, obecnie jeden z najpopularniejszych systemów plików dla Linuksa.
ext3 - w zasadzie jest to ext2 z tą różnicą, że ma mechanizmy księgowania operacji przez co wzrosła stabilność tego systemu plików i odporność na awaryjne przerwanie działania systemu. Można go jednak zamontować jako ext2 (bez księgowania).
ext2 - nie zawiera księgowania, wyparty przez ext3.
ext - starsza wersja ext2, nie jest zgodna wzwyż. Aktualnie nie używany. Nie jest obsługiwany od wersji 2.1.21. SYSTEMY PLIKÓW
Full transcript