Překladače Operační paměť © Milan Keršláger 29.9.2016

Slides:



Advertisements
Podobné prezentace
A1PRG - Programování – Seminář Ing. Michal Typová konverze, oblast platnosti, paměťové třídy 9 Verze
Advertisements

Tento výukový materiál vznikl v rámci Operačního programu Vzdělávání pro konkurenceschopnost 1. KŠPA Kladno, s. r. o., Holandská 2531, Kladno,
HYPERTEXT PREPROCESSOR. PROGRAMOVÁNÍ. DEFINICE POJMŮ Problém Problém nevyřešený, nežádoucí stav obvykle vyžaduje nějaké řešení Neřešitelný problém Neřešitelný.
13AMT Procesory I. Lecture 2 Ing. Martin Molhanec, CSc.
Zásobník (LiFo) Fronta (FiFo)
SOFTWARE dálkové studium PODNIKÁNÍ 2. listopad 2006.
Otázky k absolutoriu HW 1 - 5
Principy překladačů Běhová podpora Jakub Yaghob. Běhová podpora Statická podpora jazyka Překladač Interface na knihovny Hlavičkové soubory Dynamická podpora.
Principy překladačů Mezikód Jakub Yaghob.
Principy překladačů Interpretované jazyky Jakub Yaghob.
Generování mezikódu Jakub Yaghob
Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické.
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Seminář C cvičení STL, Trolltech Ing. Jan Mikulka.
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_02A13 Autor Ing. Jiří Kalousek Období vytvoření duben 2014.
Architektura a vývoj PC 2.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Paměťové obvody a vývoj mikroprocesoru
Počítače a programování 1
Vnitřní (operační paměť)
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Výrok „Vypadá to, že jsme narazili na hranici toho, čeho je možné dosáhnout s počítačovými technologiemi. Člověk by si ale měl dávat pozor na takováto.
Operační systémy. Výpočetní systém Stroj na zpracování dat vykonávající samočinně předem zadané operace.
Téma 6 – Správa paměti a její virtualizace
FEL Komunikátor. Memory Leak program konsumuje operační paměť, kterou neumožňuje uvolnit o uvolnění paměti stará Garbage Collector ▫plně v režii Java.
OPERAČNÍ SYSTÉMY.
Základy operačních systémů
Základní pojmy v informatice Bohumil Bareš. Základní pojmy Data – soubory, jiný výraz pro „informace“, jsou to údaje, které vypovídají o světě, mohou.
XSLT překladač Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
Operační systémy. Výpočetní systém Stroj na zpracování dat vykonávající samočinně předem zadané operace.
Základy operačních systémů
Informatika (1) Počítač - základní pojmy HW a SW4 OS MS-DOS, Windows 95, 982 Org. souborů na disku, operační paměť2 Aplikace Malování, Word8 Základy programování.
Kontakty slajdy: ftp://ulita.ms.mff.cuni.cz/predn/POS.
Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické.
Počítačová bezpečnost 1. Stavba a start PC © Milan Keršláger
Počítačová bezpečnost Cvičení 1: Zabezpečení startu PC © Milan Keršláger
Technika počítačů 3. Mikroprocesory © Milan Keršlágerhttp:// Obsah: ●
Operační systémy Správa paměti © Milan Keršláger
Překladače Optimalizace © Milan Keršláger
Odborný výcvik ve 3. tisíciletí Tato prezentace byla vytvořena v rámci projektu.
PROGRAMOVÁNÍ 3ITA,3ITB Jaroslav Burdys Hlavní zdroj:
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
VIRTUÁLNÍ PAMĚŤ EP1. Kryštof Supek. Umožňuje předložit běžícímu procesu adresní prostor paměti, který je větší, než je fyzicky připojená paměť RAM Procesor.
Překladače 6. Sémantická analýza
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
A4B33OSS (J. Lažanský) verze: Podzim Obsah Téma 7 – Správa paměti 1.Požadavky a problémy správy paměti 2.Historické přístupy správy paměti 3.Segmenty.
Stránkování MATĚJ JURIČIČ 2015/2016 EP1 SPŠ A VOŠ JANA PALACHA KLADNO.
Paměti PC HDD, CD/DVD, USB Flash RAM a ROM Vnější paměť Disková paměť
Síťová vrstva a vrstva síťového rozhraní v TCP/IP
Programování mikropočítačů Platforma Arduino
Výukový materiál zpracován v rámci projektu
Vlastnosti souborů Jaroslava Černá.
Operační systémy 11. Správa paměti
Jednočipové počítače – instrukční sada
Soubor Soubor v informatice označuje pojmenovanou sadu dat uloženou na nějakém datovém médiu, se kterou lze pracovat nástroji operačního systému jako.
UNIX 10. Procesy © Milan Keršláger
Překladače Syntaktická analýza
Výukový materiál zpracován v rámci projektu
Programování v jazyce C++
Operační systémy 9. Spolupráce mezi procesy
Správa paměti.
Segmentace Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
UNIX 10. Procesy Obsah: algoritmus, program, proces, thread
Překladače 6. Sémantická analýza
Správa disků
Práce s procesy Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí Autor:
Informační a komunikační technologie 5. ročník
Přepínání procesů Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Paměť.
Transkript prezentace:

