Pagrindinis skirtumas tarp loginio ir fizinio adreso yra tas, kad procesorius generuoja loginį adresą programos vykdymo metu, o fizinis adresas yra vieta atminties bloke.
Paprasčiau tariant, CPU generuoja loginį arba virtualų adresą. Žiūrint iš veikiančios programos perspektyvos, atrodo, kad elementas yra adresu, pateiktu loginio adreso. Atminties blokas stebi fizinį adresą. Be to, ji leidžia duomenų magistrale pasiekti tam tikrą atminties langelį pagrindinėje atmintyje.
Kas yra loginis adresas?
CPU generuoja loginį adresą. Žiūrint iš veikiančios programos perspektyvos, atrodo, kad elementas yra adresu, pateiktu loginio adreso. Kompiuteryje veikiančios taikomosios programos nemato fizinių adresų. Jie visada dirba naudodami loginius adresus. Loginė adresų erdvė yra loginių adresų rinkinys, kurį sukuria programa. Prieš naudojant loginius adresus būtina susieti su fiziniais adresais. Aparatinės įrangos įrenginio atminties valdymo blokas (MMU) tvarko šį susiejimo procesą.
MMU atvaizdavimo schemos
MMU laikosi kelių atvaizdavimo schemų. Paprasčiausioje atvaizdavimo schemoje vertė perkėlimo registre pridedama prie kiekvieno taikomųjų programų sukurto loginio adreso prieš siunčiant juos į atmintį. Taip pat yra keletas kitų sudėtingų žemėlapių generavimo metodų. Adresų susiejimas (t. y. nurodymų ir duomenų paskirstymas atminties adresams) gali įvykti trimis skirtingais laikais.
01 pav.: loginis ir fizinis adresas
Pirma, tai gali įvykti kompiliavimo metu, jei tikrosios atminties vietos yra žinomos iš anksto, ir tai sugeneruotų absoliutų kodą kompiliavimo metu. Tai taip pat gali atsitikti įkeliant, jei atminties vietos nėra žinomos iš anksto. Norėdami tai padaryti, kompiliavimo metu reikia sugeneruoti kodą, kurį galima rasti iš naujo. Be to, adreso susiejimas gali įvykti vykdymo metu. Tam reikalingas aparatinės įrangos palaikymas adresų atvaizdavimui. Kompiliavimo laiko ir įkėlimo laiko adresų susiejimo metu loginiai ir fiziniai adresai yra vienodi. Tačiau ši procedūra skiriasi, kai adresas susiejamas vykdymo metu.
Kas yra fizinis adresas?
Atminties blokas stebi fizinį arba tikrąjį adresą. Tai leidžia duomenų magistralei pasiekti tam tikrą atminties langelį pagrindinėje atmintyje. MMU susieja loginį adresą su fiziniu adresu. Pavyzdžiui, naudojant paprasčiausią atvaizdavimo schemą, kuri prideda perkėlimo registro (tarkime, kad registro reikšmė yra y) reikšmę prie loginio adreso, loginis adresas nuo 0 iki x būtų susietas su fiziniu adresų diapazonu nuo y iki x+. y.
Be to, tai taip pat vadinama fizine tos programos adresų erdve. Kad būtų galima naudoti visus loginius adresus, jie turi būti susieti su fiziniais adresais.
Kuo skiriasi loginis ir fizinis adresas?
Loginis adresas prieš fizinį adresą |
|
Loginis adresas yra adresas, kuriame atrodo, kad elementas yra vykdomos taikomosios programos požiūriu. | Fizinis adresas yra atminties adresas, kuris adresų magistralės grandinėje pateikiamas dvejetainiu skaičiumi, kad duomenų magistralė galėtų pasiekti tam tikrą pagrindinės atminties saugyklos elementą arba atminties registrą, susietą su I /O įrenginys. |
Matomumas | |
Vartotojas gali peržiūrėti loginį programos adresą. | Vartotojas negali peržiūrėti fizinio programos adreso. |
Generavimo metodas | |
CPU generuoja loginį adresą. | MMU apskaičiuoja fizinį adresą. |
Prieinamumas | |
Naudotojas gali naudoti loginį adresą, kad pasiektų fizinį adresą. | Naudotojas negali tiesiogiai pasiekti fizinio adreso. |
Santrauka – loginis adresas prieš fizinį adresą
Skirtumas tarp loginio ir fizinio adreso yra tas, kad procesorius generuoja loginį adresą, kai programa vykdoma, o fizinis adresas yra atminties bloko vieta. Visi loginiai adresai turi būti susieti su fiziniais adresais, kad MMU galėtų juos naudoti. Fiziniai ir loginiai adresai yra vienodi, kai naudojamas kompiliavimo laiko ir įkėlimo laiko adresų susiejimas, tačiau jie skiriasi, kai naudojamas vykdymo laiko adresų susiejimas.