Home Tecnica Amministrazione di Sistema Accesso alla memoria nello spazio utente dal kernel Linux

In evidenza

SMAU a Bologna con Research to Business

SMAU a Bologna con Research to Business

Il 6 e 7 giugno il Roadshow Smau Business torna a far tappa al Padiglione 33 della Fiera di Bologna e...
Gli articolisti del Portale

Gli articolisti del Portale

Abbiamo deciso di dare più visibilità a tutti coloro che hanno pubblicato articoli per noi, questo perché...
SMAU festeggia il suo quinto anno nel NordEst a Padova

SMAU festeggia il suo quinto anno nel NordEst a Padova

Il 18 e 19 aprile al padiglione 5 di Padova Fiere si terrà la prossima tappa di SMAU Business Roadshow. All'evento...
SMAU risale l’Italia e arriva a Roma

SMAU risale l’Italia e arriva a Roma

Il 21 e 22 marzo nella Nuova Fiera di Roma si terrà la prossima tappa di SMAU Business Roadshow. L'evento...

Bandi di Concorso

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Avviso per incarico ad ingegnere informatico alla Provincia di Bergamo

Nell'ambito del progetto denominato "SOS badanti: la rete provinciale di sportelli per assistenti e collaboratori familiari” nell'ambito del programma "SAP - Servizi alla Persona" è stato pubblicato la Provincia di Bergamo ha pubblicato l'avviso per il reclutamento di una unità per incarico di...

21 Mag 2012 - Letture:1

Esperto di servizi e tecnologie cloud al Digit PA

Procedura comparativa per il conferimento di un incarico di collaborazione coordinata e continuativa per un profilo senior di “Esperto di servizi e tecnologie cloud”, nell’ambito del progetto europeo “Open Dai” presso l' Ente nazionale per la digitalizzazione della Pubblica Amministrazione...

18 Apr 2012 - Letture:34

Selezione per addetto servizi informatici all'Autorità Portuale di Brindisi

