Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, / 26

Podobne dokumenty
Reprezentace dat. BI-PA1 Programování a Algoritmizace I. Ladislav Vagner

Programowanie w asemblerze Środowiska 64-bitowe

Programowanie w asemblerze Środowiska 64-bitowe

CPU. Architektura FLAGS Bit: dr Paweł Kowalczyk; DPTNS, KFCS UŁ. SI 16 bit. 16 bit. 16 bit.

002 Opcode Strony projektu:

Internet a zdroje. (Zdroje na Internetu) Mgr. Petr Jakubec. Katedra fyzikální chemie Univerzita Palackého v Olomouci Tř. 17.

PROGRAMOWANIE NISKOPOZIOMOWE. Adresowanie pośrednie rejestrowe. Stos PN.04. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

1 Soustava lineárních rovnic

Edita Pelantová, katedra matematiky / 16

Budowa wnętrza procesora x86

Obsah. Zobrazení na osmistěn. 1 Zobrazení sféry po částech - obecné vlastnosti 2 Zobrazení na pravidelný konvexní mnohostěn

Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/YOS: Přednáška IV. 3. listopad, / 42

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86

Aproximace funkcí 1,00 0,841 1,10 0,864 1,20 0,885. Body proložíme lomenou čarou.

Procesory rodziny x86. Dariusz Chaberski

Úvodní informace. 18. února 2019

PROGRAMOWANIE NISKOPOZIOMOWE. Systemy liczbowe. Pamięć PN.01. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

Komplexní analýza. Martin Bohata. Katedra matematiky FEL ČVUT v Praze Martin Bohata Komplexní analýza Mocninné řady 1 / 18

Architektura komputerów

PROGRAMOWANIE NISKOPOZIOMOWE

MATEMATIKA 3. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci

(1) Derivace. Kristýna Kuncová. Matematika B2 17/18. Kristýna Kuncová (1) Derivace 1 / 35

Architektura komputerów

MMX i SSE. Zbigniew Koza. Wydział Fizyki i Astronomii Uniwersytet Wrocławski. Wrocław, 10 marca Zbigniew Koza (WFiA UWr) MMX i SSE 1 / 16

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Funkce zadané implicitně. 4. března 2019

Programowanie Niskopoziomowe

ggplot2 Efektní vizualizace dat v prostředí jazyka R Martin Golasowski 8. prosince 2016

Martin Pergel. 26. února Martin Pergel

Materiały do wykładu. 7.Architekturax86. Marcin Peczarski. Instytut Informatyki Uniwersytet Warszawski

Architektura systemów komputerowych. Lista instrukcji procesora

Necht je funkce f spojitá v intervalu a, b a má derivaci v (a, b). Pak existuje bod ξ (a, b) tak, že f(b) f(a) b a. Geometricky

Kapitola 4: Soustavy diferenciálních rovnic 1. řádu

Linea rnı (ne)za vislost

Elementární funkce. Edita Pelantová. únor FJFI, ČVUT v Praze. katedra matematiky, FJFI, ČVUT v Praze

B0B99PRPA Procedurální programování

Programowanie Niskopoziomowe

PROGRAMOWANIE NISKOPOZIOMOWE. Struktury w C. Przykład struktury PN.06. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

Automatové modely. Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Cauchyova úloha pro obyčejnou diferenciální rovnici

Matematika (KMI/PMATE)

POLIURETANOWE SPRĘŻYNY NACISKOWE. POLYURETHANOVÉ TLAČNÉ PRUŽINY

Paralelní implementace a optimalizace metody BDDC

Komunikacja człowiek-komputer

Kristýna Kuncová. Matematika B2 18/19

B0B99PRPA Procedurální programování. Stanislav Vítek

Obsah Atributová tabulka Atributové dotazy. GIS1-2. cvičení. ČVUT v Praze, Fakulta stavební, katedra mapování a kartografie

Metody Realizacji Języków Programowania

Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, / 37