Překladače Operační paměť © Milan Keršláger

Operační paměť ● vnitřní paměť počítače ● pro uchování programu, dat, mezivýsledků ● přímo adresovatelná procesorem ● připojena pomocí sběrnice (adresní, datová, řídící) ● uchovávány bity, adresace po bajtech ● přístup pomocí strojových instrukcí ● adresa je v registru ● přenos dat mezi registrem a pamětí ● využití cache

Přístup k paměti ● přímo adresovatelná ● adresní registr → omezení velikosti – IA-32 → 32 bitů = 4 GiB – x86_64 → dnes 48 bitů = 256 TiB ● nepřímo adresovatelná ● různé triky (pomocné registry, I/O) – PAE, XMS, … ● virtualizace paměti ● rozdělení na virtuální a fyzické adresy

Správa operační paměti ● v procesoru MMU ● anglicky Memory Managment Unit ● řízení přístupu k operační paměti (řízení sběrnic) ● řízení cache ● překlad virtuálních adres na fyzické a zpět ● řešení nepřímé adresace ● v jádře operačního systému ● řízení chodu MMU ● rozvržení operační paměti ● přidělování paměti procesům

Virtualizace paměti ● proces vidí jiné uspořádání, než je skutečnost ● odstranění fragmentace ● umožňuje zvětšit dostupnou paměť ● pro podporu multitaskingu ● rozlišuje dvě různé adresy ● logická adresa – pracují s ní strojové instrukce (proces) ● fyzická adresa – získána převodem z logické (v MMU) – paměť RAM nebo pevný disk

Využití virtualizace ● multitasking ● každý proces má vlastní logický adresní prostor ● není nutné používat relokaci nebo relativní adresy ● rozšíření adresního prostoru ● místo na pevném disku je lacinější, než RAM ● efektivnější využití paměti ● nepoužívané části jsou odsunuty na disk ● zvětší se místo pro diskovou cache

Adresace paměti ● segmentace ● fyzická adresa = segment + offset – proces pracuje jen s offsetem – segment spravuje operační systém ● trpí fragmentací volného místa ● stránkování ● virtuální adresa → tabulka stránek → fyzická adresa – poměrně komplikovaný systém – dnes majoritně používán (Windows, Linux na PC) ● řeší fragmentaci, lepší optimalizace (RAM × disk)

Organizace paměti ● paměť procesu ● text → jen pro čtení (kód programu, konstanty) ● halda → dynamicky alokovaná data – new() ● zásobník → volání funkcí, lokální proměnné ● organizace paměti v operačním systému ● v paměti je jádro a (běžící) proces ● v IA-32 je málo místa (4 GiB) – využívání triků → PAE – x86_64 problém řeší, ale jen pro 64bitové OS

Linux – 3+1 ● kernel (jádro systému) ● syscall nevyžaduje remapování ● vyžaduje ho model 4+4 ● mmap ● knihovny, mapované soubory ● heap ● dynamicky alokovaná paměť ● text ● program, konstanty

Windows – 2+2 ● standardní mapování pro 32bitové jádra ● jednoduchá kontrola (jádro vs. userspace) ● proces maximálně 2 GiB ● oblast na 2 GiB lze využít jako cache ● alternativa 3+1 ● parametr jádra při startu ● speciálně kompilovaná aplikace (je jich málo)

Proměnné ● kompilační překladač ● globální a statické proměnné – rezervace místa při překladu – v datové části paměti ● lokální proměnné – umisťovány na zásobník – do kódu se přidávají procedury pro jejich obsluhu – umožňuje rekurzi, reaktivaci po návratu z podprogramu ● proměnné platné v bloku programu – též na zásobník, ale po ukončení bloku zrušeny

