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

431

    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. Missä kokoomuksen naiset?

      Hähmäistä ukkotarinaa kuultu koko viikonloppu. Kukaan ei ole kokoomuksessa edes yrittänyt pitää naisten puolta. Jopa
      Maailman menoa
      86
      3600
    2. Finland is now Petter place

      Audin B-ryhmän ralliautolla saatiin kansa voimaan hyvin. Kiitos kokoomus huumoripläjäyksestä.
      Maailman menoa
      29
      2373
    3. Ilman Stadia Suomessa ei olisi kunnon lihajalosteita

      HK, Helsingin makkaratehdas, Votkin, mitä näitä nyt onkaan. Böndellä ei ole kunnollisia jalostajia.
      Maailman menoa
      141
      2018
    4. Toivon että kuulut elämääni

      Mutta aika näyttää miten läheisesti. Lupaan kertoa jossain sivulauseessa, kun muutan paikkaa.
      Ikävä
      34
      881
    5. Mikä on kaunein

      Ja hellyttävin hetki irl kaivattusi kanssa?
      Ikävä
      44
      811
    6. En unohda sua

      En vaan unohda sua. Eikä se näköjään ole tarkoituskaan. Rakastan sua sitten omalla tavalla kauempaa kun mikään muu ei on
      Ikävä
      30
      800
    7. Mahdatko ymmärtää sitä

      Mä en selviä jollei me jutella kunnolla. Tarvitsen sua siihen. Etkä sä voi sitä tietää kun en ole ilmaissut mutta olen
      Ikävä
      60
      744
    8. Jorma Lind kuollut

      Ylen uutisankkurina 40 vuotta toiminut Jorma Lind on kuollut 85-vuotiaana. https://yle.fi/a/74-20230265 ARVl on näet
      Maailman menoa
      4
      734
    9. Kullan kemiallinen merkki on au

      Ei välttämättä. Mikä sun kullan merkki on?
      Ikävä
      40
      687
    10. Kyllä nainenkin voi ottaa yhteyttä

      Ja on ihan kiva jos ottaa yhteyttä mieheen. Minä ainakin olisin onnessani jos nainen ottaisi yhteyttä. mies
      Ikävä
      87
      676
    Aihe