ochrona w systemie operacyjnym

Podobne dokumenty
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Struktury systemów operacyjnych

Struktury systemów operacyjnych

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Wprowadzenie do systemów operacyjnych

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

Działanie systemu operacyjnego

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

Działanie systemu operacyjnego

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Działanie systemu operacyjnego

Komputery przemysłowe i systemy wbudowane

Działanie systemu operacyjnego

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Struktury systemów operacyjnych

Podstawy informatyki. Izabela Szczęch. Politechnika Poznańska

SYSTEMY OPERACYJNE. kik.pcz.czest.pl/so. (C) KIK PCz Materiały pomocnicze 1 PROWADZI: PODSTAWOWA LITERATURA: ZAJĘCIA: STRONA

Java EE produkcja oprogramowania

Programowanie obiektowe. Wprowadzenie

Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) Miejsce systemu operacyjnego w architekturze systemu komputerowego

Systemy operacyjne III

Języki i paradygmaty programowania - 1

Programowanie obiektowe zastosowanie języka Java SE

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Podstawowe zagadnienia

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

projektowanie systemu

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

System komputerowy. System komputerowy

Informatyka. informatyka i nauki komputerowe (computer science)

DOS COMMAND.COM. Rys. 2. Główne moduły programowe systemu operacyjnego DOS. Interpreter poleceń. Rys. 3. Warstwowa struktura systemu DOS

Jądro systemu operacyjnego

Sieciowe Systemy Operacyjne

Środowiska i platformy programistyczne

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

Podstawy programowania. Wprowadzenie

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Wstęp do Informatyki. Klasyfikacja oprogramowania

Q E M U.

Translacja wprowadzenie

UNIX: architektura i implementacja mechanizmów bezpieczeństwa. Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci

System komputerowy. Sprzęt. System komputerowy. Oprogramowanie

Podstawy programowania

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Warstwy systemu Windows 2000

Android - wprowadzenie. Łukasz Przywarty

Systemy Operacyjne Wirtualizacja

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Historia modeli programowania

QEMU działa na procesorach procesorach: emuluje procesory: dostępne dla s.o. hosta:

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

Przegląd dostępnych hypervisorów. Jakub Wojtasz IT Solutions Architect

Opis efektów kształcenia dla modułu zajęć

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Podstawy języka Java. przygotował:

1. Etapy rozwoju systemów komputerowych

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Paweł Skrobanek. C-3, pok pawel.skrobanek.staff.iiar.pwr.wroc.pl

Informatyka. Michał Rad

System wspomagania zarządzania wirtualizacją

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

Paweł Skrobanek. C-3, pok

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Rozwiązanie Compuware dynatrace

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Systemy Operacyjne struktura

Emulacja maszyny. Program udaje zupełnie inną architekturę. Musi przetłumaczyć instrukcje emulowane na instrukcje platformy, na której działa

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

Java jako język programowania

Podstawy Informatyki Systemy operacyjne

EXSO-CORE - specyfikacja

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

PyPy's Approach to Virtual Machine Construction

Systemy operacyjne system przerwań

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Virtual Grid Resource Management System with Virtualization Technology

Zaawansowane narzędzia programowania rozproszonego

OSGi Agata Hejmej

Jadro monolityczne vs. mikrojadro. Mikrojadro. Olga Kowalczuk. 9 grudnia 2008

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Program wykładów. Strona WWW przedmiotu: Program ćwiczeń projektowych

Systemy Operacyjne - struktura

Systemy operacyjne. Paweł Pełczyński

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Systemy operacyjne. wykład dr Marcin Czarnota laboratorium mgr Radosław Maj

WPROWADZENIE DO JĘZYKA JAVA

Algorytmy i Struktury Danych

Systemy operacyjne. Informatyka Stosowana, I rok. Krzysztof Wilk. Katedra Informatyki Stosowanej i Modelowania

Kernel Kompilacja jądra

Język JAVA podstawy programowania

INŻYNIERIA OPROGRAMOWANIA

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/ / 22

Inteligentny czujnik w strukturze sieci rozległej

Transkrypt:

ochrona w systemie operacyjnym Ochrona mechanizm monitorowania, kontrolowania i nadzorowania dostępu programów, procesów i użytkowników do zasobów systemu. Wykorzystuje autoryzację i autentykację

ochrona w systemie operacyjnym Autoryzacja: stwierdzanie, że dany proces/użytkownik ma prawo wykorzystania danego zasobu Autentykacja: stwierdzanie, że dany proces/użytkownik jest tym, za którego się podaje