Rezervace místa ● zarovnání paměti ● násobky 2, 4, 8, 16,... → dle architektury počítače ● každý typ proměnné má svoji velikost ● v jazyce C lze zjistit → sizeof() – informace jak pro typ, tak pro konkrétní proměnnou ● pole ● posloupnost prvků stejného typu – pracujeme s offsetem od začátku – seznam v případě dynamické změny hranic pole ● vícerozměrná pole → násobky

Záznam a struktura ● nehomogenní posloupnost prvků ● možné optimalizovat pořadí – nelze pak snadno vypočítat umístění položky v paměti ● variantní záznamy sdílejí paměť (v C uniony) – záznam má rozdílnou strukturu podle hodnoty prvku ● deklarace: ● staticky – alokace při kompilaci ● dynamicky – umisťování na haldu → new()

Třídy a objekty ● třída ● obdoba typu záznam – obsahuje data, metody (členské funkce), vlastnosti ● objekt je instance třídy ● obdoba proměnné ● neexistuje univerzální způsob uložení ● různé jazyky provádějí různě ● virtuální metody ● vytvoření tabulky virtuálních metod

Halda ● prostor pro dynamické alokace ● probíhají až za běhu programu ● umístění haldy není fixní ● odkazy na data jen pomocí referencí (ukazatelů) ● definováno při startu programu ● alokace dle požadavků (v hlavičce binárky) ● zvětšení jako direktiva překladače ● problém fragmentace haldy ● obvykle se neřeší → programátor vlastní správu

Zásobník ● anglicky „stack“ ● implementace ● HW: uvnitř CPU ● SW: pole či seznam ● datová struktura LIFO ● dno zásobníku – může zde být kontrolní obsah ● vrchol zásobníku – ukazatel (v CPU – speciální nebo též jakýkoliv registr) ● instrukce PUSH a POP (CREATE, IS_EMPTY) PUSHPOP Dno zásobníku Pointer Vrchol zásobníku

Využití zásobníku ● návratové adresy z procedury (funkce) ● ve strojovém kódu – CALL → uloží adresu násl. instr. + skok – RET → vyzvedne návr. adresu + skok na ni ● lokální proměnné ● data uložena „nad“ návratovou adresou – přístup pomocí ukazatelů ● před RET je nutno je všechny zrušit ● rekurze

Speciality zásobníku ● umístění uvnitř CPU → SPARC ● jako speciální registry (registrová okna) ● pro argumenty funkcí atp. ● umístění ve speciální paměti → PIC ● není přímo dostupná ● má omezenou velikost ● procesor bez registrů ● aby Turing-kompletní, tak se dvěma zásobníky ● doplňující instrukce ● top (? vrchol), swap (prohození), rotate, dup (-likace)

Rekurze ● opakované (vnořené) volání stejné funkce ● nutně musí být přítomna ukončující podmínka ● využívá se zásobník ● lokální proměnné → náročné na paměť – direktiva překladače pro zvětšení prostoru pro zásobník ● rekurzi lze linearizovat ● využijeme zásobník ● např. je nevhodné použít rekurzi uvnitř jádra OS

Typy rekurze ● přímá rekurze ● procedura volá sama sebe ● nepřímá (vzájemná) rekurze ● volání sama sebe v cyklu (přes dvě procedury) ● lineární rekurze ● jen jedno rekurzivní volání sama sebe ● vzniká lineární struktura ● stromová rekurze ● vícenásobné rekurzivní volání sama sebe ● vzniká binární (ternární,...) strom

Běhové prostředí ● anglicky „run-time environment“ ● podpora pro běh programu ● knihovny, podprogramy ● interpret pro Java bytecode ● překladač předpokládá běhové prostředí ● v jazyce C knihovna „libc“ ● nezaměňovat s běžnými doplňujícími knihovnami ● poskytování dalších funkcí ● optimalizace, ladění, typová kontrola atd.

Garbage collector ● součást běhového prostředí ● usnadňuje programování ● ale složitější ladění ● zpomaluje běh programu ● uvolňování nepoužívané paměti ● probíhá automaticky za běhu programu – typicky po určité době, využití generací ● sledují se reference na objekt (data) – vytvoření počitadla odkazů na objekt – vlastně sleduje úniky paměti (memory leak)