Guest User

appunti kernel

a guest
Sep 9th, 2012
46
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ==========================
  2. File system
  3. ==========================
  4. Il kernel 2.6 supporta 40 tipi di filesystem, per far fronte alle necessità di utenti di piattaforme diverse. Un file
  5. non è altro che un punto di accesso a dati che possono trovarsi su un disco locale o in rete. Generalizzando
  6. il concetto addirittura tutto è un file su Linux: i dati, le cartelle, i dispositivi fisici o il meccanismo di
  7. comunicazione tra processi. Il kernel accede i file per mezzo di un'unica interfaccia, il filesystem virtuale
  8. (VFS).
  9. Il VFS è uno strato software che consente di rappresentare tutti i file di un sistema tramite una
  10. rappresentazione ad albero gerarchica. I processi utente possono accedere ad un file senza sapere dove e
  11. in quale filesystem tale file sia memorizzato.
  12. Le richieste di accesso come read, write e open vengono inviate al filesystem virtuale che determina il
  13. filesystem reale corrispondente ed esegue l'operazione grazie al driver specifico.
  14. La posizione di ciascun file è descritta da un attributo chiamato inode e il VFS consente di associare a ogni
  15. inode differenti nomi di file.
  16. Per migliorare le prestazioni di accesso a file e directory, il sistema mantiene due cache relative alle directory
  17. e agli inode referenziate di recente.
  18.  
  19. ==========================
  20. I/O
  21. ==========================
  22. I vari dispositivi di un sistema possono essere raggruppati in classi in base alle funzioni eseguite, in questo
  23. modo il kernel è in grado di considerare le necessità delle diverse classi di dispositivi al fine di migliorarne le
  24. prestazioni.
  25. In particolare possiamo distinguere i dispositivi a caratteri e i dispositivi a blocchi.
  26. Un dispositivo a caratteri trasmette i dati come un “flusso” di byte, in modo sequenziale. Ne sono un esempio
  27. stampanti, mouse, tastiere e modem. Le operazioni base del dispositivo (apertura, lettura, scrittura, chiusura)
  28. vengono implementate dai driver. I dispositivi sono rappresentati da una struttura che contiene il nome del
  29. driver e le operazioni consentite. Quando un dispositivo viene inizializzato, il driver deve registrare tali
  30. operazioni nel VFS. Quando una chiamata di sistema accede al file di un dispositivo, il VFS si occupa di
  31. invocare l'operazione appropriata.
  32. I dati di un dispositivo a blocchi sono invece organizzati in blocchi di byte di dimensione fissa,
  33. consentendone quindi l'accesso casuale (non sequenziale). A tale scopo, la gestione dell'I/O risulta più
  34. sofisticata che sui dispositivi a caratteri, utilizzando strategie di caching e raggruppamento delle operazioni
  35. per ottimizzare le performance. Quando un processo richiede dei dati da un dispositivo a blocchi il kernel
  36. cerca i blocchi richiesti nella cache e li trasferisce nello spazio virtuale dell'utente se li trova. Per le
  37. operazioni di scrittura invece viene utilizzata una cache di operazioni pendenti che verrà processata
  38. seguendo il meccanismo di scheduling del disco.
  39.  
  40. ==========================
  41. Comunicazione tra processi
  42. ==========================
  43. Linux eredita i meccanismi di comunicazione tra processi di UNIX. Lo scopo di tali meccanismi è quello di
  44. permettere ai processi lo scambio di informazioni. Esistono diversi metodi per consentire tale scambio di
  45. informazioni ma alcuni risultano più adatti di altri in determinate situazioni:
  46. Segnali: sono uno dei primi meccanismi disponibili su unix e non consentono di scambiare più di una
  47. parola di dati alla volta. Solitamente vengono utilizzati per notificare a un processo il verificarsi di un
  48. determinato evento. Sebbene i segnali effettivamente supportati dipendano dall'architettura del
  49. processore, tutte le moderne architetture supportano l'insieme di segnali specificati dallo standard
  50. POSIX.
  51. Un processo può ignorare un segnale (tranne SIGSTOP e SIGKILL responsabili dell'arresto e della
  52. terminazione di un processo), “catturarlo” (cioè invocare un proprio gestore relativo a quel segnale)
  53. oppure eseguire un'azione di default definita dal kernel per quel segnale.
  54. Pipe: una pipe consente a due processi di comunicare secondo uno schema
  55. produttore/consumatore. Il produttore scrive i dati nella pipe e il processo consumatore li legge
  56. nell'ordine in cui li ha ricevuti (politica FIFO: First In First Out). Quando viene creata una pipe, le
  57. viene assegnato un inode e due descrittori d'accesso: uno in scrittura, l'altro in lettura. In questo
  58. modo è possibile accedere alla pipe come ad un file utilizzando il VFS.
  59. Socket: è un meccanismo di comunicazione diretta tra processi su un canale bidirezionale,
  60. superando la comunicazione unidirezionale delle pipe. Tuttavia la maggior flessibilità ha un costo in
  61. termini di prestazioni.
  62. Messaggi: un messaggio è un'informazione composta da un tipo di messaggio e da un'area di
  63. lunghezza variabile per i dati. Sono organizzati in code accessibili grazie a specifici descrittori.
  64. Quando un messaggio viene aggiunto alla coda, il kernel cerca un processo in attesa di un
  65. messaggio di quel tipo, se ne trova inoltra il messaggio ad ognuno di loro.
  66. Memoria condivisa: una volta stabilita una regione di memoria condivisa, il vantaggio rispetto alle
  67. altre forme di IPC è che l'accesso è regolato nello spazio utente e non è necessario l'intervento del
  68. kernel. Questo migliora le prestazioni di processi che richiedono accessi frequenti ed elimina i tempi
  69. di attesa quando i processi lavorano a velocità differenti.
  70. Semafori: come il nome lascia intuire, si tratta di un meccanismo per gestire la sincronizzazione,
  71. proteggendo le sezioni critiche in caso di accesso alla stessa risorsa da parte di più processi.
  72.  
  73. ==========================
  74. Sottosistema di rete
  75. ==========================
  76. Si occupa di eseguire operazioni sui pacchetti durante l'attraversamento dei vari strati dei protocolli di rete.
  77. Quando una scheda di rete riceve un pacchetto, lo copia in un buffer e lo aggiunge alla coda dei pacchetti in
  78. attesa di elaborazione. Per l'elaborazione il pacchetto viene rimosso dalla coda e passato al gestore del
  79. protocollo appropriato. In particolare ci riferiamo al protocollo IP dal momento che altri protocolli sono
  80. raramente usati seppur supportati. Il gestore del protocollo IP ne determina la destinazione : se il pacchetto è
  81. destinato ad un altra macchina lo inoltra, se è destinato alla macchina locale lo passa al gestore appropriato
  82. tra TCP, UDP o ICMP che a sua volta si occupa di consegnare il pacchetto alla porta specificata. Infine i dati
  83. sono trasmessi al processo destinatario tramite il socket collegato alla porta.
RAW Paste Data