Kun ram ei riitä, swap?

Jos käsittelee vaikka niin isoa kuvaa ettei se mahdu ram muistiin niin sitten normaalisti siitä osa menisi kovalevyn swap-osiolle. Mutta voiko määrätä mikä data menee kovalevylle väliaikaisesti, käsittelyä varten ja mikä pysyy ram muistissa?
3190
Äänestä

Muut lukivat myös

Vastaukset 3

Vanhimmat

Voit koodata muistin swappaamisen itse.

Perusidea voisi olla vaikkapa sellainen, että ohjelmalle määritellään (esim. parametrina) käytettävän maksimimuistin määrä, vaikkapa sopivan kokoisen puskurin monikertoina, Puskurien määrä kannattanee pitää kohtuullisena, esim. gigatavun muistin voi jakaa 8 x 128 MB,16 x 64 MB tai 32 x 32 MB puskureihin.

Kun muistia tarvitaan lisää, ohjelma allokoi uuden puskurin ja käyttää sitä. Jos kaikki puskurit on jo käytössä, kirjoitetaan se puskuri, jota ei tulla tarvitsemaan pisimpään aikaan, levylle jemmaan ja uudelleenkäytetään tuo tila. Lopuksi sitten muistetaan vapauttaa puskurit sitä mukaa kun tulee valmista.

Kannattaa myös harkita I/O:n toteuttamista erillisenä threadinä, niin että vanhaa puskuria kirjoitetaan levylle jo ennen kuin lisää vapaata tilaa tullaan tarvitsemaan, ja että uutta dataa luetaan levyltä puskureihin ennen kuin sitä tarvitaan käsittelyvaiheessa. Tällöin ohjelma voi tehdä, mitä sen nyt pitääkin tehdä, joidenkin puskurien sisällölle ja samanaikaisesti lukea/kirjoittaa jotain muuta puskuria levylle/levyltä. Riippuen siitä, mitä ohjelma datalle tekee, voi hyvinkin kyllä käydä niin, että varsinainen datan käsittely threadi joutuu odottamaan I/O threadiä. Sille ei sitten vain voi mitään - levy I/O on kumminkin aika hidasta.

Äänestä
  • Milläs ihmeellä takaat ettei käyttöjärjestelmä swappaa tuota puskuriasi tai sen osaa itse levylle? Ja oletko koskaan kuullu asykronisesta I/O:sta?

    Äänestä

hetkinen!!!!!!!

tarkoitatko että kuva ei mahdu ram-muistiin vai että ohjelma ei pysty käyttään kaikkea muistia.
kokonais musitin määrä on/voi olla eri kuin se mitä ohjelma pystyy käyttään.

Äänestä

Kommentoi aloitusta


Jekura kirjoitti:

Jos käsittelee vaikka niin isoa kuvaa ettei se mahdu ram muistiin niin sitten normaalisti siitä osa menisi kovalevyn swap-osiolle. Mutta voiko määrätä mikä data menee kovalevylle väliaikaisesti, käsittelyä varten ja mikä pysyy ram muistissa?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu