Tänä aikana kannettavat laitteet päivittyvät ja paranevat koko ajan. Olemme saaneet jatkuvasti päivityksiä muistiosastolla (enemmän kuin oikeasti tarvitsemme). Jos luet edellisen kirjoituksemme ”Kuinka paljon RAM-muistia on liikaa RAM-muistia?”, tiedät itse asiassa, kuinka paljon RAM-muistia älypuhelimesi oikeasti tarvitaan, jotta se toimisi saumattomasti, ja sen ylittäminen on pelkkää ylilyöntiä.
Saatat tarvita päivitystä, jos puhelimesi viiveilee tai hidastuu nykyaikana. Mutta oletko koskaan miettinyt, miksi ja ennen kaikkea, miten se tapahtuu? Tässä ominaisuudessa dekoodaamme, miten tämä tapahtuu. Ja paljon muuta. Lue eteenpäin!
Miksi maailmamme pyörii RAM-muistin ympärillä?
Android-käyttöjärjestelmän ytimessä on Linux-ydin. Aina kun käynnistät uuden sovelluksen, luot prosessin Linuxin sisälle. Prosessi on nyt vastuussa kaikista eri resursseista, joita ydin saattaa jakaa eri sovelluksille. CPU-aika, Input- ja Output-prosessit sekä RAM-muisti katsotaan kaikki resursseiksi.
CPU-aikaa ja I/O:ta pidetään useimmiten äärettöminä resursseina. Jos CPU on varattu ja haluat suorittaa uuden tehtävän, tehtäväsi saa myös siivun tuosta CPU-ajasta. On varmaa, että tehtävä tehdään, mutta se saattaa viivästyä CPU-ajan ylikuormituksen vuoksi. Vastaavasti tehtäväsi saattaa tapahtua hieman nopeammin, jos CPU on vähemmän varattu.
I/O:n tapauksessa ison tiedoston lataaminen, jonkin asian kirjoittaminen sisäiseen muistiin tai muiden prosessien suorittaminen samaan aikaan saattaa hidastaa niiden valmistumista, mutta se tapahtuu lopulta.
Muistia on kuitenkin laitteessa kiinteä määrä. Se on rajallinen. Jos RAM-muisti loppuu, ei ole mitään taikuutta, joka vapauttaisi RAM-muistia, jos odottaisit vähän pidempään. Siksi Android ja Linux tarvitsivat järjestelmän, jonka avulla ne voivat puuttua tähän rajoitukseen.
Miten RAM-muisti toimii älypuhelimessa?
Kun käynnistät sovelluksen laitteessasi, käynnistyy uusi prosessi, joka vaatii Linux-ytimeltä, että se tarvitsee (vaikkapa) ”X” määrää RAM-muistia vain sovelluksen lataamiseen. Tämän jälkeen sovellus saattaa myös pyytää lisää muistia ladatakseen lisää tiedostoja tai ladatakseen jotain internetistä, ja Linux-ydin antaa sen käyttöön. Näin tapahtuu RAM-muistin perusdelegaatio.
Laitteellasi on käytettävissä olevaa muistia, joka on eri asia kuin vapaa muisti. Käytettävissä oleva muisti on itse asiassa muistia, joka on käytettävissä uusien sovellusten käynnistämiseen tai muiden sovellusten käsittelyyn ilman swappia. Monitehtäväisessä käyttöjärjestelmässä vapaa muisti on huono asia, koska muisti istuu käyttämättömänä; se voi aina auttaa jossakin prosessissa.
Vapaata muistia voidaan käyttää esimerkiksi tiedostojen I/O:n parantamiseen, verkon I/O:n välimuistiin tai sitä voidaan antaa muille ohjelmille, jotka voivat käyttää tuota ylimääräistä muistia hyödyksi. Samalla se merkitään myös vapaaksi muistiksi. Näin ollen sen käyttö puskurina tai välimuistina voidaan milloin tahansa lopettaa ja se voidaan ottaa prosessin käyttöön.
4 Gt RAM-muistia sisältävässä laitteessa osa muistista on laitteistoajureiden käytössä ja osa Androidin käytössä. Jäljellä oleva käytettävissä oleva muisti tuoreen järjestelmän uudelleenkäynnistyksen jälkeen on noin 1,7 Gt. Kun sovellus käynnistyy, laite tarkastelee käytettävissä olevaa muistia tarjoaa joitakin paloja käytettäväksi prosesseille.
Se itse asiassa jakaa muistin sivuihin, yksi sivu on noin 4 KB. Näitä sivuja järjestelmä voi delegoida eri prosesseille tarpeen mukaan. Kaikki prosessit toimivat hyvin, jos muistia on runsaasti. Mutta kun käytettävissä oleva muisti vähenee sovellusten määrän kasvaessa, alkaa se aiheuttaa ongelmia. Jossain vaiheessa käytettävissä oleva muisti ei riitä uuden prosessin käynnistämiseen.
Tässä vaiheessa Linuxilla ja Androidilla on ongelma. Selvitäkseen tästä ne voivat joko tehdä swappingia tai tappaa sovelluksen vapauttaakseen muistia. Saamme swapping-käsitteen palvelimilta ja työasemilta. Kun muistia ei ole tarpeeksi, voit ottaa osan aktiivisesta muistista, joka on tällä hetkellä RAM-muistissa, ja kirjoittaa sen kiintolevylle. Näin vapautat kyseisen muistilohkon tai -sivun. Myöhemmin, jos kyseistä sivua tarvitaan uudelleen, voit saada sen takaisin kiintolevyltä. Android toimii kuitenkin hieman eri tavalla eikä tallenna muistia kiintolevylle.
Android käyttää ZRAMia (”Z” Unix-termeissä on symboli pakatulle RAM-muistille). ZRAM-swapilla voidaan lisätä järjestelmässä käytettävissä olevan muistin määrää pakkaamalla muistisivuja ja sijoittamalla ne dynaamisesti varattuun muistin swap-alueeseen. Kun jotain on kirjoitettu tuohon pakattuun muistiin, siihen ei pääse enää käsiksi, ja siitä tulee jokseenkin kuin ZIP-tiedosto. Jos sitä halutaan käyttää, se on purettava ja kirjoitettava takaisin keskusmuistiin. Tämä prosessi on swapping out ja swapping back in. Tätä ikuisesti päättyvää swapping-sykliä kutsutaan ”thrashingiksi”. Androidilla ei ole mitään ongelmaa thrashingin kanssa, sillä kun se on kyllästynyt eli tila loppuu swapping-tilasta, se vain alkaa tappaa prosesseja.
Se valitsee luettelosta sovelluksen, jota et ole käyttänyt vähään aikaan, ja tappaa sen. Se vapauttaa kyseisen sovelluksen käyttämän tilan ja nyt tilaa on käytettävissä uudelle sovellukselle tai olemassa olevan sovelluksen laajentamiseen. Kaikki sovellukset on suunniteltu siten, että kun sovellus siirtyy taustalle, on aina olemassa mahdollisuus, että se ei ehkä koskaan enää avaudu. Joten niiden nykyinen tila tallennetaan.
Jos avaat sovelluksen uudelleen, se latautuu uudelleen. Joskus tämä prosessi ei ole saumaton. Jos esimerkiksi pelasit peliä, se ei ala siitä, mihin jäit, vaan saattaa aloittaa samalta tasolta. Se, miten hyvin sovellus selviytyy tästä tilanteesta, riippuu sovelluksesta ja sovelluksen kirjoittajasta. Jos tarvitset suurempaa muistia, useita prosesseja voidaan tappaa.
Tiheä uudelleenlataaminen johtaa katkeraan käyttökokemukseen. Siksi suurempi RAM-muisti on parempi käyttäjän näkökulmasta. Tosin kaikki swappauksen vivahteet ja milloin se swappaaminen on vähän monimutkaisempaa. Mutta kun puhelin on ylikuormitettu, on pakko tappaa joitakin sovelluksia pitääkseen puhelimen käynnissä ja estääkseen sen jäätymisen. Tappaminen on periaatteessa välttämätön paha, jonka Android-järjestelmä on omaksunut. Pysy kuulolla, sillä lisää tällaisia artikkeleita on tulossa. Hyvää lukemista!