system operacyjny linuxjanek.ae.krakow.pl › ~wiluszt › so › poprawka ›...

32
Wiesław Płaczek Systemy Operacyjne: Wykład 12 1 System operacyjny System operacyjny Linux Linux Perspektywa historyczna Podstawy projektu • Moduły jądra • Zarządzanie procesami • Planowanie • Zarządzanie pamięcią Systemy plików • Wejście i wyjście Komunikacja międzyprocesowa • Bezpieczeństwo

Upload: others

Post on 23-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 1

System operacyjny System operacyjny LinuxLinux• Perspektywa historyczna• Podstawy projektu• Moduły jądra• Zarządzanie procesami• Planowanie • Zarządzanie pamięcią• Systemy plików• Wejście i wyjście• Komunikacja międzyprocesowa• Bezpieczeństwo

Page 2: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 2

Perspektywa historycznaPerspektywa historyczna• 1969: 1-sza wersja systemu UNIX opracowana przez Kena

Thompsona w Bell Labs (AT&T) dla minikomputera PDP-7.• 1973: 3-cia wersja systemu UNIX napisana w języku C przez Kena

Thompsona i Dennisa Richiego (autor języka C) → przenośność!• Ważniejsze odmiany systemu UNIX:

System V wersja 4 (SVR4) – wersja opracowana przez AT&T.BSD (Berkeley Software Distribution) – odmiana opracowana przez University of California w Berkeley; najnowsza wersja: FreeBSD.Solaris – system operacyjny firmy Sun Microsystems, oparty o SVR4 i BSD; najbardziej rozpowszechniona komercyjna implementacja Uniksa.Linux – system operacyjny oparty na SVR4 i 4.3BSD, ale jądro całkowicieoryginalne, napisane niezależnie; najpopularniejsza obecnie odmiana Uniksa.

• 1991: Linus Torvalds, student informatyki Uniwersytetu w Helsinkach, napisał małe, lecz kompletne jądro systemu operacyjnego dla 32-bitowego procesora Intel 80386, który nazwał Linux.

Kod źródłowy Linuxa został od razu udostępniony bezpłatnie w sieci Internet, co spowodowało, że do jego dalszego rozwoju włączyło się wielu użytkowników z całego świata – taki rozwój systemu trwa do dziś.Część elementów systemu została zapożyczona z innych projektów (np. GNU).

Page 3: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 3

Licencja i rozpowszechnianie Licencja i rozpowszechnianie LinuxaLinuxa• Jądro systemu Linux jest rozpowszechniane w ramach licencji GNU

General Public Licence (GPL), określonej przez konsorcjum Free Software Foundation (FSF), jako tzw. oprogramowanie w wolnym obiegu (free software).

Zakaz prywatyzacji produktów powstałych z wykorzystaniem Linuxa lub pochodnych systemu (tzn. odmian zachowujących standardy Linuxa).Oprogramowanie nie może być redystrybuowane w formie czysto binarnej –wraz z każdą dystrybucją binarną musi być udostępniony kod źródłowy.

• Dystrybucje Linuxa:Standardowe, prekompilowane zbiory pakietów, zwane dystrybucjami, zawierają podstawowy system Linux, narzędzia do instalowania systemu i zarządzania nim oraz gotowe do instalowania pakiety typowych narzędzi systemu UNIX. Pierwsze dystrybucje zarządzały pakietami jedynie przez dostarczanie środków do rozpakowywania wszystkich plików w odpowiednie miejsca; współczesne dystrybucje zawierają zawansowane zarządzanie pakietami. Większość obecnych dystrybucji stosuje lub przynajmniej rozpoznaje pakiety plików RPM – ułatwiające instalację, rozbudowę i usuwanie oprogramowania.Wczesne dystrybucje: SLS, Slackware.Popularne dystrybucje: RedHat, Debian, SuSE, Caldera, Fedora itd.

Page 4: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 4

Podstawy projektuPodstawy projektu• Linux jest wielodostępnym (multiuser), wielozadaniowym