NÁVOD K POUŽITÍ KEZELÉSI KÉZIKÖNYV INSTRUKCJA OBSŁUGI NÁVOD NA POUŽÍVANIE. Česky. Magyar. Polski. Slovensky

Powyższe reguły to tylko jedna z wersji gry. Istnieje wiele innych wariantów, można też ustalać własne zasady. Miłej zabawy!

Pracownia komputerowa. Dariusz Wardecki, wyk. VIII

TGH01 - Algoritmizace

PROGRAMOWANIE NISKOPOZIOMOWE

Architektura komputerów

Kristýna Kuncová. Matematika B2

ARCHITEKTURA KOMPUTERÓW. Reprezentacja danych w komputerach

Zásuvný modul QGISu. QGIS plugin pro práci s katastrálními daty

Praktycznie całe zamieszanie dotyczące konwencji wywoływania funkcji kręci się w okół wskaźnika stosu.

Návod k použití ovládacího panelu GZ-539 Serie

Kristýna Kuncová. Matematika B2 18/19. Kristýna Kuncová (1) Vzorové otázky 1 / 36

K SAMOSTATNÉ MODULOVÉ SCHODY MONTÁŽI. asta

Inżynieria wsteczna oraz znajdowanie i wykorzystywanie luk w aplikacjach natywnych na architekturach x86 i x86-64

Architektura systemów komputerowych Laboratorium 5 Kodowanie liczb i tekstów

Jednoduchá zobrazení. Podpořeno z projektu FRVŠ 584/2011.

Metody Realizacji Języków Programowania

PA152,Implementace databázových systémů 2 / 25

IJC Jazyk C. Petr Peringer peringer AT fit.vutbr.cz. (Verze: ) Božetěchova 2, Brno. Úvod ISO C libc C99 11 Debug C++ Link Opt...

Inverzní Z-transformace

WOJSKOWA AKADEMIA TECHNICZNA

Ćwiczenie 3. Konwersja liczb binarnych

Return-oriented exploiting

2 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/ / 24

TGH01 - Algoritmizace

Geometrická nelinearita: úvod

Pracownia Komputerowa wyk ad VII

Cel wykładu. Przedstawienie działania exploitów u podstaw na przykładzie stack overflow.

Architektura procesora Intel Itanium (IA64) Paweł Pisarczyk Instytut Informatyki, Politechnika Warszawska

x86 vs x64 architektura procesora a exploitacja w systemie Windows Mateusz j00ru Jurczyk SecDay, Wrocław 2010

Charakteristika jazyka C

Konieczne odwzorowanie (mapping) obiektów: nazwa (+indeks) adres lokacja

B0B99PRPA Procedurální programování

katedra informatiky FEI VŠB-TU Ostrava etr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Začínáme s C/C září / 25

Quick sort, spojové struktury

Příručka k rychlé instalaci: NWD2105. Základní informace. 1. Instalace softwaru

Optymalizacja wykonania programów sekwencyjnych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Architektura systemów komputerowych. Konstrukcja i zasada działania mikroprocesora

1: ////////// 2: // test.c. 3: ssize_t ret = read(fd, buf, nbytes);

Kristýna Kuncová. Matematika B3

Jednoduchá zobrazení. Podpořeno z projektu FRVŠ 584/2011.

MATEMATIKA 3 NUMERICKÉ METODY. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci

Paradigmata programování 2

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Co nám prozradí derivace? 21. listopadu 2018

Logika V. RNDr. Kateřina Trlifajová PhD. Katedra teoretické informatiky Fakulta informačních technologíı BI-MLO, ZS 2011/12

Register and win!

2 Przygotował: mgr inż. Maciej Lasota

5. a 12. prosince 2018

Euklidovský prostor. Funkce dvou proměnných: základní pojmy, limita a spojitost.

Transkrypt:

Operační systémy Řízení výpočtu Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 1 / 26