ochrona w systemie operacyjnym pewnik: każdy system wielozadaniowy system operacyjny musi zawierać mechanizmy ochrony przed wzajemnym niepożądanym oddziaływaniem procesów

ochrona w systemie operacyjnym Zadania podsystemu ochrony: autoryzacja (użytkowników i procesów) autentykacja (użytkowników i procesów) uprawnienia (użytkowników i procesów) mechanizmy wykrywania naruszeń mechanizmy wymuszania legalności rejestracja działań

interpretacja poleceń mechanizm odbierania i wykonywania poleceń użytkownika kontrola składni poleceń kontrola semantyki poleceń sygnalizacja błędów specjalizowany język (np. JCL w systemie OS/360) może integralną częścią systemu lub wydzielonym komponentem (np. shell w systemach U*x)

oblicze graficzne powłoka GUI (Graphical User Interface) zastąpienie operacji składniowych manualnymi (np. kliknięcia zamiast wpisywanych poleceń) wytworzenie mechanizmów graficznych dla procesów i aplikacji dwa warianty: pełna integracja z jądrem systemu (np. MS Windows) wydzielony, elastyczny składnik (np. X Window + window manager w systemach U*x)

Usługi systemu operacyjnego udokumentowany i opisany zestaw czynności, jakie system operacyjny może wykonać na rzecz pracującego procesu API Application Program Interface specyfikacja sposobu, w który aplikacja (proces) wymusza na systemie operacyjnym żądane akcje ABI - Application Binary Interface jak, ale nie na poziomie kodu źródłowego, a na poziomie danych binarnych proceru Windows API Standard Posix dostępne dla programistów jako funkcje biblioteczne (w językach wysokiego poziomu) klasy, obiekty, moduły, wrappery

Usługi systemu operacyjnego rodzaje usług: uruchamianie i kończenie procesów (np. exec(), fork(), kill()) przydział i zwalnianie pamięci (np. alloc(), free()) operacje we/wy (np. open(),close(),read(),write()) manipulowanie plikami (np. unlink(),stat(),chmod()) komunikacja międzyprocesowa (np. signal()) pobieranie informacji (np. date(), time(), clock()) wykrywanie błędów i wydobywanie się z błędów (np. errno()) komunikacja sieciowa (np. connect(),send(),recv())

Usługi systemu operacyjnego najczęściej dostępne poprzez wykonanie specjalnego rozkazu uprzywilejowanego metody przekazywania parametrów: umieszczanie parametrów w rejestrach procesora umieszczanie parametrów w pamięci i przekazanie adresu umieszczanie parametrów na stosie procesora styl pascal (np. API Windows) styl cdecl

komunikacja międzyprocesowa pamięć dzielona (shared memory ) przekazywanie komunikatów (message passing ) przekazywanie sygnałów (signals ) potoki (pipelines )

pamięć dzielona pamięć procesu A pamięć procesu B pamięć dzielona metoda szybka i wydajna, jednak wymaga dodatkowych mechanizmów synchronizacji

przekazywanie komunikatów proces A proces B komunikat nadaje się do przekazywania niedużych porcji danych

przekazywanie sygnałów proces A TERAZ! proces B nadaje się do przekazywania niewielkiego zbioru prostych informacji

potoki proces A proces B nadaje się do przekazywania dużych strumieni danych

rozliczanie (accounting ) wykrywanie incydentów funkcje dodatkowe

programy (narzędzia) systemowe tworzenie środowiska usprawniającego pracę użytkownika i administratora manipulowanie plikami informowanie o stanie i zasobach systemu tworzenie i modyfikowanie plików (edytory) narzędzia deweloperskie (kompilatory, biblioteki,...) interpretery języków skryptowych ładowanie i wykonywanie programów komunikacja aplikacje (przeglądarki, programy pocztowe,...)

programy (narzędzia) systemowe SPOSTRZEŻENIE Przeciętny użytkownik postrzega system operacyjny poprzez perspektywę narzędzi systemowych, a nie usług.

struktura typowego systemu aplikacja aplikacja powłoka (shell) GUI J Ą D R O sterowniki HID sterowniki sprzętu sterowniki pamięci

struktura warstwowa system projektuje się jako układ warstw (ang. layers) warstwa najniższa (0) - sprzęt warstwa najwyższa (N) aplikacja założenie: warstwa i używa tylko usług dostarczanych przez warstwę i 1 modularność ukrywanie operacji i danych abstrakcje sprzętu i funkcjonalności łatwe testowanie i uruchamianie systemu (namiastki i sterowniki) kłopotliwa definicja abstrakcji warstw kosztowne narzuty

struktura warstwowa namiastka warstwa testowana namiastka