Avviso di selezione pubblica per titoli e prova orale per l’assunzione di n. 1 “addetto ai servizi informatici”, a tempo pieno ed determinato triennale, previo periodo di prova, da inquadrare nell’Area Amministrativa. (Inquadramento al III Livello del C.C.N.L. dei Lavoratori...

12 Feb 2012 - Letture:435

Concorso pubblico per informatico alla Corte dei Conti

E' indetto un concorso pubblico, per   esami,   per   il reclutamento di tre unità di informatici da inquadrare nella III area, fascia retributiva F1, da destinare agli Uffici della Corte dei Conti con sede in Roma. Requisiti: laurea triennale in scienze e...

05 Feb 2012 - Letture:306

Istruttore informatico L.68/1999 al Comune di Potenza

Concorso pubblico, per esami, per la copertura di n. 2 posti di Istruttore Informatico, categoria C, posizione economica C1, a tempo pieno e indeterminato, con riserva assoluta alle categorie dilavoratori di cui all'art. 1 della legge n. 68/1999 (norme per...

21 Gen 2012 - Letture:244

Senior Business Consultant presso Lombardia Informatica

Selezione per figura Senior Business Consultant presso Lombardia Informatica. Il collaboratore dovrà fornire consulenza strategica e di business sulle tematiche verticali della Socio-Sanità. Requisiti di ammissione: Laurea in Ingegneria, Economia e Commercio o Scienze dell’Informazione; Percorsi di formazione professionale in ambito sanitario e socio-sanitario, su...

11 Gen 2012 - Letture:284

Bando progetto TAG (Toscana Area Giovani) per giovani talenti digitali

UPI Toscana ha indetto un avviso pubblico per la selezione di 20 giovani (2 per ciascuna delle 10 province della Toscana), da impiegare come formatori all'interno del Progetto TAG (Toscana Area Giovani). Il bando è finalizzato a valorizzare al meglio i...

03 Gen 2012 - Letture:271

I più attivi

Dati e punteggi dell'ultimo anno

Giovanna Casamassima Giovanna Casamassima
47 articoli
16,500 punti totali
Rodolfo Giometti Rodolfo Giometti
49 articoli
5,152 punti totali
Vittorio D'Aversa Vittorio D'Aversa
33 articoli
3,444 punti totali
Fulvio Lucchetti Fulvio Lucchetti
9 articoli
0,279 punti totali
Luigi Carbone Luigi Carbone
10 articoli
0,262 punti totali

Ci hanno visitato

Oggi:1172
Ieri:2110
Totali (14/04/09):1170347

I nostri numeri

Articoli pubblicati: 552
Iscritti al portale: 768
Iscritti all'Elenco: 184
Iscritti ML Discussioni: 351
Iscritti ML Articoli: 30
Iscritti ML Lavoro: 166
 

Git in Eclipse

Chi mi conosce sa la mia avversione (del tutto personale, ci tengo a sottolinear...

Sabayon Linux 5.4 (32 e 64 bit)

E' stata rilasciata online la nuova versione 5.4 di Sabayon Linux, una tra ...

Virtualizzazione di Windows XP o altri SO su Ubuntu con Qemu

I pc odierni sono sempre più potenti e molto spesso sotto sfruttati, la virtua...

Programmare in C sull'N900

In questo articolo vedremo come sia semplice programmare in C sull'N900. In part...

(in)sicurezza informatica

L'incremento nell'uso del computer ha portato con se una diversa concezione di s...

Come ti controllo i tassi di interesse con Linux

In questi giorni sto cercando di fare una surruga per il mutuo di casa mia. Tra ...

Come creare un NFS server ridondante

Quelli che mi conoscono sanno che il mio ambito lavorativo è nei sistemi embedde...

Maemo extras: ancora più applicazioni per l'N900

Finalmente, grazie a Nokia, abbiamo a disposizione un esemplare dell'N900 su c...

Odroid: la piattaforma di gioco libera

Si chiama Odroid ed e basata su Android, è la prima piattaforma di gioco interam...

Installare Linux su una USB key: ecco come!

L’installazione  e l'avvio di una distribuzione Linux Live da un supporto U...

Cluster VMWARE

In questo articolo vediamo come realizzare un cluster di macchine virtuali con u...

Backup mail server: quando il mail server non è raggiungibile

Se avete il mail server in proprio potrebbe succedere che questo non sia raggiun...

Il NAS D-Link DNS-343

Grazie alla D-Link azienda produttrice di apparecchiature di rete e non solo v...

Il settore danneggiato e l'acquisizione forense

Se si deve acquisire un hard disk in maniera forense, ossia con tutti i crismi n...

ettercap: il man-in-the-middle facile

Troppo spesso mi rendo conto che molti considerano la rete aziendale o quella ...

Google +1: il «nemico» del «mi piace» di Facebook

Il tanto atteso nemico del "mi piace" targato Facebook è arrivato, il colosso de...

Geexbox: la mini distro MediaCenter Linux

Geexbox è un piccolo ma potente sistema operativo orientato alla riproduzione di...

Multi puntatore su Ubuntu 10.4: ecco come

Tempo fa ebbi modo di dare un'occhiata al progetto MPX per un cliente. La cosa n...

Anomalie di partizionamento hard disk: un esperienza personale

Nonostante le decine di installazioni delle varie distribuzioni Linux eseguite s...

Il telefono… la tua voce!

Era lo slogan pubblicitario della Telecom di un po’ di anni fa. Certo, al concet...

Boxee Box: la TV facile di D-Link

Grazie alla D-Link possiamo presentare un nuovo gioiello della tecnologia: il me...

Gobby: l'editor collaborativo

Quante volte vi sarà capitato di dover dire come modificare un file di testo ad ...

"Impronte digitali" anche per le macchine fotografiche

Da www.hwupgrade.it: Una ricerca della Binghamton University ha messo a punto u...

WODE, l'emulatore DVD per la Wii

Qualche giorno fa mi è capitato di sfidare mio cognato ad una partitella a tenni...

SUN Wiki Publisher: scrivere facilmente su Wikipedia

Personalmente uso parecchio Mediawiki (il motore di Wikipedia); lo ritengo un ot...

Intervista esclusiva a Mageia Linux

La Presidente dell'Associazione MAGEIA.ORG, Anne Nicolas, in questa intervi...

AccessPoint: la scelta ottimale del canale di trasmissione

Realizzare una rete Wireless outdoor (ma anche indoor) pone il problema della sc...

Controllare MAME con Wiimote su N900!

Ecco un'altra dimostrazione delle potenzialità di questo telefono (se vogliamo c...

I-Memo: le password personali sempre con te

Prodotto dalla MensTecnica, una giovane azienda della Basilicata fondata nel 200...

Universal USB Installer 1.8.04 e Ubuntu Linux 10.10

Rilasciata il 10.10(.2010) la nuova versione di Ubuntu Linux (la data corrispond...

SL4A e il drone parla più lingue

Chi come me non ama Java si sentirà a disagio volendo programmare una qualsiasi ...

Snom 870: il telefono con Linux

Definirlo solo telefono è sicuramente riduttivo, infatti lo Snom 870 è sicuramen...

Android-x86: quando il drone sbarca sui PC

Chi pensa che Andoird abbia vita bere farà bene a ricredersi perché, oltre alle ...

XMount finalmente liberi di virtualizzare!

Cosa succede dopo che abbiamo acquisito un disco in bitstream su file immagine? ...

Boot from SAN

Intendiamoci, non è l’ultima briciola tecnologica caduta da un banchetto alla NA...

Lion desktop: finalmente una distribuzione mirata alle aziende!

Chi è abituato a lavorare con Linux, ed in particolare ha provato a lavorare con...

Perché cross compilare quando si può compilare nativamente?

Lavorando con architetture diverse mi trovo spesso a dover utilzzare uno stesso ...

Multistrap: come ti creo un rootfs Debian dal nulla

Una volta c'era debootstrap, un tool fantastico che permetteva di creare un root...

Implementare una LIM con Linux

Come promesso rieccomi qui per illustrare come realizzare una LIM (che ricordo s...

Kameleon: oltre i limiti della virtualizzazione

Negli ultimi anni la potenza dei computer e la loro capacità è aumentata in modo...

Rete lenta? Vediamo chi consuma...

Molte volte capita di trovarsi la rete molto lenta e magari non abbiamo a dispos...

OpenWRT: la distribuzione piccola e versatile

In queste ultime settimane ho avuto modo di vedere da vicino OpenWRT, una distri...

Sicurezza informatica: safety, dependability, security

La sempre maggiore diffusione delle tecnologie ha profondamente rivoluzionato la...

Autenticarsi con la pen drive

La pen drive è ormai diventata come il cellulare, impossibile non averla, ma sie...

Mageia 1 alpha1 è tra noi

Finalmente è stata rilasciata la tanto attesa versione alpha1 principalmente riv...

Linutop OS 4.0: Internet, Chiosco Multimediale e non solo!

Presentata negli ultimi giorni nella capitale francese la nuova distribuzione LI...

Come saltare il proxy «blocca-tutto» aziendale

Mi capita spesso, ma non sempre, di andare da dei miei clienti e non potermi con...

Generare un file pieno di 0xff

Per generare in file da 16Kbyte pieno di zeri su di un sistema UNIX/GNU-Linux si...

Socat: quando i dati passano via rete

Lavorando coi sistemi embedded molte volte mi capita di dovermi arrangiare su di...

Nvidia 295.33, ecco i nuovi driver per linux versione 3.3

L'annuncio è di qualche giorno fa, Nvidia rilascia i nuovi driver 295.33 con sup...

busybox & Android: la command line facile

Nei precedenti articoli abbiamo visto due tecniche per aggiungere nuovi programm...

I dati e le loro anomalie nascoste

La motivazione per questo articolo nasce dalla crescente problematica di gestion...

Cloud Money

Discorrendo con un collega di cloud computing, si è finito, come al solito, a pa...

Sviluppare codice per Arduino dalla command line

Arduino Uno è un micro controllore basato su CPU ATmega328; si alimenta via alim...

Openembedded: la distribuzione «ristretta» per Linux

Quando le risorse di un sistema sono limitate non è possibile usare una distribu...

PyGTK su N900

Come programmatore avere un cellulare che in pratica è un computer (oramai il 10...

Tenere i servizi sotto controllo con Monit

In questi giorni mi è capitato di dover risolvere un problema per un mio cliente...

Server Linux: tutti i trucchi per farlo al meglio

Volete fare un server Linux per la vostra impresa, ufficio o semplicemente per c...

Android: se non hai il telefono usa l'emulatore!

In questi giorni sto valutando di comprare un cellulare basato su Linux. Inizial...

GNU readline: un tool indispensabile per la linea di comando

Chiunque di voi abbia avuto a che fare con la linea di comando avrà senz'altro a...

Accesso alla memoria nello spazio utente dal kernel Linux Stampa E-mail
(0 voti, media 0 di 5)
Area Tecnica - Amministrazione di Sistema
Scritto da Marco Ferrigno   
Martedì 19 Luglio 2011 15:21
Articolo letto 152 volte

Il titolo lo cambierei in: «La gestione della memoria in Linux»

In Linux la memoria utente e la memoria del kernel sono indipendenti e allocate in spazi di indirizzamento separati. Gli indirizzi degli spazi sono virtualizzati, il che significa che essi sono astratti dalla memoria fisica.

Il kernel risiede in uno spazio di indirizzamento proprio, così come ogni processo. Questi spazi costituiti da indirizzi di memoria virtuale, permettono l'allocazione di molti processi anche in uno spazio fisico di dimensione notevolmente inferiore al valore reale (indicato dalla memoria fisica della macchina). Tale meccanismo non è solo conveniente, ma è anche sicuro, in quanto ogni spazio di indirizzamento è indipendente e isolato.

Ma c'è un costo associato a questa sicurezza. Poiché singoli processi (e il kernel) possono avere indirizzi identici - che si riferiscono alle diverse regioni di memoria fisica precedentemente indicate con un indirizzo virtuale - non è immediatamente possibile avviare la condivisione della memoria fisica stessa. Fortunatamente esistono alcune soluzioni.

I processi utente possono condividere la memoria fisica attraverso il meccanismo shmem POSIX (SHared MEMory for Portable Operating System Interface for UNIX), con l'avvertenza che ogni processo può avere un diverso indirizzo virtuale che si riferisce alla stessa regione di memoria fisica.

La mappatura della memoria virtuale verso la memoria fisica avviene attraverso tabelle di paginazione, che sono implementate nel hardware sottostante. E' lo stesso hardware che fornisce la mappatura ma è il kernel che ne gestisce le tabelle e la loro configurazione. Si noti che un processo può avere un grande spazio di indirizzamento fisico ma il suo indirizzo può essere virtualizzato e allocato in piccole regioni (pagine) dello spazio di memoria. Questo permette ad un processo di avere un grande spazio di indirizzamento che è definito solo per le pagine che sono necessarie in un dato momento.

In un meccanismo del genere si prevede che la memoria fisica sottostante sia fin troppo impegnata. Attraverso un processo chiamato di paging (anche se in Linux è preferibile chiamarlo swapping), le pagine meno utilizzate sono spostate in modo dinamico verso un dispositivo di archiviazione più lento (come un disco) per ospitare altre pagine che devono essere immediatamente accessibili (vedi Figura 1). Dalla figura non credo si capisca quello che vuoi dire...

Questo comportamento permette alla memoria fisica di fornire un set di pagine all'applicazione che in quel momento ne fa richiesta.

Figura 1:

image001

Il processo attraverso il quale viene selezionata una pagina di scambio è definito algoritmo della sostituzione di pagina e può essere implementato usando un certo numero di funzioni. Questo processo può azionarsi quando una posizione di memoria viene richiesta ma essa non è disponibile in quanto non presente nella memoria corrente (senza mappatura è presente nelle unità di gestione della memoria - memory management unit [MMU]). Quest'ultimo evento viene chiamato page fault e viene rilevato dal hardware e poi gestito dal firmware dopo un interrupt. Vedi figura 2 per un esempio. Anche questa figura non spiega quello che vuoi dire

Linux fornisce un'implementazione interessante circa lo swap che offre alcune utili caratteristiche.

Il sistema permette la creazione e l'utilizzo delle partizioni di swap multiple definendone la priorità, ciò permette di creare una gerarchia su dispositivi di storage che offrono prestazioni diverse.

Allegare la priorità più alta per lo swap su SSD, ad esempio, permette di utilizzata quella risorsa fino ad esaurimento, solo allora sarà possibile scrivere altre pagine di memoria su dispositivi diversi con una priorità inferiore (quindi più lenti). UN esempio su come si fa questa cosa? :)

Figura 2:

image002

Non tutte le pagine sono candidate per lo swapping. Ci sono pagine che non dovrebbe mai essere sostituite e che sono riposte permanentemente in memoria come ad esempio gli algoritimi di gestione delle interruzioni, il codice per la gestione delle tabelle di paginazione e della logica di swap. Non solo, ci sono anche gli spazi di iomem...

Le pagine in user space sono delle valide candidate allo swapping ma possono essere bloccate attraverso una funzione mlock (o mlockall ). Questo è lo scopo delle funzioni presenti nello spazio utente. Perché? Quando vanno usate?

Se invece il kernel rileva un indirizzo che in un precedente indirizzamento era valido e accessibile, genera un kernel panic, perchè ad esempio la pagina utente è stata scambiata, per un errore, con una pagina nel kernel. Questa frase non l'ho capita...

Ora, proviamo ad esplorare le API del kernel per la manipolazione della memoria utente. Manipolazione???

  • access_ok - Controlla la validità del puntatore di memoria in user space
  • get_user - Ottiene una semplice variabile dallo spazio utente
  • put_user - Mette una semplice variabile nello spazio utente
  • clear_user - Cancella, o porta al valore zero, un blocco nello spazio utente
  • copy_to_user - Copia un blocco di dati dal kernel allo spazio utente
  • copy_from_user - Copia un blocco di dati dallo user space al kernel
  • strnlen_user - Ottiene la dimensione di un buffer di stringhe nello spazio utente
  • strncpy_from_user - Copia una stringa dallo spazio utente nel kernel

Per le architetture x86, è possibile trovare queste funzioni e i simboli definiti in ./linux/arch/x86/include/asm/uaccess.h, con sorgente in ./linux/arch/x86/lib/usercopy_32.c e usercopy_64.c.

Linux fornisce una serie di altri metodi che è possibile utilizzare per il movimento dei dati sia in kernel che in user space. Anche se questi metodi non possono necessariamente fornire funzionalità identiche, come descritto dalle funzioni di spazio utente, sono simili nella loro capacità di mappare la memoria tra gli spazi di indirizzamento. CHe vuol dire???

Rilevante è il compito della funzione mmap che consente ad una applicazione in user space di creare una mappatura nello spazio degli indirizzi virtuali. Questa funzionalità è comune in alcuni driver di periferica in quanto permette la mappatura del dispositivo fisico da associare ad uno spazio di indirizzi virtuali. Che vuol dire???

All'interno di un driver, la funzione mmap è implementata attraverso la funzione del kernel remap_pfn_range, che fornisce una mappatura lineare di memoria del dispositivo nello spazio l'indirizzo di un utente. Per fare cosa?

Ti consiglio di dire meno cose e di dirle meglio: riordinare, spiegare perché vanno suate  e fornire esempi di utilizzo delle funzioni di cui parli è il minimo...

 
 

In primo piano

Simons Voss: un mondo senza chiavi

Simons Voss: un mondo senza chiavi

Il sistema di gestione e di controllo degli accessi 3060 si presenta come un’alternativa con enormi vantaggi...
Pubblicità mirata dei prodotti

Pubblicità mirata dei prodotti

Hai un prodotto o un servizio da pubblicizzare? Fallo su consulenti-ict.it! Pubblicizzare un prodotto...
Recensioni sul Portale

Recensioni sul Portale

Hai un prodotto hardware/software o un libro riguardante uno dei temi dell'ICT? Vuoi farlo conoscere...

Offerte di lavoro

Visualizza Topic »

Eventi

Non ci sono eventi in programma
Maggio 2012
D L M M G V S
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
Giugno 2012
D L M M G V S
27 28 29 30 31 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Sondaggi

busyCaricamento Sondaggio...