Reprezentace hodnot záporná čísla jsou v doplňkovém kódu dvojkový doplněk (zápornou hodnotu dostaneme tak, že provedeme inverzi bitů a přičteme 1) = snadná manipulace znaménková a beznaménkové typy (unsigned int vs. int)!!! pokud se hodnota nevejde do rozsahu typu = přetečení/podtečení char a = 127 + 1; // => -128 unsigned char c = 255 + 1; // => 0 char b = -10-120; // => 126 BCD (Binary Coded Decimal) čísla v desítkové soustavě 4b na cifru Více-bytové hodnoty různé způsoby uložení více-bytových hodnot (endianita) ĺıší se mezi procesory = potřeba brát v úvahu při návrhu datových formátů a protokolů little-endian: hodnoty jsou zapisovány od nejméně významného bytu big-endian: hodnoty jsou zapisovány od nejvýznamějšího bytu Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 2 / 26

Little-endian: x86, Amd64, Alpha,... Big-endian: SPARC, IBM POWER, Motorola 68000,... Bi-endian: ARM, PowerPC, SparcV9, IA-64,... (za určitých okolností lze přepínat) Řetězce uložení řetězců záleží na zvoleném kódování (viz text Operační systémy) Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 3 / 26

Řetězce (1/2) ASCII (American Standard Code for Information Interchange) způsob kódování znaků původně použité 7bitové hodnoty (pozděj rozšířeny na 8 bitů) řídící znaky (CR, LF, BELL, TAB, backspace atd.) národní abecedy horní polovina tabulky, kódování ISO-8859-X, Windows-125X, atd. Unicode znaková sada (definuje vazbu číslo znak) několik tzv. rovin po 65535 znacích (v současnosti 110.000+ znaků) první rovina se nazývá základní (Basic Multilingual Plane, BMP) znaky západních jazyků UCS (Universal Character Set) způsob kódování znaků Unicode pevně daná velikost UCS-2 16 bitů na znak, odpovídá základní rovině UNICODE UCS-4 32 bitů na znak, všechny znaky UNICODE Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 4 / 26

Řetězce (2/2) UTF-8 (Unicode Transformation Format) kódování znaků s proměnlivou délkou zpětně kompatibilní s ASCII bity rozsah UNICODE byte 1 byte 2 byte 3 byte 4 byte 5 byte 6 7 0000 007f 0xxxxxxx 11 0080 07ff 110xxxxx 10xxxxxx 16 0800 ffff 1110xxxx 10xxxxxx 10xxxxxx 21 10000 1fffff 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 26 200000 3ffffff 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 31 4000000 7fffffff 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx UTF-16 proměnlivá délka kódování znaku rozšiřuje UCS-2 varianty UTF-16BE or UTF-16LE Byte Order Mark (BOM) umožňuje určit typ kódování (0xffef nebo 0xfeff) Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 5 / 26

Zásobník procesor má vyčleněný úsek paměti pro zásobník (LIFO) = mezivýpočty, návratové adresy, lokální proměnné,... vyšší prog. jazyky obvykle neumožňují přímou manipulaci se zásobníkem (přesto má zásadní úlohu) procesory i386 mají jeden zásobník, který roste shora dolů registr ESP ukazuje na vrchol zásobníku (mov eax, [esp] načte hodnotu na vrcholu zásobníku) uložení/odebrání hodnot pomocí operací: PUSH r/m/i ;; sub esp, 4 ;; mov [esp], op1 POP r/m ;; mov op, [esp] ;; add esp, 4 registr ESP musí vždy obsahovat číslo, které je násobek čtyř Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 6 / 26

Volání podprogramů/funkcí k volání podprogramu se používá operace CALL r/m/i = uloží na zásobník hodnotu registru IP a provede skok push eip jmp <addr> ;; tato operace neexistuje k návratu z funkce se používá operace RET = odebere hodnotu ze zásobníku a provede skok na adresu danou touto hodnotou použití zásobníku umožňuje rekurzi Volání funkcí předání parametrů vytvoření lokálních proměnných provedení funkce odstranění informací ze zásobníku návrat z funkce, předání výsledku Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 7 / 26