struktura warstwowa sterownik sterownik warstwa testowana

mikrojądro (microkernel) jądro systemu maksymalnie zredukowane mały zbiór funkcji o charakterze elementarnym operacje bardziej złożone przeniesione do trybu użytkownika (user space ) komunikacja z jądrem najczęściej poprzez przekazywanie komunikatów jądro = warstwa abstrakcji sprzętu (HAL hardware abstraction layer) zalety: łatwość rozszerzania i dodawania nowych funkcji łatwość przenoszenia na nowe platformy większa stabilność systemu większe bezpieczeństwo

jądro monolityczne (monolitic kernel) jądro systemu zawiera wszystkie również bardzo abstrakcyjne funkcje systemu wszystkie operacje wykonywane w trybie jądra wady mała podatność na modernizacje słaba przenośność zalety: szybkość działania wydajność oszczędność w wykorzystaniu pamięci i zasobów

jądro z modułami (loadable modules kernel) jądro podobne do mikrojądra (podstawowy zbiór usług, najczęściej niezbędnych do wystartowania systemu) dynamiczne dołączanie modułów (wykonywanych w trybie jądra) na żądanie lub automatyczne usuwanie niepotrzebnych modułów w czasie pracy systemu większa elastyczność niż w jądrach monolitycznych lepsza wydajność niż w mikrojądrach typowe klasy modułów: szyfrowanie, kompresja i kryptografia sterowniki urządzeń fizycznych usługi sieciowe różne systemy plików (inne niż natywne)

wirtualizacja maszyna wirtualna (virtual machine ) - logiczna konkluzja podejścia warstwowego traktuje sprzęt i funkcje systemowe jako należące do tej samej warstwy maszyna wirtualna tworzy interfejs identyczny z podstawowym sprzętem (wirtualna kopia komputera) SO tworzy złudzenie wielu procesów pracujących na swych własnych procesorach z własną (wirtualną) pamięcią i własnym sprzętem

wirtualizacja zasoby fizycznego komputera są dzielone pomiędzy maszyny wirtualne odpowiedni scheduling CPU daje wrażenie, że każdy użytkownik (np. proces) ma swój własny procesor spooling i system plików tworzą wirtualne urządzenia wejścia-wyjścia i wirtualną pamięć pomocniczą

środowisko wirtualne procesy procesy procesy procesy jądro jądro jądro jądro sprzęt system rzeczywisty VM1 VM2 VM3 maszyna wirtualna sprzęt system wirtualny

wirtualizacja - zalety pełna ochrona zasobów systemowych - każda maszyna wirtualna jest całkowicie odizolowana od pozostałych idealna platforma do badania i rozwoju nowych systemów informatycznych (rozwój systemu dokonuje się na maszynie wirtualnej, zamiast na fizycznej) pozwala eksploatować starsze wersje oprogramowania na nowym, niekompatybilnym sprzęcie i systemie operacyjnym

wirtualizacja - wady trudna implementacja konieczność zrealizowania dokładnej kopii maszyny bazowej wzajemna izolacja maszyn wirtualnych uniemożliwia bezpośrednie dzielenie zasobów gorsza wydajność (procesor musi obsługiwać wiele maszyn wirtualnych koszt przełączania kontekstu

maszyna wirtualna Javy kompilacja tradycyjna program źródłowy kompilator kod maszynowy procesor kompilacja na maszynę wirtualną program źródłowy kompilator bytecode procesor wirtualny procesor rzeczywisty

maszyna wirtualna Javy kompilator języka Java (dawniej Sun Microsystems, obecnie Oracle) wytwarza niezależny od architektury kod pośredni, tzw. bytecode bytecode wykonywany przez wirtualną maszynę Javy (Java Virtual Machine JVM) JVM = specyfikacja abstrakcyjnego komputera (maszyna ze stosem) składniki JVW: ładowacz klas (class loader) weryfikator klas (class verifier) interpreter bytecode'u (runtime interpreter)

maszyna wirtualna Javy kompilacja w locie (Just-In-Time JIT ) przekształcanie bytecode'u w język maszynowy - podniesienie wydajności JVM jest implementowana w przeglądarkach internetowych systemy operacyjne oparte na Javie: JavaOS, JX telefony komórkowe często posiadają wbudowane procesory rdzennego kodu Javy podejścia konkurencyjne: maszyna Dalvik (Android) + bytecode Dex (Dalvik Executable) wada: duża podatność na inżynierię odwrotną (np. Java Decompiler)

środowisko CLR dla platformy.net (MS Windows) C# VB bytecode CIL Common Intermediate Language CLR Common Language Environment?