Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické informace (manuály ap.): –ftp://ulita.ms.mff.cuni.cz/techdoc/index.html Maily:
Správa paměti Jednotka řízení paměti (MMU - memory management unit) Segmentace Stránkování (32-36) Logická adresa (Logical address) Lineární adresa (Linear address) Fyzická adresa (Physical address)
Segmentace - malé opakování Obecně: Adresa = identifikátor segmentu + pozice uvnitř segmentu Intel: Identifikátor segmentu - 16-bitové číslo - tzv. SELEKTOR Pozice uvnitř segmentu - 32-bitová vzdálenost od počátku segmentu - tzv. OFFSET (ve 32-bitovém módu!) Logický adresový prostor procesu TEXT Kód programu STACK Zásobník DATA Statická data HEAP Dynamická data FARDATA “Externí” (sdílená) data
Přístup k segmentům SegmentovýTabulka registr:deskriptorů: Segment Popisovač segmentu (segment descriptor) Selektor segmentu (segment selector) Popisovač segmentu (segment descriptor) Selektor segmentu (segment selector)
Překlad logické adresy
Selektory a segmentové registry Formát selektoru: Segmentové registry:
Ne-systémové ("přístupové") –Datové –Kódové Systémové –Paměťové –Brány Základní klasifikace deskriptorů/segmentů
Formát deskriptoru
Deskriptor nepřítomného segmentu
Typy nesystémových deskriptorů/segmentů
Typy systémových deskriptorů/segmentů
Tabulky deskriptorů
Práce se systémovými segmentovými registry Speciální instrukce: –Globální tabulka deskriptorů: reg. GDTR:SGDT m48LGDT m48 –Tabulka deskriptorů obslužných rutin přerušení: reg. IDTR:SIDT m48LIDT m48 –Lokální tabulka deskriptorů: reg. LDTR:SLDT r/m16LLDT r/m16
Systém zabezpečení a segmentace "Bezpečnostní okruhy":
Základní pojmy systému zabezpečení CPL (Current Privilege Level) –aktuální úroveň oprávnění DPL (Descriptor Privilege Level) –"Segmentová" (příp. deskriptorová) úroveň oprávnění - uložena v deskriptoru RPL (Requested Privilege Level) –Požadovaná úroveň oprávnění - specifikována jako součást adresy (selektoru) EPL (Effective Privilege Level) –Skutečná úroveň oprávnění při přístupu k segmentu - určí se jako: max(CPL,RPL )
Ochrana dat na úrovni segmentace Datová reference na segment: –"Prioritní test": EPL DPL EPL = max( CPL, RPL ) Vyhodnocování oprávněnosti přístupu - dvě fáze: –Během plnění segmentového registru: "Prioritní test" Základní typová kontrola –Během přístupu do paměti: Zbývající typové kontroly Kontrola velikosti offsetu
Ochrana kódu na úrovni segmentace Přímé předání řízení - skok ( JMP ) nebo volání ( CALL ) s udáním cílového kódového segmentu možné jen při zachování CPL: –pro nonconf. cílový segment: RPL CPL = DPL –pro conf. cílový segment: CPL DPL, RPL libovolné Předání řízení se změnou CPL je možné pouze prostřednictvím bran: –Vždy se uplatní standardní "prioritní test": EPL DPL brány –Dále pro skok ( JMP ):do nonconf. seg.:CPL = DPL codeseg do conf. seg.:CPL DPL codeseg –Pro volání ( CALL ):do nonconf. seg.:CPL DPL codeseg do conf. seg.:CPL DPL codeseg
Mechanismus předání řízení pomocí brány
Deskriptor brány pro volání podprogramu (Call-gate)
Nabíhačka Při změně CPL nutná změna zásobníku - provádí se automaticky Potíž - co s parametry předávanými na zásobníku? Odpověď: zkopírovat! (procesory jsou rychlé...)
Přepínání zásobníku při volání se změnou priority (Stack switching during an interprivilege-level call)