Konvence volání funkcí (1/2) způsob, jakým jsou předávány argumenty funkcím, jsou jen konvence (specifické pro překladač, i když často součastí specifikace ABI OS) předávání pomocí registrů (dohodnou se urč. registry), příp. zbývající argumenty se uloží na zásobník předávání argumentů čistě přes zásobník kdo odstraní předané argumenty ze zásobníku? (volaná funkce nebo volající?) Konvence C (cdecl) argumenty jsou předané čistě přes zásobník zprava doleva argumenty ze zásobníku odstraňuje volající umožňuje funkce s proměnlivým počtem parametrů Konvence Pascal (pascal) argumenty jsou předané čistě přes zásobník zleva doprava argumenty ze zásobníku odstraňuje volaný neumožňuje funkce s proměnlivým počtem parametrů Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 8 / 26

Konvence volání funkcí (2/2) Konvence fastcall (fastcall, msfastcall) první dva parametry jsou předány pomocí ECX, EDX zbylé argumenty jsou na zásobníku zprava doleva argumenty ze zásobníku odstraňuje volaný mírně komplikuje funkce s proměnlivým počtem parametrů pod tímto jménem mohou existovat různé konvence návratová hodnota se na i386 obvykle předává pomocí registru EAX, příp. EDX:EAX Rámec funkce (stack frame) při volání funkcí se na zásobníku vytváří tzv. rámec (stack frame) obsahuje předané argumenty, adresu návratu, příp. lokální proměnné k přístupu k tomuto rámci se používá registr EBP Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 9 / 26

Volání funkce s konvecím cdecl (1/4) Volání funkce 1 na zásobník jsou uloženy parametry funkce zprava doleva (push <arg>) 2 zavolá se funkce (call <adresa>), na zásobník se uloží adresa návratu 3 funkce uloží obsah registru EBP na zásobník (adresa předchozího rámce) 4 funkce uloží do registru EBP obsah ESP (začátek nového rámce) 5 vytvoří se na zásobníku místo pro lokální proměnné 6 na zásobník se uloží registry, které se budou měnit (push <reg>) Návrat z funkce 1 obnovíme hodnoty registrů (které byly umístěny na zásobník pop <reg>) 2 odstraníme lokální proměnné (lze k tomu použít obsah EBP) 3 obnovíme hodnotu EBP 4 provedeme návrat z funkce ret 5 odstraníme argumenty ze zásobníku (lze použít přičtení k ESP) Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 10 / 26

Obsah zásobníku... argument n... EBP + 12 --> argument 2 EBP + 8 --> argument 1 návratová hodnota původní EBP EBP - 4 --> první lokální proměnná EBP - 8 --> druhá lokální proměnná... ESP --> poslední lokální proměnná Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 11 / 26

Volání funkce s konvecím cdecl (3/4) Volání funkce push arg2 push arg1 call func add esp, 8 Tělo funkce ;; druhy argument ;; prvni argument ;; odstrani oba argumenty ze zasobniku push ebp mov ebp, esp sub esp, n ;; vytvori misto pro lokalni promenne push... ;; ulozi obsah pouzivanych registru... ;; telo funkce pop... ;; vrati hodnoty registru do puvodniho stavu mov esp, ebp ;; odstrani lokalni promenne pop ebp ret Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 12 / 26

Volání funkce s konvecím cdecl (4/4) první argument leží na adrese [ebp + 8], druhý na [ebp + 12], atd. první lokální proměnná na [ebp - 4], druhá na [ebp - 8], atd. Uchovávání registrů uchovávání všech použitých registrů na začátku každé funkce nemusí být efektivní používá se konvence, kdy se registry děĺı na callee-saved o uchování hodnot se stará volaný (EBX, ESI, EDI) caller-saved o uchování hodnot se stará volající (EAX, ECX, EDX) po návratu z funkce mohou registry EAX, ECX a EDX obsahovat cokoliv Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 13 / 26

