Osoiteavaruus

Osoiteavaruus (myös muistiavaruus) tietotekniikassa tarkoittaa yksilöllisten osoitteiden määrän laajuutta.

Laajuuden ilmoittamisessa normaalisti kerrotaan montako bittiä osoitteeseen ilmaisuun käytetään. Tavun ollessa pienin osoitettavissa oleva yksikkö, muistiavaruuden koko on kaksi potenssi osoitteen koko. Esimerkiksi 32-bittisessä osoiteavaruudessa osoitettavissa olevan muistin määrä: 232 = 4 gigatavua.

Suoritin voi tukea sisäisesti osoiterekisterissä 32-bittistä osoiteavaruutta, mutta ulkoisen muistiväylän leveys voi olla pienempi kustannuksissa säästämiseksi. Esimerkiksi ensimmäinen Motorola 68000 -sarjan suoritin tuki sisäisesti 32-bittistä avaruutta mutta ulkoisesti pystyi osoittamaan vain 16-bittistä avaruutta.

Käyttöjärjestelmä usein jakaa muistin ytimen ja käyttäjän osoiteavaruuksiin. Ydin voi käyttää fyysisiä osoitteita (laitteiden oikeat osoitteet) ja käyttäjäsovellukset loogisia osoitteita, joiden käsittelyssä auttaa muistinhallintayksikkö.

Tietokoneen osoittamassa muistiavaruudessa voi olla aukkoja (memory hole), joka on varattu laitteistolle. Käyttöjärjestelmä voi käyttää tätä aluetta tiedon välitykseen laajennuslaitteille. Suorittimet tyypillisesti tukevat suurempaa osoiteavaruutta kuin mitä tietokoneessa voi fyysisesti olla kerralla. Tämä kapasiteetti voidaan hyödyntää näennäismuistissa, jossa varsinainen sisältö vaihdetaan levyltä keskusmuistiin tarvittaessa.

Tietokoneissa laajennuslaitteilla voi olla oma muistiavaruutensa eivätkä ne näe tietokoneen keskusmuistia suoraan tai lainkaan riippuen järjestelmän toteutuksesta. 
Oikosiirron (DMA) tapauksessa muistikäsittelyn on huomioitava että laajennuslaitteella voi olla rajoittuneempi kyky osoittaa muistia (pienempi osoiteavaruus) kuin tietokoneen omalla suorittimella.

HSA-arkkitehtuuri () laitteissa CPU ja GPU voivat jakaa saman muistiväylän ja käyttää samaa muistia. Tämä vähentää mahdollisia muistisiirtoja ja voi parantaa suorituskykyä. Esimerkkinä PlayStation 4.

Historia 
Alkujaan tietokoneen muistille ei ollut abstraktiota: tietokoneohjelma oli tietyssä fyysisessä osoitteessa ja oli ainoa suoritettava ohjelma (prosessi). Moniohjelmoinnin myötä aiemmat olettamukset eivät enää pitäneet paikkaansa ja ohjelmaa voitiin vaihtaa milloin vain, muun muassa tietokoneen odottaessa IO-järjestelmän toimintaa. Myös osituskäytön ja interaktiivisuuden myötä tuli tarve jakaa muisti osoitevaruuksiin sekä lisätä näiden välisiä suojauksia.

Katso myös 
 Virtuaalimuisti
 Sivutus

Lähteet 

Tietotekniikan käsitteet