Jaettu muisti ja sen standardit

Harrastaja591

Miten kaksi ohjelmaa saadaan käyttämään samaa vectoria tai c-taulukkoa ja miten data saadaan pysymään muistissa ohjelman lopetusten, ehkä uudelleen kääntämisten ja käynnistysten välillä, jotta samaa tiedostoa ei tarvitse lukea sisään montaa kertaa?

Ja miten se tehdään standardilla tavalla, jotta eri tekijöiden ohjelmat voivat lukea toistensa muisteja (tai toistensa luomia, jaettavaksi tarkoitettuja muistialueita) helposti, eli siis tavallaan voivat kommunikoida standardin mukaisella tavalla? Onko tälle olemassa standardia, ehkä jopa ISO-standardia?

Ja miten yhteiset muistialueet saadaan L1 tai L2 cacheen eli nopeampiin muisteihin?

5

387

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 23

      > Miten kaksi ohjelmaa saadaan käyttämään samaa vectoria tai c-taulukkoa ja miten data saadaan pysymään muistissa ohjelman lopetusten, ehkä uudelleen kääntämisten ja käynnistysten välillä, jotta samaa tiedostoa ei tarvitse lukea sisään montaa kertaa?

      Tee kolmas ohjelma, joka luo jaetun muistin, käynnistyy bootissa eikä kuole pois.

      > Onko tälle olemassa standardia, ehkä jopa ISO-standardia?

      Parempaa. POSIX standardi. man shmget; man shmat.

      > Ja miten yhteiset muistialueet saadaan L1 tai L2 cacheen eli nopeampiin muisteihin?

      Ne varmaan menevät sinne, kun käytät muistialuetta. Ja varmaan pysyvät siellä, jos et aja mitään muita prosesseja ja käytät muistialuetta jatkuvasti (eli: unohda se). Voit sentään estää niiden sivutuksen levylle. man mlock.

    • "Ja miten yhteiset muistialueet saadaan L1 tai L2 cacheen eli nopeampiin muisteihin?"

      Tuohon toiseen saitkin vastausta mutta tätä voisin tarkentaa, että ohjelmoijalla ei ole mahdollisuutta vaikuttaa muuten kuin suunnittelemalla algoritmit niin, että huomioidaan cachen toiminta. Cache toimii niin, että se mikä menee ensimmäiseksi sisään, lähtee ensimmäiseksi ulos. Koodi sitten kannattaa suunnitella niin, että jos vaikka L1 cache olisi 16kt niin käsittelee dataa esimerkiksi 8kt paloissa ettei vahingossa tyhjennä sitä pois sieltä tarpeettomasti. Tekniikka on nimeltään strip mining. Valgrind on sitten kätevä ohjelmisto analysoimaan cachen käyttöä mutta se toimii vain x86 arkkitehturilla.

      Tietysti prosessien vaihdot yms. tyhjentää cachen, mutta se tapahtuu suhteellisen harvoin ottaen huomion, että prossu jauhaa miljardeja kelloja sekunnissa.

      • Ei oo vaikeeta

        Ulkopuolinen koodi ruiskutetaan sovelluksen varaamaan muistialueeseen siten, että ei ruiskuteta yhteenkään niistä muistialueen kohdista joita sovellus, jota vaklataan, jo käytää.


      • Aika helppoo se on
        Ei oo vaikeeta kirjoitti:

        Ulkopuolinen koodi ruiskutetaan sovelluksen varaamaan muistialueeseen siten, että ei ruiskuteta yhteenkään niistä muistialueen kohdista joita sovellus, jota vaklataan, jo käytää.

        Koodin ruiskutuksen jälkeen vaklattava sovellus eikä rosessien eikä palveluittenkaan hallinta tiedä mitään siitä, että siellä pyörii itse asiassa ulkopuoleinen rosessi järjestelmässä, mutta se rosessi tietää kaikki, mitä sillä sovelluksella tehdään ja muillakin, koska se rosessi voi komentoluupista lukea senkin, mitä muutkin rosessit ja palvelut tekevät.


    • Harrastaja591

      Voisiko esimerkiksi tehdä tekstieditorin kanssa toimivan erillisen ikkunan, joka piirtää vaikka kaaviota tekstin perusteella ( varsinkin jos "teksti" on jotain formaalia koneen tulkittavaksi tarkoitettua, kuten c :aa tai html:ää ), ja siitä huolimatta, että tekstieditorin tekijä ei ole huomioinut mitään laajennusmahdollisuuksia ja plug-inien sovittamista, niinkö? Entä jos kirjoittaa editorilla raakaa html:ää ja se pitäisi saada näkymään samaan aikaan reaaliajassa firefoxin ikkunassa oikein tulkittuna?

      Joissain nettitaistelupeleissä on ongelmana se, että jotkut pelaajat fuskaavat käyttämällä ns. aimbotteja, eli automatisoitua tähtäystä ja laukaisua. Tätä ongelmaa torjumaan on kehitetty punk-buster ohjelma. Perustuvatko aimbotit pelin muistialueen sivusta lukemiseen vaiko "vain" pelin nettiviestinnän kopiointiin ja analysointiin? Aimbotit ja punk buster voivat olla valaiseva esimerkki.

      Miten saa lueteltua koko käyttöjärjestelmän laajuisesti mitkä ohjelmat lukevat minkäkin toisen ohjelman muistia ja jaettua muistia? Ehkä hyvinkin lyhyt c ohjelma voi sen tehdä, en tiedä...

      Entä jos on fyysisesti viallisia muistipaikkoja (vaikkapa gammasäde tai kosminen säde on vaurioittanut transistoria), niin miten edes oma ohjelma saadaan jättämään sellaisen muistipaikan käyttö väliin? Voiko jossain linux-versiossa tai windowsissa laittaa koko käyttöjärjestelmän välttämään tiettyä muistipaikkaa?

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Suomen kansa haluaa Antti Lindtmanista pääministerin

      Lindtman on miltei tuplasti suositumpi kuin etunimikaimansa Kaikkonen. Näin kertoo porvarimedian teettämä kysely. http
      Maailman menoa
      280
      4733
    2. Vain 21% kannattaa Lindtmania pääministeriksi

      se on selvästi vähemmän kuin puolueen kannatus, mites nyt noin?
      Maailman menoa
      135
      3056
    3. Miksei Björn Wahlroos jaa rahaa köyhille?

      Esimerkiksi Nordean tiloissa? Vai tuovatko ne köyhät hiekkaa marmorilattioille ja siksi ei pysty mursunviiksi pystyyn k
      Maailman menoa
      49
      2939
    4. Jouluksi miettimistä: kuka tai mikä valmistaa rahan?

      Nyt kun on ollut vääntöä rahasta ja eritoten sen vähyydestä, niin olisi syytä uida rahan alkulähteille, eli mistä se syn
      Maailman menoa
      28
      1531
    5. Julkinen sektori on elänyt aivan liian leveästi yli varojensa!

      Viimeisen 15 vuoden aikana julkisen puolen palkat ovat nousseet n. 40%, kun taas yksitysellä sektorilla vain n. 20%. En
      Maailman menoa
      227
      1232
    6. Missä kunnassa kaivattusi asuu

      Kuinka tarkkaa uskalla sanoa?
      Ikävä
      47
      1179
    7. Yksikään persu ei ole saanut Nobelin palkintoa

      Kertoo paljon persujen älyn puutteesta. Demareista mm. Ahtisaari on kyseisen palkinnon saanut.
      Maailman menoa
      7
      986
    8. Emme koskaan keskustelleet kasvotusten syistä välirikollemme

      Enkä voisi kertoa perimmäistä rehellistä syytä. Kerroin sinulle pintapuolisen ”paketin” ja otin tavallaan omalle vastuu
      Ikävä
      58
      971
    9. Paskalaista valokuitulakiin

      Nyt maksajiksi joutuvat kaupunkilaiset eivätkä mökkiensä ulkohuusseissa kakistelevat mummot. Nimittäin EU määrää jokais
      Maailman menoa
      52
      959
    10. Miten antaa merkki hyvin eri ikäiselle miehelle, että kertoisi toiveensa ja ajatuksensa?

      Olen pitkään pitänyt miehestä, joka myös varmasti minusta. Hän ei tosin kerro ihastumisesta, eli voi hyvin olla, että tu
      Ikävä
      78
      941
    Aihe