Paras vastaus
Segmentti on vierekkäinen muistiosa. Segmentoidussa muistijärjestelmässä prosessin koko muisti on segmentteinä. Ensimmäiset virtuaalimuistijärjestelmät (Burroughs B5000, Mulitcs) perustuivat vaihtelevan kokoisiin segmentteihin, jotka kopioidaan RAM-muistiin ja ulos siitä.
Ohjelma viittaa jokaiseen segmenttiin siirtymänä segmenttirekisteriin. Segmenttirekisterin todellista sisältöä ohjaa järjestelmä. Järjestelmä tietää, milloin segmenttiin viitataan, kun segmenttirekisteriä käytetään, ja käyttää sitä virtuaalimuistin hallintaan.
Tämä on ristiriidassa sivutetun virtuaalimuisti, jota käytetään kaikkialla tänään, , jossa virtuaalimuistin kvantit ovat kiinteäkokoisia muistinpaloja. Sivutus on monimutkaisempi ja vaatii enemmän laitteistotukea.
MIT: n Multicsilla on ollut valtava vaikutus moderniin tietojenkäsittelyyn (mukaan lukien monet Unixiin ja Linuxiin liitetyt ideat). Fred Pollack liittyi Intel 286 -projektiin tuoreena MIT: stä. Hän näki 8086 “segmentti” -rekisterit (oikeastaan perusrekisterit) ja edusti menestyksekkäästi näiden todellisten segmenttirekistereiden luomista kuten Multicsissa. (Fredistä tuli myöhemmin Intel Fellow.)
286: n 64 kt: n segmentit kärsivät saman ongelman kuin Multics-segmentit: ne olivat liian pieniä. Liian usein tarvitaan useita segmenttejä muistirakenteiden käyttämiseen, mikä tarkoittaa segmenttirekisterien lataamista uudelleen ja käyttöjärjestelmän usein saamista mukaan. Suorituskykyyn vaikuttamisen vuoksi segmentointia käytettiin harvoin ja segmenttirekistereitä käytettiin perusrekistereinä 8086-yhteensopivuustilassa.
32-bittinen Intel 386 lisäsi sivutetun virtuaalimuistin (YEA!) Segmenttikaavion alle (meh ). 64-bittinen Intel-arkkitehtuurimalli poistaa segmenttirekisterit kokonaan, vaikka sillä on silti yhteensopivuustilat aina 8086: een asti.
Vastaus
1.Mitä segmenttirekisteri on?
-> Kuten me kaikki tiedämme, että rekisteri on prosessorissa. luomme segmenttejä muistiin (segmentointi). Saadaksesi segmenttien lähtöpaikan, tallennamme näiden segmenttien osoitteet segmenttirekisteriin. lyhyisiin segmenttirekistereihin tallenna muistissa olevien segmenttien aloitussijainti eli segmenttien osoite.
3. miten muistin segmentointi tapahtuu?
-> muistin segmentointi tapahtuu käyttämällä 16-bittisiä osoitteita. ensin annamme segmentin osoitteen (segmentin alku), antamalla segmentin osoitteen annamme offset-osoitteen () pääsyyn kyseisen segmentin sijainteihin.
annamme segmentin osoitteen vain kerran sen jälkeen, kun annamme offset-osoitteen.
annamme segmentin osoitteen ja offset-osoite molemmat 16-bittiset osoitteet ohjelmoijana. tämän osoitteen antamisen jälkeen prosessorin tehtävä on peittää molemmat osoitteet fyysiseksi osoitteeksi (todellinen osoite).
fyysinen osoite = segmentin osoite * 10 + offset-osoite
= 1000 * 10 + 2345
= 12345H