Další vlastnosti ISA procesorů x86 FPU (floating-point unit): výpočty s čísly s řádovou čárkou (80bitová čísla; zásobníkový procesor; registry ST0 ST7) MMX: multimediální instrukce, SIMD, práce s celými čísly (64bitové registry MM0 MM7 sdílené s FPU) SSE, SSE2: instrukce pro práci s čísly s plovoucí řádovou čárkou (SIMD; jednoduchá i dvojitá přesnost; 128bitové registry XMM0 XMM7) Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 14 / 26

AMD64 (1/2) 64bitové rozšíření ISA procesorů x86 (označovaná i jako EM64T, x86 64, x64) rozšíření velikosti registrů na 64 bitů (rax, rdx, rcx, rbx, rsi, rdi, rsp, rbp) nové 64bitové registry r8-r15 spodních 32 bitů jako registry rxd (např. r8d) spodních 16 bitů jako registry rxw (např. r8w) spodních 8 bitů jako registry rxb (např. r8b) nové 128bitové registry xmm8-xmm15 nejnovější procesory s AVX (Sandy Bridge, Bulldozer) rozšiřují xmm0-xmm15 na 256bitů (registry ymm0-ymm15) adekvátní rozšíření operací (prefix REX); omezení délky instrukce na 15 B v operacích je možné používat jako konstanty maximálně 32bitové hodnoty = výjimkou je operace (movabs r, i) Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 15 / 26

AMD64 (2/2) rozšíření adresního prostoru fyzicky adresovatelných typicky 2 36 až 2 46 B paměti (virtuální pamět 2 48 B) Režimy práce 64bitová ISA je velice podobná 32bitové = minimální režie Long mode: dva submody (ve kterých jsou k dispozici 64bitové rozšíření) 64-bit mode: OS i aplikace v 64bitovém režimu compatibility mode: umožňuje spouštět 32bitové aplikace v 64bitovém OS Legacy mode: režimy pro zajistění zpětné kompatibility (protected mode, real mode) pro výpočty s čísly s plovoucí řádovou čárkou se používají operace SSE, SSE2 Volací konvence větší množství registrů umožňuje efektivnější volání funkcí (podobné fastcall) možnost zakódovat strukturovanou hodnotu do registru zarovnání zásobníku na 16 B sjednocení volácích konvencí (v rámci platformy) Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 16 / 26

AMD64: Volací konvence Windows první 4 argumenty: rcx, rdx, r8, r9 čísla s plovoucí řádovou čárkou přes: xmm0-xmm3 na zásobníku se vytváří stínové místo pro uložení argumentů zbytek přes zásobník návratové hodnoty přes rax nebo xmm0 // a -> rcx, b -> xmm1, c -> r8, d -> xmm3 void foo(int a, double b, int c, float d); sub rsp, 0x28 movabs rcx, <addr: msg> call printf add rsp, 0x28 ; (0x20 + 0x08 -- kvuli zarovnani po call) caller-saved: rax, rcx, rdx, r8, r9, r10, r11 callee-saved: rbx, rbp, rdi, rsi, rsp, r12, r13, r14, r15 Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 17 / 26

AMD64: Volací konvence Windows Pozice Obsah Rámec předchozí rbp + 64 6. argument rbp + 56 5. argument rbp + 16 prostor pro uložení registrů rbp + 8 návratová adresa aktuální rbp původní rbp rbp - 8 lok. proměnné a nespecifikovaná data rsp Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 18 / 26

