> Pokud dochází paměť, není třeba program ukládat
> do swap oblasti, stránky obsahující kód programu
> jsou prostě uvolněny, neboť je možno je kdykoli
> znovu načíst ze souboru.
Ako je to s 'Load-on-demand' v pripade ked spustim, alebo nacitam suboru, ktory hned potom potom zmazem?
Takze, z MSDN (k API DeleteFile):
Windows 95/98/Me: The DeleteFile function deletes a file even if it is open for normal I/O or as a memory-mapped file. To prevent loss of data, close files before attempting to delete them.
Windows NT/2000/XP: The DeleteFile function fails if an application attempts to delete a file that is open for normal I/O or as a memory-mapped file.
Coz se ovsem da vykladat mnoha zpusoby, predevsim mam pocit, ze se mluvi o mazani souboru, ktery si sam otevres (Brrrr), o tom, ze bys tak smazal soubor otevreny jinym procesem, nemluve o systemu jsem se (explicitne) nedocetl nic. Nejspis to nikoho u M$ nenapadlo...
Praxe z Win98 rika, ze soubory, ktere ma otevren jiny proces/program proste smazat nejdou. (Alespon ve statisticky zaznamenatelnem procentu pripadu.)
na normalnych filesystemoch existuju ,,hard''-linky. teda subor sa nachadza na disku len raz ale v adresarovej strukture moze byt nanho viac odkazov. Kazdy subor si ale eviduje kolko odkazov nanho existuje. Na mazanie suboru existuje syscall ,,unlink'' teda zmaze sa zaznam v adresari a znizi sa pocet odkazov o 1, ak dosiahne tanto pocet 0 subor sa zmaze naozaj. Pri otvarani suboru sa podobne zvysuje pocitadlo odkazov, takze unlink len znizi pocitadlo ale subor este ,,zije''.
Ve skutečnosti má inoda počítadla dvě --- i_count (počet odkazů v paměti na tuto inodu, na Linuxu<=2.0 to korespondovalo s počem otevření souboru) a i_nlink (počet hard-linků). Na disk se ukládá pouze i_nlink, v paměti se drží obě. Pokud je i_count == 0, inoda může být při nedostatku paměti zapsána na disk a uvolněna z paměti. Pokud jsou obě počítadla nula, soubor se fyzicky na disku smaže. Pokud smažeme otevřený soubor, snížíme mu i_nlink na 0, ale i_count je stále nenulové (neboť je otevřený), takže se soubor nemaže.