Dani ha scritto:E cosa accade alla memoria bufferizzata qualora un nuovo processo desideri allocarne altra per se ?
Ad esempio su una macchina con 32 mb di ram totale il processo x alloca 20 mega di memoria, li libera con free() ma resta in esecuzione. Un nuovo processo y necessita di altri 20 mega, ma stando all'output del comando free non ci sono risorse sufficienti. Che succede in questo caso, le risorse bufferizzate vengono spazzate via o il kernel inizia ad usare lo swap ? Mi auguro la prima

Come detto, UNIX usa tutta la memoria disponibile.
Se allocata, poi liberata con free, rimane li`.
La ripetizione di un programma impiega meno tempo!
Se un altro processo richiede memoria, usera` quella liberata,
se non ne trova piu`, entrera` il famigerato OOM killer.
Esempio pratico, puoi usare il tuo programma per testare:
- cd /zz/src
- du -hs dice 19GB
- macchina (ab)usata, top dice 4GB used, 130M free
- time (built-in) o /usr/bin/time (con le opzioni -p -a -o /path/file) ls -alR > /dev/null
- la prima volta 1m5..., top 19MB free
- ripetuto dieci volte, ora sempre 0m5..., top sale a 39M free
- stessa macchina dopo reboot, top dice 180M used, 3.9GB free
- time (built-in) o /usr/bin/time (con le opzioni -p -a -o /path/file) ls -alR > /dev/null
- la prima volta 1m5..., top 590MB used, 3.5GB free
- ripetuto dieci volte, ora sempre 0m5..., top scende a 355M free