Ero sivun ”Käyttöjärjestelmä” versioiden välillä

[katsottu versio][katsottu versio]
Poistettu sisältö Lisätty sisältö
→‎Muistinhallinta: Kirjoitettu jokseenkin uudestaan, mutta pitäisi vielä jatkaa
Rivi 30:
=== Muistinhallinta ===
{{Katso myös|[[Muistinhallintayksikkö]]}}
Vanhimmissa koneissa ei ollut lainkaan muistinhallintajärjestelmää. Tämä tarkoitti sitä, että ohjelmat voitiin sijoittaa vain tiettyyn kohtaan keskusmuistia, ja ohjelma pystyi käsittelemään mitä muistinpaikkaa tahansa. Näistä aiheutuvien ongelmien ratkaisemiseksi muistinhallinnan päätehtäviksi ovatkin muodostuneet muistin suojaus ja samanlaisen osoiteavaruuden tarjoaminen kaikille prosesseille, ts. jokaisen prosessin osoiteavaruus alkaa nollasta riippumatta siitä, mihin kohtaan fyysistä muistia ohjelma on sijoitettu.
Käyttöjärjestelmä hallinnoi prosessien toimintajärjestystä antamalla prosessille pääsyn yleensä vain tarvitsemaansa muistialueeseen, jotta yksittäinen prosessi ei sekoittaisi muiden prosessien toimintaa. Käyttöjärjestelmä huolehtii muistinsuojauksesta sekä siitä, että prosessit saavat tarvitsemansa määrän muistia, keskusmuistista tai mahdollisesta [[näennäismuisti]]sta. Ohjelmaa kirjoitettaessa/käännettäessä sen sijaintia muistissa ei vielä tiedetä, sillä muistialue varataan vasta, kun ohjelman suorittava prosessi luodaan. Prosesseja voidaan myös suorituksen aikana siirtää muistialueelta toiselle, mahdollisesti jopa keskus- ja näennäismuistin välillä. Ohjelman käyttämä "looginen" osoiteavaruus voi olla suurempi kuin koneessa oleva fyysinen keskusmuistin määrä. Käyttöjärjestelmä vapauttaa prosessin käyttämän osoiteavaruuden prosessin päättyessä ja tarvittaessa myös silloin, kun muut prosessit vaativat lisää muistia.
 
Muistinhallinnasta vastaa tyypillisesti [[muistinhallintayksikkö]], joskin se voidaan integroida suorittimen kanssa yhteen. Käyttöjärjestelmä huolehtii muistinhallintayksikön ohjauksesta ja tarjoaa käyttöjärjestelmäpalvelut muistin varaamiseen ja vapauttamiseen. Muistinhallintayksikkö huolehtii laitteistotasolla siitä, että virheellinen muistiviittaus esimerkiksi käyttöjärjestelmän tai toisen prosessin alueelle aiheuttaa [[ohjelmavirhekeskeytys|ohjelmavirhekeskeytyksen]].
 
Prosesin muistia voidaan myös suorituksen aikana siirtää fyysiseltä muistialueelta toiselle, myös keskusmuistista massamuistilaitteelle ja takaisin ([[heittovaihto]] ja [[virtuaalimuisti]]). Käyttöjärjestelmä vapauttaa prosessin käyttämän muistin prosessin päättyessä.
 
Käyttöjärjestelmän muistinhallintamenetelmät voidaan jakaa seuraaviin ryhmiin: