Procházet otázky :: SZZ na MFF UK

#

- Hlavní strana
- Okruhy
- Projít
- Stáhnout
- Co je potřeba
- Chci přispět
- Kredity

Hledat:

## Prohlížení státnicových textů

## Organizace paměti, alokační algoritmy

Hierarchie paměti (směrem odshora dolů roste velikost, cena na bajt a rychlost klesá - a naopak...):

- registry CPU -- 10ky-100vky bajtů (IA-32: obecné registy pár 10tek), IA-64 - až kB (extrém), stejně rychlé jako CPU.
- cache -- z pohledu aplikací není přímo adresovatelná; dnes řádově MB, rozdělení podle účelu, několik vrstev. L1 cache (cca 10ky kB) - dělené instrukce/data; L2 (cca MB) sdílené instr&data, běží na rychlosti CPU (dřív bývala pomalejší), servery - L3 (cca 10MB). Vyrovnává rozdíl rychlosti CPU a RAM. Využívá lokality programů - cyklení na místě; sekvenčního přístupu k datům. Pokud nenajdu co chci v cache - cache-miss, načítá se potřebné z RAM (po blocích), jinak (v 95-7% případů) nastane cache-hit, tj. požadovaná data v cache opravdu jsou a do RAM nemusím.
- hlavní paměť (RAM) -- přímo adresovatelná procesorem, 100MB - GB; pomalejší než CPU; CAS - doba přístupu na urč. místo - nejvíc zdržuje (v 1 sloupci už čte rychle, dat. tok dostatečný), další - latence - doba než data dotečou do CPU - hraje roli vzdálenost (AMD- integrovaný řadič v CPU)
- pomocná paměť -- není přímo adresovatelná, typicky HDD; náh. přístup, ale pomalejší. 100GB, různé druhy - IDE, SATA, SCSI; nejvíc zdržuje přístupová doba (čas seeku) cca 2-10ms; obvykle sektor - 512 B; roli hraje i rychlost otáčení (4200 - 15000 RPM) - taky řádově ms.
- zálohovací paměť -- nejpomalejší, z teorie největší, dnes ale neplatí; typicky - pásky; pro větší kapacitu - autoloadery ; sekvenční přístup; dnes - kvůli rychlosti často zálohování RAIDem.

Správce paměti: část OS, která spravuje paměťovou hierarchii se nazývá
správce paměti (memory manager):

- udržuje informace o volné/plné části paměti
- stará se o přidělování paměti
- a výměnu paměti s diskem

Přiřazení adresy

- při překladu (je již známo umístění procesu, generuje se absolutní kód, PS: statické linkování)
- při zavádění (OS rozhodne o umístění - generuje se kód s relokacemi, PS: dynamické linkování)
- za běhu (proces se může stěhovat i za běhu, relokační registr)

Overlay - Proces potřebuje více paměti než je skutečně k dispozici. Programátor tedy rozdělí program na nezávislé části (které s v paměti podle potřeby vyměňnují) a část nezbytnou pro všechny části...

Výměna (swapping) - dělá se, protože proces musí být v hlavní paměti, aby jeho instrukce mohly být vykonávány procesorem... Jde o výměnu obsahu paměti mezi hlavní a záložní.

Překlad adresy - nutný, protože proces pracuje v logickém (virtuálním) adresovém prostoru, ale HW pracuje s fyzickým adresovým prostorem...

Spojité přidělování - přidělení jednoho bloku / více pamětových oddílů (pevně - paměť pevně rozdělena na části pro různé velikosti bloků/volně - v libovolné části volné paměti může být alokován libovolně veliký blok)

Informace o obsazení paměti - bitová mapa / spojový seznam volných bloků (spojování uvolněného bloku se sousedy)

Alokační algoritmy:

- First-fit - první volný dostatečné velikosti - rychlý, občas ale rozdělí velkou díru
- Next-fit - další volný dostatečné velikosti - jako First-fit, ale rychlejší
- Best-fit - nejmenší volný dostatečné velikosti - pomalý (prohledává celý seznam), zanechává malinké díry (ale nechává velké díry vcelku)
- Worst-fit - největší volný - pomalý (prohledává celý seznam), rozdělí velké díry
- Buddy systém - paměť rozdělena na bloky o velikosti , bloky stejné velikosti v seznamu, při přidělení zaokrouhlit na nejbližší , pokud není volný, rozštípnou se větší bloky na příslušné menší velikosti, při uvolnění paměti se slučují sousední bloky (buddy)

Fragmentace paměti:

- externí - volný prostor rozdělen na malé kousky, pravidlo 50% - po nějaké době běhu programu bude cca 50% paměti fragmentováno a u toho to zůstává
- interní - nevyužití celého přiděleného prostoru
- sesypání - pouze při přiřazení adresy za běhu, nebo segmentaci - nelze při statickém přidělení adresy