Newsgroup: it.comp.os.win.xp
Titolo: Facciamo chiarezza una volta per tutte sul file di swap ?

Com'è noto, Microsoft afferma che la gestione della memoria dei sistemi
Windows richiede la presenza di uno swapfile.
Se non vado errato però la nozione di swapfile, da che esistono i sistemi
operativi, significa "uno spazio su disco che il sistema utilizza per
simulare memoria aggiuntiva quando quella installata diviene insufficiente".
In altre parole, un OS sposta sul disco i dati dei processi che in quel
momento sono fermi, in modo da poter tenere in memoria quelli dei processi
in esecuzione.
Da questa nozione deriva la conclusione, che molti raggiungono, che in
presenza di una quantità di RAM superiore a quella massima che il sistema
potrà utilizzare uno swapfile non sia necessario.
Microsoft invece afferma che è necessario comunque.
Ora, e qui mi rivolgo particolarmente ai Support, è possibile sapere come
sia strutturata la gestione della memoria di Windows, e *perché* richieda
per forza uno swapfile anche se si ha un GB di RAM e se ne usa al massimo
mezzo ?
Grazie...
Massimo
P.S.
Il crosspost è volontario, la domanda ricorre spessissimo in entrambi i
gruppi.

 sistema potrà utilizzare uno swapfile non sia necessario.
Anche questo e' stato considerato. Togliendo lo swapfile, Windows e'
obbligato a tenere tutto in RAM e l'efficienza delle task in foreground
aumenta; pero' Microsoft raccomanda di mantenere comunque uno swapfile su un
disco, anche se non si desidera usarlo.
Inoltre c'e' questa nota, che probabilmente risponde a quanto chiedi (ometto
l'origine perche' protetta da copyright e perche' non avevo tanta voglia di
tradurre tutto :-)):
A large page file is appropriate for systems with relatively low RAM
configurations-on a system with 128 MB of RAM, for instance, a page file of
192 MB to 384 MB makes perfect sense. With higher RAM counts, overly large
page files simply waste disk space. If you have 512 MB or more of RAM and
your Total Commit Charge never approaches the total physical memory
installed on your computer and you're short of free disk space, you might
want to set your page file to a fixed size, where the initial and maximum
sizes are identical and are equal to your total amount of installed RAM. Be
aware, however, that this option can result in out-of-memory error messages
if your computing requirements change over time.
Ciao
Luca

 essere in stato dormant, idle o waiting for I/O.
Intendevo quello, grazie comunque per la precisazione :-)

Ancora una volta sento dire di mantenere comunque un page file uguale alla
memoria disponibile, *nonostante* nella situazione ipotizzata questa non
venga mai utilizzata del tutto. Facciamo due conti: 512 MB di RAM
installati, con occupazione massima prevista ipotizzabile inferiore al
totale, quindi diciamo 500 (e siamo proprio al limite). Paging file di altri
512, quindi totale 1 GB. Come diavolo dovrebbe accadere un out of memory se
anche se ne usassero 700 MB ? Ma alla Microsoft pensano che l'occupazione di
memoria su un computer raddoppi all'improvviso in maniera più o meno casuale
? :-)
Massimo

 Microsoft invece afferma che è necessario comunque.
Questa volta Microsft non sbaglia. Un processo e` definito come un programma
in esecuzione. Quando ci sono molti programmi in esecuzione la necessita`
diventa quella di dare loro un adeguato spazio di memoria per la loro
esecuzione. Se il programma e` stato compilato con memoria rilocabile
(cioe` al programma e` sufficiente sapere dove comincia lo spazio di
memoria ad esso assegnato) in teoria la memoria virtuale serve solo quando
la memoria fisica e` piena; in caso contrario bisogna eventualemnte fare un
po' di spostamenti per far spazio tra programmi che vogliono la stessa zona
di memoria. Ora: sono anni che non si compilano programmi con indirizzi
assoluti, quindi questa e` una ragione teorica che lascia il tempo che
trova.
Tuttavia, molti sistemi operativi usano ancora swap. Linux, addirittura,
pretende che esista una specifica partizione su disco che faccia da swap.
In quella partizione vengono ad esempio memorizzate tutte quelle routine di
programma che non vengono necessariamente utilizzate da un programma, e che
vengono spostate "per fare spazio in memoria", che resta sempre una risorsa
importante, anche se tu ne possiedi in quantita`. Un Sistema Operativo e`
infatti un programma sviluppato per gestire uno strumento general-purpose,
e per adattarsi a tutte le situazioni: quando e` ben fatto, non temere,
fara` di tutto per gestire al meglio la memoria, e le pagine piu` richieste
saranno sempre disponibili in RAM. 
-- 
Luca Telloli <telloli [at] cs [dot] unibo [dot] it>
Undergraduate of Computer Sciences @ University of Bologna - Italy