(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX.

• System plików Linuxa jest zgodny z tradycyjną semantyką uniksową.

• Linux realizuje w pełni sieciowy standard systemu UNIX.• Głównymi celami projektowymi są: szybkość, wydajność i

standaryzacja.• Linux został zaprojektowany tak, aby pozostawał w zgodzie z

istotnymi dokumentami standardu POSIX (zbiór specyfikacji dotyczących wspólnych własności systemu operacyjnego); co najmniej dwie dystrybucje Linuxa zdobyły oficjalne certyfikaty komitetu normalizacyjnego POSIX.

• 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.

Page 5: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 5

Ładowalne moduły jądra

Jądro Linux

Wspólne biblioteki systemu

Programy zarządzania

systemem

Procesy użytkowe

Pomocnicze programy użytkowe

Kompilatory

Składowe systemu Składowe systemu LinuxLinux

System Linux składa się z trzech głównych fragmentów kodu:• Jądro: jest odpowiedzialne za realizację wszystkich istotnych abstrakcji systemu

operacyjnego.Kod jądra jest wykonywany w trybie jądra (kernel mode) z pełnym dostępem do wszystkich fizycznych zasobów komputera.Cały kod jądra ze wszystkimi strukturami danych przebywa w tej samej pojedynczej przestrzeni adresowej

• Biblioteki systemowe: Definiują standardowy zbiór funkcji, za pomocą których aplikacje mogą współpracować 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: wykonują osobne, specjalizowane zadania administracyjne.

Page 6: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 6

Moduły jądraModuły jądra• Moduły jądra są to części kodu jądra, które mogą być

kompilowane, ładowane i usuwane niezależnie od reszty jądra.• Moduł jądra zazwyczaj steruje pracą urządzenia, systemem plików

lub protokołem sieciowym.• Moduły jądra są przydatne z następujących powodów:

W celu dodania nowych właściwości do jądra wystarczy napisać nowy moduł jądra i korzystać z niego bez przebudowy całego jądra.Interfejs modułów jądra umożliwia osobom postronnym pisanie i rozpowszechnianie na własnych zasadach modułów sterujących urządzeń lub systemów plików, których nie można rozpowszechniać na zasadach licencji GPL.Moduły jądra pozwalają na zestawianie systemu Linux z minimalnym, standardowym jądrem bez wbudowywania w nie żadnych dodatkowych modułów sterujących urządzeń.

• Moduły jądra są wspomagane przez trzy następujące składowe: Zarządzanie modułami (module management);Rejestracja modułów sterujących (driver registration);Mechanizm rozwiązywania konfliktów (conflict resolution).

Page 7: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 7

Zarządzanie modułamiZarządzanie modułami• Umożliwia wprowadzenie modułów do pamięci i ich kontakt z

resztą jądra.• Zadanie ładowania modułu jądra podzielone jest na dwie sekcje:

Zarządzanie częściami kodu modułu w pamięci jądra;Manipulowanie symbolami, do których modułom wolno się odwoływać.

• Ładowanie modułu przebiega w dwu etapach:Ładowacz modułu (module loader) zgłasza zapotrzebowanie na ciągły obszar pamięci wirtualnej jądra potrzebny dla modułu, a jądro zwraca adres przydzielonej pamięci.Wywołanie systemowe przekazuje moduł do jądra wraz niezbędną tablicą symboli, które chce on eksportować (moduł jest słowo po słowie kopiowany do zarezerwowanego obszaru, a tablica symboli jądra jest aktualizowana za pomocą nowych symboli).

• Ostatnią składową zarządzania modułem jest procedura zamawiania modułu (module requestor).

Zarządza ładowaniem zamawianych modułów, których aktualnie nie ma w pamięci.Regularnie odpytuje jądro, sprawdzając, czy dynamicznie załadowany moduł jest ciągle w użyciu, a gdy nie jest już potrzebny, usuwa go z pamięci.

Page 8: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 8

Rejestrowanie modułu sterującegoRejestrowanie modułu sterującego• Umożliwia modułowi poinformowanie reszty jądra o udostępnieniu

nowego modułu sterującego.• Jądro utrzymuje dynamiczne tablice wszystkich znanych modułów

sterujących (programów obsługi urządzeń, device drivers) i dostarcza zestawu procedur umożliwiających dodawanie do tych tablic lub usuwanie z nich modułów sterujących w dowolnej chwili.

• Tablice rejestracyjne zwierają następujące elementy:Moduły sterujące urządzeń: znakowych (terminale, myszki drukarki itp.), blokowych (programy obsługi dysków) oraz interfejsów sieciowych.Systemy plików: oprogramowanie realizujące procedury wywołań wirtualnego systemu plików Linuxa, zarówno lokalnego, jak i sieciowego.Protokoły sieciowe: cały protokół sieciowy, np. IPX, lub nowy zbiór reguł filtrowania pakietów przez zaporę ogniową.Format binarny: określa zasady rozpoznawania i ładowania pliku wykonywalnego nowego typu.

• Ponadto moduł może zarejestrować nowy zbiór wpisów w tablicach sysctl i /proc, aby umożliwić jego konfigurowanie dynamiczne.

Page 9: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 9

Rozwiązywanie konfliktówRozwiązywanie konfliktów• System Linux pracuje na sprzęcie występującym w różnych i

zmieniających się konfiguracjach, mogą się więc pojawiać problemy konfliktów między modułami sterującymi urządzeń przy dostępie do tych samych zasobów.

• Linux posiada centralny mechanizm rozwiązywania konfliktów, który pozwala rozstrzygać o dostępie do zasobów sprzętowych.

• Do głównych celów tego mechanizmu należą:Ochrona modułów przed kolizjami przy dostępie do zasobów sprzętowych;Zapobieganie zaburzaniu działania istniejących modułów sterujących przez autosondy (autoprobes), tj. testy inicjowane przez moduły sterujące w celu automatycznego wykrycia konfiguracji sprzętu; Rozwiązywanie konfliktów między wieloma modułami sterującymi usiłującymi skorzystać z tego samego sprzętu.

• Aby osiągnąć te cele, jądro utrzymuje wykazy przydzielonych zasobów sprzętowych – jeżeli jakiś moduł sterujący urządzenia chce sięgnąć po zasób, musi go najpierw zarezerwować w bazie danych jądra (w przypadku niepowodzenia rezerwacji moduł może zażądać swego usunięcia lub skorzystać ze środków zastępczych).

Page 10: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 10

Zarządzanie procesamiZarządzanie procesami• System UNIX rozdziela tworzenie procesów i wykonywanie

nowych programów na dwie odrębne operacje:Funkcja systemowa fork tworzy nowy proces.Wykonanie nowego programu odbywa się poprzez wywołanie funkcji exec.

• W systemie UNIX proces obejmuje całość informacji, które system operacyjny musi utrzymywać, aby śledzić kontekst wykonywania indywidualnego programu.

• W systemie Linux cechy procesu dzielą się na trzy grupy: tożsamość, jego środowisko i kontekst.

• Tożsamość procesu – podstawowe elementy:Identyfikator procesu (process identifier – PID) → patrz ćwiczenia.Uwierzytelnienia (credentials): identyfikator użytkownika oraz jeden lub więcej identyfikatorów grup użytkowników – określające prawa procesu do sięgania po zasoby systemowe i pliki.Indywidualność (personality): każdy proces ma przypisany identyfikator indywidualności, który może nieco zmieniać semantykę niektórych funkcji systemowych (nie występuje w tradycyjnych systemach UNIX).Ograniczoną kontrolę nad większością identyfikatorów sprawuje sam proces, jednak PID procesu pozostaje niezmienny aż do jego zakończenia.

Page 11: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 11

Środowisko procesuŚrodowisko procesu• Proces dziedziczy środowisko po procesie macierzystym – składa

się ono z dwu wektorów zakończonych wskaźnikiem NULL:Wektor argumentów (argument vector) – wykaz argumentów wywołania programu (zgodnie z konwencją zaczyna się od nazwy samego programu).Wektor środowiska (environment vector) – wykaz par: nazwa = wartość, kojarzących nazwane zmienne środowiskowe z dowolnymi wartościami tekstowymi.

• Środowisko przechowywane jest w prywatnej przestrzeni adresowej procesu jako pierwsza dana na szczycie jego stosu.

• Przekazywanie zmiennych środowiskowych pomiędzy procesami oraz ich dziedziczenie przez proces potomny dostarcza elastycznych środków przekazywania informacji do różnych składowych oprogramowania systemowego na poziomie użytkowym.

• Mechanizm zmiennych środowiskowych umożliwia dostosowanie systemu operacyjnego do specjalnych potrzeb przez zestawianie go z procesów, a nie konfigurowanie jako systemu rozpatrywanego całościowo (np. użytkownicy mogą wybierać własne języki lub ulubione edytory niezależnie od siebie).

Page 12: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 12

Kontekst procesuKontekst procesuKontekst procesu: stan wykonywanego procesu rozpatrywany w dowolnej chwili czasu – nieustannie się zmienia!

• Kontekst planowania: informacje potrzebne planiście do zawieszania i wznawiania procesu – najważniejsza część kontekstu; należą do nich przechowywane kopie wszystkich rejestrów procesu, informacje o priorytecie planowania, wszystkich nie obsłużonych sygnałach, a także jądrowy stos procesu zarezerwowany do wyłącznego użytku przez kod w trybie jądra (np. przez funkcje systemowe, przerwania itp.).

• Rozliczanie: jądro utrzymuje informacje o zasobach zużywanych na bieżąco przez każdy z procesów oraz o ich łącznej ilości skonsumowanej przez proces w jego dotychczasowym przebiegu.

• Tablica plików: zawiera wskaźniki do jądrowych struktur plików – wykonując systemowe operacje WE/WY procesy odwołują się do plików przy pomocy indeksów do tej tablicy.

• Kontekst systemu plików: odnosi się do zamówień na otwarcie nowych plików – informacje o bieżącym katalogu głównym oraz domyślnych katalogach używanych do szukania nowych plików.

• Tablica obsługi sygnałów: określa procedurę w przestrzeni adresowej procesu, która ma być wywołana po nadejściu konkretnego sygnału.

• Kontekst pamięci wirtualnej: opisuje całą zawartość prywatnej przestrzeni adresowej procesu.

Page 13: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 13

Procesy i wątkiProcesy i wątki• Linux stosuje tę samą wewnętrzną reprezentację dla procesów i

wątków – wątek jest po prostu nowym procesem, któremu zdarza się dzielić ze swoim rodzicem tę samą przestrzeń adresową.

• Rozróżnienie między procesem a wątkiem pojawia się wtedy, gdy wątek jest tworzony przy pomocy funkcji systemowej clone.

Funkcja fork tworzy nowy proces z własnym, całkowicie nowym kontekstem.Funkcja clone tworzy nowy proces z odrębną tożsamością, ale taki któremu pozwala się dzielić struktury danych jego rodzica.Rozróżnienie to jest możliwe, ponieważ Linux przechowuje kontekst w postaci niezależnych podkontekstów – w oddzielnych strukturach danych (struktura danych procesu zawiera wskaźniki do struktur danych podkontekstów, więc podkontekst może być łatwo dzielony przez procesy).

• Funkcja systemowa clone tworząc nowy proces, przyjmuje argument określający, które podkonteksty należy skopiować, a które mają być wspólne.

• Użycie funkcji clone pozwala na dokładniejsze określenie w aplikacji, co ma być dzielone między dwa wątki.

• Linux dostarcza również mechanizmu pozwalającego na realizacjęwątków standardu POSIX (Pthreads) – na poziomie użytkownika.

Page 14: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 14

PlanowaniePlanowanie• Planowanie (scheduling) – przydzielanie czasu procesora różnym

zadaniom systemu operacyjnego.• Oprócz normalnego uruchamiania i przerywania procesów,

planowanie w systemie Linux obejmuje także wykonywanie różnych zadań jądra, zarówno zlecanych przez działający proces, jak też wykonywanych wewnętrznie na zlecenia modułu sterującego jakiegoś urządzenia.

Synchronizacja jSynchronizacja jąądradra• Zamówienie na działanie w trybie jądra można wykonać na dwa

sposoby:Wykonywany program może zamówić usługę systemu operacyjnego jawnie(za pomocą wywołania systemowego) albo niejawnie, np. przez brak strony. Moduł sterujący urządzenia może wysłać przerwanie, które spowoduje, że procesor zacznie wykonywać kod jądrowej procedury obsługi przerwania.

• Synchronizacja jądra wymaga regulacji pozwalających na wykonywanie sekcji krytycznych jądra w sposób wzajemnie nie kolidujący – aby nie uszkodzić lub nie doprowadzić do niespójności struktur danych, z których zadania jądra korzystają.

Page 15: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 15

Synchronizacja jądra Synchronizacja jądra –– c.d.c.d.• Linux używa dwóch technik do ochrony sekcji krytycznych jądra:

1. Zwykły kod jądra jest niewywłaszczalny – gdy przerwanie czasomierza zostanie odebrane w czasie kiedy proces wykonuje jądrową systemową procedurę obsługi, ustawiany jest jądrowy znacznik need_resched, który spowoduje uruchomienie planisty po zakończeniu wywołania systemowego.

2. Technika do ochrony sekcji krytycznych występujących w procedurach obsługi przerwań – przez użycie sprzętu nadzorującego przerwania procesora w celu zakazu przerwań w trakcie wykonywania sekcji krytycznej; jądro gwarantuje, że jej wykonanie przebiegnie bez ryzyka współbieżnego dostępu do dzielonych struktur danych.

• Aby uniknąć pogorszenia wydajności systemu na skutek wyłączania przerwań, w jądrze zastosowano architekturę synchronizacji umożliwiającą wykonywanie długich sekcji krytycznych bez wyłączania przerwań na czas trwania całej sekcji.

W procedurach obsługi przerwań wyodrębnione są dwie części:Górna połowa (top half) – zwykła procedura obsługi przerwań; przebiega z wyłączonymi rekurencyjnymi przerwaniami (może być przerwana tylko przez przerwania o wyższym priorytecie, a przerwania o ≤ priorytecie są zablokowane).Dolna połowa (bottom half) – procedura przebiega z włączonymi wszystkimi przerwaniami i jest nadzorowana przez miniaturowego planistę, który zapewnia, że dolne połowy nigdy nie przerywają się wzajemnie.Ta architektura jest uzupełniana przez mechanizm wyłączania wybranych dolnych połów podczas wykonywania zwykłego, pierwszoplanowego kodu jądra.

Page 16: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 16

Poziomy ochrony przed przerwaniamiPoziomy ochrony przed przerwaniami

Górne połowy procedur obsługi przerwań

Dolne połowy procedur obsługi przerwań

Systemowe procedury jądrowe (niewywłaszczalne)

Programy trybu użytkownika (wywłaszczalne) R

osną

cy p

rior

ytet

• Każdy poziom może być przerwany przez kod wykowywany na wyższym poziomie, ale nigdy nie będzie przerwany przez kod wykonywany na tym samym lub niższym poziomie.

• Procesy trybu użytkownika mogą być zawsze wywłaszczaneprzez inne procesy w chwilach określonych przerwaniami zegarowymi służącymi do realizacji podziału czasu.

Page 17: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 17

Planowanie procesówPlanowanie procesów• Linux ma dwa oddzielne algorytmy planowania procesów:

Algorytm z podziałem czasu do sprawiedliwego planowania z wywłaszczeniami działania wielu procesów.Algorytm czasu rzeczywistego dla zadań, w których priorytety bezwzględne są ważniejsze niż sprawiedliwość.

• W skład tożsamości każdego procesu wchodzi klasa planowaniadefiniująca, który z algorytmów ma być zastosowany dla procesu.

• Dla procesów z podziałem czasu Linux używa algorytmu priorytetowego, opartego na kredytowaniu.

Reguła kredytowania: kredyt = kredyt / 2 + priorytetDo wykonywania wybierany jest proces z najwyższym kredytem.Przy każdym przerwaniu od pochodzącym czasomierza proces wykonywany traci jednostkę kredytu.Kiedy jego kredyt spadnie do zera, zostaje on zawieszony, a do wykonywania wybiera się inny proces.Jeśli żaden z procesów gotowych do działania nie ma kredytu, to system wykonuje operację wtórnego kredytowania według powyższej reguły.Ten system kredytowania automatycznie preferuje procesy interakcyjne, uzależnione od wejścia-wyjścia, dla których istotny jest czas odpowiedzi.

Page 18: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 18

Planowanie procesów Planowanie procesów –– c.d.c.d.• Linux realizuje dwie klasy planowania w czasie rzeczywistym: algorytm FCFS

(„pierwszy zgłoszony – pierwszy obsłużony”) oraz algorytm rotacyjny.• Każdy proces czasu rzeczywistego oprócz klasy planowania ma również priorytet.

Planista wykonuje zawsze proces o najwyższym priorytecie – spośród procesów o równych priorytetach, do wykonania wybierany jest proces, który najdłużej czekał.Procesy FCFS działają do końca lub do zablokowania.W algorytmie rotacyjnym proces zostanie po chwili wywłaszczony i przesunięty na koniec kolejki planowania – procesy o równych priorytetach będą automatycznie dzielićczas między siebie.

Planowanie w czasie rzeczywistym jest łagodne, a nie rygorystyczne (np. kod jądra nie może być nigdy wywłaszczony przez kod poziomu użytkownika).

Wieloprzetwarzanie symetryczneWieloprzetwarzanie symetryczne• Jądro Linux 2.0 było pierwszym jądrem Linuxa wspierającym sprzęt

wieloprocesora symetrycznego (symmetric multiprocessor – SMP) – różne procesy lub wątki mogą działać równolegle na oddzielnych procesorach.

• W celu spełnienia bezwywłaszeniowych wymagań synchronizacji jądra, SMPużywa wirującej blokady w jądrze nakładającej ograniczenie, że w danej chwili tylko jeden procesor może wykonywać kod w trybie jądra.

• Od wersji Linux 2.2 implementacja SMP używa ponadto wielu blokad (zamków)odnoszących się do pojedynczych struktur danych jądra, co daje możliwośćjednoczesnego wykonywania kodu w trybie jądra przez wiele procesorów.

Page 19: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 19

Zarządzanie pamięciąZarządzanie pamięcią• Zarządzanie pamięcią w systemie Linux obejmuje dwie składowe:

System zarządzania pamięcią fizyczną – zajmuje się przydzielaniem i zwalnianiem stron (ramek), ich grup i małych bloków pamięci.Mechanizm obsługi pamięci wirtualnej – będącej odwzorowaniem pamięci operacyjnej na przestrzenie adresowe wykonywanych procesów.

ZarzZarząądzanie pamidzanie pamięęciciąą fizycznfizycznąą• Dyspozytor stron (page allocator) odpowiada za przydział i zwalnianie

wszystkich stron fizycznych – może przydzielać na zamówienie partie stron fizycznie ze sobą sąsiadujących.

• Dyspozytor stosuje algorytm sąsiedzkich stert (buddy-heap) w celu rejestrowania dostępnych stron fizycznych (ramek).

Łączy w pary przyległe do siebie jednostki przydziału.Ilekroć dwa sąsiadujące obszary są zwalniane, łączy się je w większy obszar itd.Gdy małe zamówienie na pamięć nie może być zrealizowane przez przydziałistniejącego, małego obszaru, wówczas większy wolny obszar zostanie podzielony na dwa sąsiednie, tak by zrealizować zamówienie.

• Przydziały pamięci w jądrze Linuxa odbywają się statycznie (moduły sterujące rezerwują ciągłe obszary pamięci podczas rozruchu systemu) lub dynamicznie –za pomocą dyspozytora stron.

• Istnieje kilka specjalizowanych podsystemów zarządzania pamięci (korzystająone z dyspozytora stron), np. alokator obszarów zmiennej długości: kmalloc.

Page 20: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 20

Pamięć wirtualnaPamięć wirtualna• System pamięci wirtualnej sprawuje pieczę nad przestrzenią

adresową widoczną dla każdego z procesów: tworzy strony pamięci wirtualnej na żądanie i zarządza sprowadzaniem ich z dysku lub odsyłaniem ich z powrotem na dysk w razie potrzeby.

• Zarządca pamięci wirtualnej utrzymuje dwa osobne obrazy przestrzeni adresowej procesu:

Zbiór oddzielnych obszarów: obraz logiczny odzwierciedlający rozkazy, które system pamięci wirtualnej otrzymywał przy organizowaniu przestrzeni adresowej – przestrzeń adresowa składa się tutaj ze zbioru nie zachodzących na siebie obszarów, reprezentujących ciągłe podzbiory przyległych stron.Zbiór stron: fizyczny obraz każdej przestrzeni adresowej, który jest pamiętany w sprzętowej tablicy stron procesu – każdy wpis w tablicy określa dokładnie bieżące położenie każdej strony pamięci wirtualnej.

• Obszary pamięci wirtualnej są scharakteryzowane przez:Pamięć pomocniczą obszaru – określa skąd pochodzą strony obszaru; obszary zwykle mają jako zaplecze pliki lub nie mają żadnego zaplecza.Sposób reagowania na pisanie – dla obszaru odwzorowanego prywatniewykonuje się kopiowanie przy zapisie, a dla obszaru wspólnego uaktualnienie.

Page 21: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 21

Pamięć wirtualna Pamięć wirtualna –– c.d.c.d.• Jądro tworzy nową przestrzeń adresową w dwu sytuacjach:

Gdy proces rozpoczyna wykonanie nowego programu za pomocą funkcji systemowejexec – proces otrzymuje nową, całkowicie pustą wirtualną przestrzeń adresową, a jej zapełnienie należy do procedur ładujących program.Przy tworzeniu nowego procesu za pomocą funkcji systemowej fork – proces otrzymuje pełną kopię wirtualnej przestrzeni adresowej swojego przodka; po operacji rozwidlenia procesy macierzysty i potomny dzielą w swoich przestrzeniach adresowych te same fizyczne strony pamięci.

• Ważnym zadaniem systemu pamięci wirtualnej jest przemieszczanie stron z pamięci operacyjnej na dysk, kiedy występuje zapotrzebowanie na pamięć. System stronicowania Linuxa można podzielić na dwie części:

Algorytm postępowania (policy algorithm) – decyduje o tym, które strony zapisywaćna dysku i kiedy; przy odsyłaniu stron stosuje się zmodyfikowany algorytm zegarowy z postarzaniem stron, gdzie wiek strony jest miarą stopnia jej aktywności w ostatnim czasie – przy odsyłaniu stron stosuje się kryterium najrzadszego ich używania (LFU).Mechanizm stronicowania (paging mechanism) – realizuje przesłanie i sprowadza strony danych z powrotem do pamięci fizycznej w razie potrzeby; umożliwia stronicowanie zarówno z użyciem urządzeń i partycji wymiany, jak i zwykłych plików – przy zapisie stron na dysku stosuje się algorytm najbliższego dopasowania(next fit), bloki na dysku przydzielane są wg. mapy bitowej używanych bloków.

• Wirtualna pamięć jądra – stały, zależny od architektury obszar wirtualnej przestrzeni adresowej każdego procesu zarezerwowany do użytku jądra; zawiera m.in. odwołania tablicy stron do każdej dostępnej, fizycznej strony w systemie.

Page 22: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 22

Wykonywanie i ładowanie programów użytkownikaWykonywanie i ładowanie programów użytkownika• Linux utrzymuje tablicę możliwych funkcji ładujących, dając

każdej z nich szansę spróbowania umieszczenia w pamięci danego pliku podczas wykonywania funkcji systemowej exec.

• Dzięki możliwości rejestrowania wielu procedur ładujących, Linux może łatwo obsługiwać zarówno nowszy format ELF, jak i a.out.

• Plik binarny nie jest wprowadzany do pamięci przez ładowacz plików binarnych (binary loader), ale dokonywane jest odwzorowanie jego stron w obszary pamięci wirtualnej; strona jest ładowana do pamięci fizycznej dopiero po nieudanej próbie odwołania do niej przez program.

• Plik binarny formatu ELF (Executable and Linking Format) składa się z nagłówka, po którym następuje kilka sekcji dopasowanych do granic stron (page-aligned).

Program ładujący formatu ELF czyta nagłówek i odwzorowuje sekcje pliku na osobne obszary pamięci wirtualnej. Po dokonaniu odwzorowania program ładujący ustawia w procesie wstępny stan rejestru licznika rozkazów za pomocą wartości początkowej zapamiętanej w nagłówku ELF i wtedy proces staje się gotowy do wykonania (może kandydować do przydziału procesora).

Page 23: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 23

Organizacja pamięci w programach formatu Organizacja pamięci w programach formatu ELFELF

Pamięć wirtualna jądra

Stos

Obszar odwzorowany w pamięci

Obszar odwzorowany w pamięci

Obszar odwzorowany w pamięci

Tekst programu (kod binarny)Dane z wartościami początkowymi

Dane bez wartości początkowychDane fazy wykonywania

Wskaźnik brk(granica obszaru danych przydzielanych dynamicznie)

Pamięć niewidoczna dla kodu w trybie użytkownika

Obszar zakazany

Page 24: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 24

Łączenie statyczne i dynamiczneŁączenie statyczne i dynamiczne• Łączenie statyczne (static linking):

Wszystkie potrzebne funkcje biblioteczne zostają osadzone wprost w binarnym pliku wykonywalnym podczas budowania przez programistę aplikacji.Statycznie połączone (skonsolidowane) pliki wykonywalne mogą podjąćdziałanie natychmiast po załadowaniu.Główną wadą jest to, że każdy wygenerowany program musi zawierać kopie dokładnie tych samych systemowych funkcji bibliotecznych.

• Łączenie dynamiczne (dynamic linking): Każdy program zawiera małą, statycznie dołączaną funkcję, wywoływaną na początku programu.Funkcja ta odwzorowuje specjalną bibliotekę konsolidacji w pamięci i powoduje wykonanie jej kodu.Biblioteka konsolidacji czyta wykaz bibliotek dynamicznych (dzielonych)wymaganych przez program oraz zawartych w nich potrzebnych zmiennych i funkcji, analizując informacje zawarte w formacie binarnym ELF.Następnie odwzorowuje te biblioteki w pamięci wirtualnej, kierując odwołania systemowe do zawartych w nich symboli.Biblioteki dzielone są kompilowane w kod niezależny od położenia(position-indepentent code – PIC), dzięki czemu mogą być odwzorowywane w dowolne miejsca pamięci wirtualnej (i wykonywane pod każdym adresem).

Page 25: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 25

Systemy plikówSystemy plików• Dla użytkownika system plików Linuxa jawi się jako hierarchiczne drzewo

katalogów spełniające semantykę systemu UNIX.• Jądro Linuxa obsługuje różnorodne typy plików, ukrywając szczegóły

implementacyjne za warstwą programową, czyli wirtualnym systemem plików(virtual file system – VFS).

• Wirtualny system plików Linuxa został zaprojektowany w oparciu o zasady programowania obiektowego – ma dwie składowe:

Zbiór definicji określających, jak powinien wyglądać obiekt o nazwie plik: strukturyobiektu i-węzła oraz obiektu pliku reprezentują poszczególne pliki, a obiekt systemu plików reprezentuje cały system plików.Warstwa oprogramowania do działań na takich obiektach: każdy z obiektów powyższych typów zawiera wskaźnik do tablicy funkcji, zawierającej adresy funkcji implementujących działania na danym obiekcie.

• Obiekt systemu plików reprezentuje połączony zbiór plików, który tworzy zamkniętą w sobie hierarchię katalogów – utrzymywany przez jądro dla każdego systemu plików udostępnianego z zamontowanego dysku lub przez sieć.

• Obiekty i-węzłów oraz plików są mechanizmami dostępu do plików: obiekt i-węzła reprezentuje plik jako całość, a obiekt pliku reprezentuje punkt dostępu do danych wewnątrz pliku (proces uzyskuje dostęp do i-węzła poprzez obiekt pliku).

Page 26: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 26

System plików System plików ext3ext3• Standardowym dyskowym systemem plików Linuxa jest system ext3, będący

rozszerzeniem systemu ext2 o kronikowanie (journaling) (strukturę dziennika).• System ext2 stosuje on podobny jak w systemie BSD ffs (Fast File System)

mechanizm odnajdywania bloków danych należących do konkretnego pliku.• Główna różnica między systemami ext2 i ffs dotyczy sposobu przydziału dysku:

System ffs przydziela plikom dysk blokami po 8 KB oraz dzieli bloki na porcje 1 KBw celu pamiętania małych plików lub niepełnych bloków na końcach plików.System ext2 używa bloków cząstkowych, ale dokonuje przydziałów za pomocąmniejszych jednostek: standardowy blok ma wielkość 1 KB, choć stosuje się też bloki o wielkościach 2 KB i 4 KB.System ext2 stosuje politykę przydziału zmierzającą do umieszczania logicznie sąsiadujących bloków pliku w fizycznie przylegających blokach dyskowych, dzięki czemu może on w jednej operacji składać zamówienia WE/WY dla wielu bloków.

• Zasady przydziału miejsca na dysku w systemie ext2:System plików jest podzielony na wiele grup bloków – przydzielając miejsce dla pliku, system najpierw wybiera grupę bloków, do której przydzielono i-węzeł pliku; do przydzielania i-węzła pliku wybiera tę grupę bloków, w której jest katalog macierzysty.Wewnątrz grupy bloków system ext2 próbuje w miarę możliwości dokonywaćprzydziałów ciągłych fizycznie, dążąc do zmniejszenia fragmentacji; aby zwiększyćwydajność stara się, gdzie to możliwe, przydzielać miejsce porcjami 8-blokowymi.

Page 27: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 27

Zasady przydziału bloków w systemie Zasady przydziału bloków w systemie ext2ext2Przydzielanie rozrzuconych wolnych bloków

Przydzielanie przyległych wolnych bloków

Blok zajęty Blok wybrany przezprocedurę przydziału

Granica bitu

Blok wolny Kierunek przeszuki-wania mapy bitowej

Granica bajta

Page 28: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 28

System plików System plików LinuxLinux--procproc• Procesowy system plików (process file system) Linuxa, zwany systemem plików

proc, jest przykładem systemu plików, którego dane nie są nigdzie pamiętane, natomiast oblicza się je na żądanie, stosownie do wydawanych przez użytkownika zamówień na operacje WE/WY.

• System plików proc wprowadzono w systemie UNIX SVR4 jako wydajny interfejs wspierający usuwanie błędów z procesów jądra – pojedynczy podkatalog tego systemu odpowiadał aktywnemu procesowi.

• Linux rozszerza system plików proc o specjalne katalogi i pliki, odpowiadające różnym statystykom dotyczącym jądra i skojarzonych z nim modułów sterujących,

Np. polecenie ps podaje informacje o procesach pobrane z systemu plików proc.• System proc musi realizować strukturę katalogów oraz zawartość umieszczonego w

niej pliku; zgodnie z semantyką systemu UNIX, musi definiować niepowtarzalny i trwały numer i-węzła dla każdego katalogu i skojarzonych z nim plików.

Te numery i-węzłów są używane w celu rozpoznawania operacji potrzebnej wtedy, gdy użytkownik próbuje czytać dane z i-węzła pliku lub przeszukiwać i-węzeł katalogu.32-bitowy numer i-węzła podzielony jest na dwie części: 16 górnych bitów zawiera PIDprocesu, a pozostałe bity określają zamawiany typ informacji o danym procesie.Kiedy dane są czytane z któregoś z tych plików, proc gromadzi odpowiednie informacje, nadając im formę tekstową i umieszcza je w buforze zamawiającego je procesu.Do wydajnego dostępu do danych jądra służy wywołanie systemowe sysctl.

Page 29: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 29

WejścieWejście--wyjście (WE/WY)wyjście (WE/WY)• System WE/WY Linux jest zrealizowany jak w typowym systemie

UNIX: wszystkim modułom sterującym urządzeń nadaje sięwygląd zwykłych plików.

• Administrator systemu może tworzyć w systemie plików specjalne pliki, które zawierają odwołania do określonych modułów sterujących urządzeń; może im nadawać prawa dostępu jak dla zwykłych plików.

• Użytkownik może otwierać kanał dostępu do urządzenia w ten sam sposób, jak otwiera dowolny inny plik – urządzenia mogą wyglądaćjak obiekty w systemie plików.

• Linux dzieli wszystkie urządzenia na trzy klasy:Urządzenia blokowe – umożliwiają swobodny dostęp do całkowicie niezależnych bloków danych o stałym rozmiarze, np. dyski.Urządzenia znakowe – obejmują większość innych urządzeń, np. taśmy, klawiatury, terminale, myszy, głośniki, mikrofony itd.; nie muszą miećwszystkich własności regularnych plików.Urządzenia sieciowe – użytkownicy nie mogą do nich bezpośrednio przekazywać danych, lecz muszą się komunikować za pośrednictwem podsystemu sieciowego jądra.

Page 30: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 30

Komunikacja międzyprocesowaKomunikacja międzyprocesowa• Standardowym mechanizmem służącym do powiadamiania procesu

o wystąpieniu asynchronicznego zdarzenia jest sygnał:Liczba sygnałów jest ograniczona i nie mogą one przenosić informacji –jedynie fakt wystąpienia sygnału jest dostępny procesowi.Jądro Linuxa nie korzysta wewnętrznie z sygnałów w celu komunikowanie się z procesami wykonywanymi w trybie jądra, zamiast tego używa mechanizmu planowanych stanów i struktur wait_queue.

• Do synchronizowania procesów Linux implementuje mechanizm semaforów systemu UNIX wydania V (przy użyciu wait_queue).

• Przekazywanie danych między procesami:Standardowy uniksowy mechanizm potoku nienazwanego (pipe) – potok ma dwie kolejki wait_queue do synchronizowania producenta i konsumenta.Mechanizm potoku nazwanego (named pipe), zwanego też potokiem FIFO– może łączyć dowolne procesy w systemie, a nie tylko procesy pokrewne.Pamięć dzielona (shared memory) systemu UNIX V – najszybszy środek przekazywania danych między procesami, ale nie zapewnia synchronizacji. Kolejki komunikatów (message queues) systemu UNIX V – synchroniczne przekazywanie danych między procesami drogą przesyłania komunikatów.

Więcej szczegółów na ćwiczeniach.

Page 31: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 31

BezpieczeństwoBezpieczeństwoZagadnienia bezpieczeństwa można podzielić na dwie grupy:

Uwierzytelnianie – zapewnienie, że nikomu nie uda się uzyskać dostępu do systemu bez uprzedniego wykazania, że ma do tego prawo.Kontrola dostępu – dostarczanie mechanizmu sprawdzania, czy użytkownik ma prawo dostępu do danego obiektu i realizowanie ochrony obiektów przed dostępem.

• Uwierzytelnianie:Podstawowym mechanizmem uwierzytelniania są hasła: hasło użytkownika zostaje zmieszane z wartością losową („przyprawione”), zakodowane za pomocą funkcji jednokierunkowej i zapamiętane w pliku haseł.Aby utrudnić łamanie haseł, przechowuje się zaszyfrowane hasło w pliku niedostępnym do czytania dla ogółu, pozwala się na dłuższe hasła, nie zezwala sięna używanie łatwych haseł (np. wyrazów słownikowych), ogranicza się liczbęniepoprawnie wprowadzonych haseł, rejestruje się przypadki nieudanych prób uwierzytelnienia, stosuje się bezpieczniejsze metody kodowania itd.Linux implementuje też system dołączalnych modułów uwierzytelniania (pluggable authentication modules – PAM) – umożliwia ładowanie modułów uwierzytelniania, które mogą określać sposoby uwierzytelniania, ograniczenia działań na kontach, funkcje kształtowania sesji lub funkcje zmiany hasła (w celu uaktualnienia wszystkich niezbędnych uwierzytelnień).System PAM może być używany przez dowolną składową systemu, która potrzebuje uwierzytelnień.

Page 32: System operacyjny Linuxjanek.ae.krakow.pl › ~wiluszt › SO › POPRAWKA › wyklad12a.pdf(multitasking) systemem operacyjnym z pełnym zestawem narzędzi zgodnych z systemem UNIX

Wiesław Płaczek Systemy Operacyjne: Wykład 12 32

Bezpieczeństwo Bezpieczeństwo –– c.d.c.d.• Kontrola dostępu:

Kontrolowanie dostępu odbywa się za pomocą niepowtarzalnych identyfikatorów numerycznych: użytkownika – UID, grupy – GID.Linux nadzoruje dostępy przez przypisywanie obiektom masek ochronnych (protection masks), określających, które tryby dostępu: pisanie, czytanie lub wykonywania są udzielane procesom z dostępem właściciela, grupy lub świata (pozostałych użytkowników).Jedynym wyjątkiem jest uprzywilejowany identyfikator użytkownika root– automatycznie udziela się mu dostępu do dowolnego obiektu w systemie.Linux rozszerza standardowy uniksowy mechanizm setuid na dwa sposoby: 1. Mechanizm przechowywanego identyfikatora użytkownika (saved user-id)

standardu POSIX, który pozwala procesowi wielokrotnie pozbywać sięidentyfikatora efektywnego (skutecznego) (EUID) i ponownie go nabywać.

2. Dodatkowe charakterystyki procesu (np. FSUID i FSGID) umożliwiające udzielanie podzbioru praw efektywnego identyfikatora użytkownika (EUID).

Linux dostarcza też mechanizm umożliwiający klientowi wybiórcze przekazanie dostępu do jednego pliku jakiemuś procesowi serwera, bez dawania temu procesowi jakichkolwiek innych praw (np. możliwośćwydrukowania pliku przez serwer) – przy pomocy gniazda sieciowego.