Mikroprocesory - Skripta
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
6.1.2 Segmentace
Segmentace je mechanismus správy paměti, který odpovídá uživatelskému pohledu na
paměť. Každý program obsahuje data (proměnné), instrukce (kód) a zásobník. Uvedené části
programu mají své specifické vlastnosti a lze je považovat za relativně samostatné. Proto je lze
od sebe oddělit a lze je ukládat do samostatných oblastí paměti, které nazýváme segmenty.
Segmenty mohou mít různou délku. Např. program v jazyce C je možné rozdělit program na
segment obsahující instrukce, na segment obsahující globální proměnné (datový segment) a
segment obsahující zásobník (stack). Dalšími segmenty mohou být např. segment obsahující
instrukce knihovních funkcí a segment, z něhož se bude alokovat dynamicky přidělované
paměť (halda).
Elementy uvnitř segmentu (proměnné, počáteční instrukce funkcí) jsou identifikovány
jejich offsetem (počtem bytů od začátku segmentu). Při segmentaci je logický adresový prostor
tvořen kolekcí segmentů. Každý segment má jméno a délku. Adresy jsou určeny dvojicí jméno
segmentu a offset. Offset určuje posunutí (vzdálenost) daného paměťového místa od začátku
segmentu (báze). Při segmentaci je tedy logická adresa dvoudimenzionální.
Aby se zjednodušila implementace, je každému segmentu přiřazeno číslo a na segment
se odkazuje jeho číslem nikoli jménem. Logická adresa se pak skládá z dvojice:
<číslo segmentu; offset>.
Jednotka MMU musí transformovat dvoudimenzionální logickou adresu na fyzickou
adresu, která je jednodimenzionální. Číslo segmentu je uloženo v segmentovém registru, offset
je dán efektivní adresou generovanou instrukcí na základě příslušného adresovacího módu.
Mapování dvoudimenzionální logické adresy na jednodimenzionální fyzickou adresu lze
provádět: