Home > GNU/Linux, newbie > Guida per principianti a GNU/Linux: la memoria virtuale

Guida per principianti a GNU/Linux: la memoria virtuale

La traduzione da memoria virtuale a memoria fisica

La 'traduzione' da memoria virtuale a memoria fisica

Molti, intuitivamente, sanno a cosa serve lo swap con GNU/Linux. Non è, o non dovrebbe essere, un concetto nuovo per chi viene da Windows. Anche il sistema operativo della Microsoft usa un file di swap come memoria virtuale. La differenza principale è che GNU/Linux usa, di norma, una partizione separata anche se è possibile fargli usare un file su una partizione già esistente.

Ma vediamo più precisamente come funziona la memoria virtuale. Supponiamo di avere 1 GB di memoria RAM e una partizione di swap anch’essa di 1 GB. Questo è quello che vedranno i programmi:

In altre parole, per i programmi esistono 2 GB di memoria, né più, né meno. Come è vista la cosa, invece, dal processore?

Quando un programma tenterà di accedere alla parte dei 2 GB contenuta nello swap, il processore caricherà il “pezzo” che interessa al programma nella memoria RAM, in modo del tutto trasparente all’applicazione.

Esistono diverse strategie per gestire questo meccanismo. A noi basta sapere che esso è in parte hardware (ovvero gestito dal processore stesso) e in parte software. C’è quindi un programma che “sa” che la realtà è diversa (ovvero che i due GB sono in realtà uno in RAM e l’altro sul disco) e questa parte è il kernel.

Il kernel, a differenza del resto dei programmi, infatti, gira in una particolare modalità del processore, chiamata kernel mode o anche, nel caso dei processori Intel dal 386 in poi (e compatibili), modalità protetta.

In questa modalità il processore mette “a nudo” la realtà sottostante, mentre nello user mode crea una realtà “virtuale” (come appunto la memoria virtuale). La modalità protetta è anche quella che permette una gestione avanzata del multitasking.

Appurata questa differenza, nel prossimo post spiegherò la differenza tra i kernel monolitici e i le architetture a microkernel.

Intanto però vediamo quali sono i parametri interessanti per la memoria virtuale in GNU/Linux.

Per prima cosa occorre dire che il kernel Linux può usare anche più di un’area di swap contemporaneamente.

Supponiamo di aver creato una partizione swap con un programma come gparted e di volerla attivare. Basterà dare:

sudo swapon /dev/sdXY

dove sdXY è il dispositivo associato alla partizione creata, ad esempio sda3.

Per disattivarla:

sudo swapoff /dev/sdXY

Possiamo rendere permanente l’attivazione tramite la tabella delle partizioni contenuta in /etc/fstab. Ci basterà aggiungere una riga del tipo:

/dev/sdXY   none    swap    sw   0   0

Infine, vediamo come modificare la politica di swap, ovvero fare in modo che il processore usi il più possibile la memoria RAM e solo in caso di estrema necessità lo swap.

Ci basterà modificare un file virtuale della directory /proc/sys (ricordate?)

sudo echo 20 > /proc/sys/vm/swappiness

Questo comando semplicemente scrive “20” nel file swappiness, solo che questo non è un file qualsiasi, ma un file virtuale che rappresenta un parametro di funzionamento del kernel. Ecco un esempio di come sia elegante e semplice gestire “tutto come un file”. Il valore normale è 60, quindi 20 abbassa l’utilizzo dello swap. Questo avviene però a discapito della cache, un meccanismo che in sostanza serve a immagazzinare i dati più usati nella RAM in modo da non doverli leggere dall’hard disk.

  1. 10 agosto 2008 alle 16:30

    ottimo… senza dimenticare che è facile sia usare i file come swap in linux oppure le partizioni come swap in windows😉

    bell’articolo guiodic, magari da approfondire un po’ ma ben scritto🙂

  2. 10 agosto 2008 alle 21:53

    Ciao Guido, commento su questo tuo ultimo articolo dopo aver passato oltre un’ora a leggermi gli altri.
    Complimenti per il modo in cui spieghi, complimenti davvero.

    Denis

  3. guiodic
    10 agosto 2008 alle 23:25

    Grazie denis🙂

  4. 11 agosto 2008 alle 12:01

    Io ho sempre saputo e fatto –>

    Partizione Swap = 2 * RAM

  5. 11 agosto 2008 alle 12:14

    Ma se invece ho gia 2gb di ram e non voglio memoria di swap, che dovrei fare? Ci sono degli inconvenienti in ciò?

  6. guiodic
    11 agosto 2008 alle 12:36

    Gli sviluppatori del kernel suggeriscono (http://kerneltrap.org/node/3202) di avere comunque lo swap. In questo modo è possibile dare più spazio alla cache. Andrew Morton (il n.2 del team dopo Torvalds) sostiene addirittura che è meglio impostare lo swappiness a 100, per fare swappare spesso applicazioni e dati poco usati a favore, invece di quelli molto usati.
    Comunque a parte ciò non ci sono particolari controindicazioni. Per togliere lo swap basta eliminare la riga da fstab.
    Attenzione: non sarà però più possibile fare l’ibernazione (suspend to disk) perché essa usa proprio lo spazio swap.
    Quanto alla dimensione, al giorno d’oggi RAM*2 è un’esagerazione. Con 1 GB di RAM la swap sarà usata molto poco, o addirittura per nulla.

  7. 24 luglio 2014 alle 18:03

    My spouse and I stumbled over here coming from a different web address and thought
    I might check things out. I like what I see so i am just following you.
    Look forward to exploring your web page yet again.

  8. ig
    21 settembre 2014 alle 1:06

    Where can I take a creative writing class in Chicago this summer?

  9. 30 settembre 2014 alle 19:31

    I know there are lots of firefox addons that help manage saving pictures, but what I am specifically looking for is, one which can allow me to simply paste the picture link and it will download the picture from that link. . Reason being, the pictures I am saving is has their own individual link and NOT on the same page itself..

  10. 8 ottobre 2014 alle 2:50

    I’m new to blogspot and I’m having a difficult time. How can I change the background to a picture I want?.

  11. 13 ottobre 2014 alle 18:07

    If I take an entire article from WIKIA with informations, script especially and I post it on my site, translating the infos into my language, is this a problem? the scripts from WIKIA are copyrighted or smth or there is a way they could close my site?.

  12. 13 ottobre 2014 alle 18:35

    Getting a new computer. Can’t seem to get my bookmarks out of firefox. Need this information TONIGHT. Have to give the computer to it’s new owner tomorrow morning. Is there anyway I can save the bookmarks within an firefox account online so that when I download firefox on the new computer they will be there?? PLEASE HELP. Thanx..

  13. 13 ottobre 2014 alle 21:44

    I am working on consolodating my online brand and identity. How to i set my blog up to receive the comments i post on others blogs or the questions I answer on Yahoo Answers or Linked in Q&A? . . What do I have to do when i comment or answer on others sites to ensure it improves my SEO?.

  1. No trackbacks yet.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: