Názory k článku Programování pod Linuxem pro všechny (23)

  • Článek je starý, nové názory již nelze přidávat.
  • 12. 7. 2004 9:38

    Yenya (neregistrovaný)

    V textu pisete:

    --
    MAP_SHARED - zápisy se okamžitě odrážejí v připojeném souboru. Tento mód používejte, pokud chcete použít mapovanou paměť ke komunikace mezi procesy. Mód nelze kombinovat s módem MAP_PRIVATE.
    --

    Zajimave je to slovo "okamzite", zejmena kdyz dale popisujete msync(2). Pokud by to bylo "okamzite", neni msync(2) potreba. Ve skutecnosti je to tak, ze rozumne implementace VM se chovaji tak, ze zapisy do mmap(2)ovane oblasti s MAP_SHARED se projevuji naraz vsude vcetne cteni tehoz souboru pres read(2). Na druhe strane specifikace tohle nevyzaduje (napriklad kdyz nemate unifikovany system diskovych bufferu a virtualni pameti - drive treba SunOS 4 nebo NetBSD, dnes nevim). Cili aplikacni programator by mel vzdy volat msync(2) pokud chce, aby se zmena projevila i v tom souboru. Krome tohoto lze jeste msync(2) vyuzit jako jistou variantu f{data,}sync(2), cili k zaruceni toho, ze data budou nejen viditelna ze vsech procesu a deskriptoru, ale ze se i fyzicky ulozi na disk.

    Jinak dobry serial, diky.

    -Yenya

  • 13. 7. 2004 20:57

    hkmaly (neregistrovaný)

    Sdilena pamet sama o sobe je synchronizacnim primitivem. Semafor, kterym synchronizujeme pristup k ni, muzeme realizovat primo v ni synchronizacnimi instrukcemi (xchg, cmpxchg8b, ...) nebo na uniprocesoru libovolnymi instrukcemi.