msync(2)

Laut Linux-Manualpage: Daten werden auf die Platte geschreiben. Andere Aussage: read(2) kann dan die Daten lesen (Damit würde es ausreichen, wenn die Daten in den Buffercache geschreiben werden).

Recherche im Kern 2.4.8

Quelle mm/filemap.c

sys_msync: rechnet in VM-Bereiche um und ruft je msync_interval auf.

msync_interval arbeitet nur bei MAP_SHARED.
ruft filemap_sync auf und im Synchronen Fall filemap_fdatasync(inode->i_mapping) sowie falls vorhaden, die fsync-Methode der Datei.

Die fsync-Methode der Datei wird auch bei fsync(2) Aufgerufen. (./fs/buffer.c)

filemap_sync: flush_cache_range, filemap_sync_pmd_range flush_tlb_range Ebenen:

    filemap_sync
     filemap_sync_pmd_range
      filemap_sync_pte_range
       filemap_sync_pte (Seitenebene)
  
filemap_sync_pte macht dann: flush_tlb_page und set_page_dirty Elementaroperationen: in asm/pgtable.h

Datei operationen:

Datei wird in include/linux/fs.h definiert.

Fazit

msync ist also tatsächlich eine Möglichkeit, sicher zu stellen, daß Daten tatsächlich auf Platte geschrieben wird. Dies ist für die Transaktionsverarbeitung sehr bedeutend.
Informatik- und Netzwerkverein Ravensburg e.V Rudolf Weber