AMD64: Volací konvence Unix (Linux) prvních 6 argumentů: rdi, rsi, rdx, rcx, r8, r9 čísla s plovoucí řádovou čárkou přes: xmm0-xmm7 (počet použitých XMM registrů musí být v registrů AL) zbytek přes zásobník (zprava doleva) návratové hodnoty přes rax nebo xmm0 pod vrcholem zásobníku oblast 128 B (červená zóna) pro libovolné použití // a -> rdi, b -> xmm0, c -> rsi, d -> xmm1; 2 -> al void foo(int a, double b, int c, float d); caller-saved: rax, rdi, rsi, rdx, rcx, r8, r9, r10, r11 callee-saved: rbx, rsp, rbp, r12, r13, r14, r15 Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 19 / 26

AMD64: Volací konvence Unix (Linux) Pozice Obsah Rámec rbp + 16 + 8 * n n-tý argument na zásobníku předchozí rbp + 16 0-tý argument na zásobníku rbp + 8 návratová adresa aktuální rbp původní rbp rbp - 8 lok. proměnné a nespecifikovaná data rsp rsp - 128 červená zóna Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 20 / 26

Přerušení mechanismus umožnující reagovat na asynchronní události nejčastěji vyvolané vnějším zařízením (např. stisk klávesnice), které chce komunikovat s CPU pokud vznikne přerušení, činnost procesoru je zastavena a je vyvolána obsluha přerušení po skončení obsluhy přerušení program pokračuje tam, kde byl přerušen obslužné rutiny velice podobné běžným funkcím procesor ví, kde jsou uloženy obslužné rutiny přerušení na x86 IDT (Interrupt Descriptor Table) vektor 256 adres (256 přerušení prvních 32 HW přerušení, zbylé pro SW přerušení); adresa IDT uložena v registru IDTR systém priorit (přerušení s nižší prioritou nemůže, přerušit pokud již běží přerušení s vyšší a musí počkat) Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 21 / 26

I/O zařízení (1/2) Aktivní čekání procesor pracuje se zařízením přímo (instrukce in, out zápis/čtení hodnoty z portu) výpočetně náročné (obzvlast přenosy velkých dat); omezené na speciální operace (jen zápis/čtení) DMA řadič DMA dostane požadavek: čtení/zápis + adresu v paměti předá požadavek řadiči zařízení (např. disku) zapisuje/čte data z/do paměti dokončení je oznámeno řadiči DMA DMAC vyvolá přerušení př. Tan p.277 Sdílení pamět ového prostoru zařízení mají přímý přístup k operační paměti Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 22 / 26

Architektura OS od operačního systému očekáváme: správu a sdílení procesoru (možnost spouštět více procesů současně) správu paměti (procesy jsou v paměti odděleny) komunikaci mezi procesy (IPC) obsluhu zařízení a organizaci dat (souborový systém, sít ové rozhraní, uživatelské rozhraní) není žádoucí, aby: každý proces implementoval tuto funkcionalitu po svém každý proces měl přístup ke všem možnostem hardwaru = jádro operačního systému CPU různé režimy práce: privilegovaný běží v něm jádro OS (umožňuje vše) neprivilegovaný běží v něm aplikace (některé funkce jsou omezeny) přechod mezi režimy pomocí systémových volání (SW přerušení, speciální instrukce, speciální volání) Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 23 / 26

Architektura jádra (1/2) Monolitické jádro vrstvená architektura; moduly všechny služby pohromadě = lepší výkon problém s chybnými ovladači Linux, *BSD Mikrojádro poskytuje správu adresního prostoru, procesů, IPC oddělení serverů (služeb systému); běžné procesy se speciálními právy = bezpečnost možnost restartu servrů, pomalé IPC (přepínaní kontextu) MINIX, QNX, Mach Hybridní jádro kombinuje prvky obou přístupů Windows NT, MacOS X Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 24 / 26

Architektura jádra (2/2) Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 25 / 26

Samostudium Keprt A. Operační systémy. Kapitoly 5 8, tj. strany 41 83. Petr Krajča (UP) KMI/YOS: Přednáška II. 6. říjen, 2017 26 / 26