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
→‎Muistinhallinta: Kirjoitettu muistinhallinta uusiksi
Rivi 32:
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.
 
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 [[ohjelmavirhekeskeytyskeskeytys (tietotekniikka)|ohjelmavirhekeskeytyksen]].
 
ProsesinProsessin muistia voidaan myös suorituksensuorituksenkin 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ä.
 
Yksinkertaisin tapa varata prosessille muistialue on yhtenäinen pala keskusmuistia ({{k-en|single contiguous allocation}}). Tästä voi seurata tilanne, jossa muistia on kyllä tarpeeksi vapaana, mutta ei yhtenäisenä alueena, mikä aiheuttaa tarpeen tiivistää muistia. Ongelman pienentämiseksi voidaan muisti jakaa sivuihin, jolloin vain yksittäisen sivun täytyy olla yhtenäisenä muistissa, mutta peräkkäiset sivut voivat olla eri puolilla fyysistä muistia. Jos sivun koko ei ole vakio (ts. talletetaan sekä sivun alkuosoite että sen pituus), puhutaan myös muistin osioinnista ({{k-en|partitioned allocation}}). Jos sivun koko on vakio, puhutaan sivutetusta muistista ({{k-en|paged memory management}}). Muisti voidaan jakaa myös segmentteihin ({{k-en|segmented memory management}}), jolloin yhden segmentin pitää saada yhtenäinen alue keskusmuistista. [[Virtuaalimuisti]] toteutetaan lähes aina sivuttavan muistin päälle. Myös segmentoitu muisti voidaan jakaa sivuihin virtuaalimuistia varten.
Käyttöjärjestelmän muistinhallintamenetelmät voidaan jakaa seuraaviin ryhmiin:
* yksittäinen jatkuva alue ({{k-en|Single contiguous allocation}}, ks. [[sulautetut järjestelmät]])
* osioitu alue ({{k-en|Partitioned allocation}}, [[suurtietokone]]et ja [[RTOS|reaaliaikaiset käyttöjärjestelmät]])
* sivutettu muisti ({{k-en|Paged memory management}}, ks. [[virtuaalimuisti]])
* segmentoitu muisti ({{k-en|Segmented memory management}}, ks. [[Multics]])
 
=== Virtuaalimuisti ===