Esant segmentavimui programos yra sudalomos į nepriklausomus segmentus, kurie yra laikomi nesurištose adresinėse srityse.
Operacinė sistema |
Kitos programos |
Programa A, Segmentas 0 |
Kitos programos |
Programa A, Segmentas 1 |
Kitos programos |
Programa A, Segmentas 2 |
Kitos programos |
Segmentavimas reikalauja papildomo žingsnio, kai yra atliekama adreso transliacija. Kai programa yra įkeliama į atmintį, operacinė sistema sukuria segmentų lentelę, kurioje yra nurodomas (absoliutus) kiekvieno programos segmento pradžios adresas. (10.6 pav.). (Kiekvienai aktyviai programai yra atskira segmentų lentelė). Vėliau, kai operacinė sistema pradeda vykdyti šią programą, jos segmentų lentelės adresas yra įkeliamas į specialų registrą.
Programos vykdymo metu adresai turi būti transliuojami iš santykinių į absoliučius, kadangi programuotojai naudoja santykinius adresus, o kompiliatoriai juos transliuoja į bazę plius poslinkis. Vykdant komandą (instrukciją), komandos operandų adresai yra gaunami prie bazinio registro turinio sumuojant poslinkį. Tradiciškai tokiu būdu gautas adresas vadinamas absoliučiu adresu. Esant segmentacijai, adresas susideda iš dviejų dalių: segmento numerio bei poslinkio (10.6 pav.). Konvertuojant tokį adresą į absoliutų, atliekami šie veiksmai:
1. Tikrinamas specialus registras ieškant programos segmentų lentelės.
2. Iš adreso paimama jo dalis – segmento nr.
3. Naudojamas segmento nr. paieškai segmentų lentelėje
4. Randamas segmento pradžios adresas, jis yra pridedamas prie poslinkio ir taip gaunamas absoliutus adresas.
Šis procesas vadinamas dinamine adreso transliacija.
Komentarų nėra:
Rašyti komentarą