SlideShare a Scribd company logo
1 of 26
Download to read offline
#LINUX DAY NAPOLI 2011

      Understanding Linux:
20 anni di kernel tra storia e tecnica
          A CURA DI MARCO FERRIGNO

     - Security & system independent researcher -
- Developer of the Italian Debian GNU/Linux HOWTOs -

               gplus.to/marko.ferrigno
                    #all_contacts
root@host:/# intro

PROPEDEUTICITA':
   NOZIONI BASILARI SULLE ARCHITETTURE DI ELABORAZIONE,
   NOZIONI BASILARI SULL'UTILIZZO DEI SISTEMI OPERATIVI,
   CURIOSITA' E SPIRITO DI INIZIATIVA.


COSA IMPAREREMO DA QUESTO TALK:
   COS'E' UN KERNEL,
   IL KERNEL LINUX: STORIA,
   IL KERNEL LINUX: TECNICA,
   IL KERNEL LINUX IN PRATICA,
   … ALTRE AMENITA' NERD' ORIENTED
Kernel: cos'è realmente?

E' IL SOFTWARE IL CUI COMPITO E' QUELLO DI FORNIRE AI PROCESSI IN
ESECUZIONE SULL'ELABORATORE UN ACCESSO SICURO E CONTROLLATO
ALL'HARDWARE.

PRINCIPALI MANSIONI:
   GESTIONE DELLA PORZIONE TEMPO-MACCHINA,
   GESTIONE DELLE ASTRAZIONI.



I KERNEL SI CLASSIFICANO IN QUATTRO CATEGORIE:
    MONOLITICI
    MICROKERNEL
    IBRIDI
    ESOKERNEL
Differenze tra kernel

KERNEL MONOLITICI
(UNIX->*.BSD, LINUX )
INTEGRAZIONE DEL CODICE STRETTA

MICROKERNEL
(MACH, MINIX, QNX)
SEPARAZIONE SERVIZI BASE DA STRUTTRA
OPERATIVA
Differenze tra kernel

  IBRIDI
 (WINDOWS, XNU, DRAGONFLY, QUARK)
CODICE NON ESSENZIALE A LIVELLO KS

  ESOKERNEL
 (NEMESIS)
”POTERE ALLO SVILUPPATORE”
Kernel Linux: le origini

"I’m doing a (free) operating system (just a hobby, won’t be big and professional
like gnu) for 386(486) AT clones."
- Linus Torvads 26 agosto 1991 8:12 am - camp.os.minix
HA INIZIO UNA STORIA RICCA DI CONTRIBUTI DA PARTE DI UTENTI DI TUTTO IL
MONDO CHE COMUNICAVANO ESCLUSIVAMENTE TRAMITE INTERNET.


TRA LA NASCITA E LO STATO DELL'ARTE:
   LA ”GUERRA” LINUS TORVALDS VS ANDREW TANENBAUM
   LINUX 1.0 - 14 MARZO 1994




   LINUX 3.0 - 21 LUGLIO 2011
Kernel Linux: stato dell'arte
LINUX 3.0: PRINCIPALI MIGLIORAMENTI
        BTRFS: DEFRAMMENTAZIONE AUTOMATICA, SCRUBBING , PRESTAZIONI
        AMPIAMENTO DEL PARCO DRIVER E DELLE ARCHITETTURE
        > SCALABILITA' DEL VFS
        PROCESS SCHEDULER++
        GESTIONE DELLA MEMORIA++
        NETWORKING → IPSET: SCTP, UDPLITE
        FILE SYSTEM → EXT4 ”PUNCH HOLE”, CIFS WINDOWS 2008 DFS, XFS++
        CRYPTO → FREESCALE SEC4/CAAM, SHA1/256 VIA NANO, S5PV210
        VIRTUALIZZAZIONE → USER MODE++, XEN BLKBACK
        SICUREZZA → SELINUX MOUNT POINT /sys/fs/selinux
        ALTRE MODIFICHE → ULIMIT, KBUILD, HIBERNATE, POSIX-TIMER,
        COREDUMP
NB: (++) == miglioramento rispetto alla release precedente


                                                             FACCIAMO UN PASSO INDIETRO ...
Kernel Linux: melting pot
IL ”SISTEMA” LINUX:

 CODICE EX NOVO            KERNEL LINUX

 GESTIONE DEI SERVIZI DI RETE           4.3BSD

 VARI FRAMMENTI DI CODICE           X WINDOWS

 GNU        PRINCIPALI LIBRERIE DI SISTEMA, GCC


FILE SYSTEM HIERARCHY STANDARD:
DOCUMENTO CHE STABILISCE SOTTO QUALI NOMI DI DIRECTORY I FILE DI
CONFIGURAZIONE, LE LIBRERIE, I FILE ESEGUIBILI DI SISTEMA E I FILE DI DATI
DOVREBBERO ESSERE ARCHIVIATI

DISTRIBUZIONI E PACKAGES MANAGERS:
DA SOFTLANDING LINUX SYSTEM (AGOSTO 1992) A SABAYON …
…. PASSANDO PER SLACKWARE, DEBIAN, RED HAT
Kernel Linux: licenze


I TERMINI DELLA GNU GENERAL PUBLIC LICENSE (GPL) SONO STATI STABILITI
DALLA FREE SOFTWARE FOUNDATION.
IL SISTEMA LINUX E' LIBERO NEL SENSO CHE SI PUO' COPIARE, MODIFICARE E
USARE IN QUALUNQUE MODO SI DESIDERI E SI PUO' FAR CIRCOLARE SENZA
ALCUNA LIMITAZIONE.

CHIUNQUE LO USI O CREI UN PRODOTTO DA ESSO DERIVATO NON PUO'
RECLAMARE DIRITTI DI PROPRIETA' SUL PRODOTTO.

ALL'ATTO DELLA DISTRIBUZIONE SI DEVE RENDERE DISPONIBILE IL CODICE
SORGENTE E CIO' VALE PER OGNI COMPONENTE DI UN PACCHETTO DI
DISTRIBUZIONE CHE SIA OGGETTO DELLA GPL.
CIO' NON EVITA LA DIFFUSIONE GRATUITA O LA VENDITA DI VERSIONI
PURAMENTE BINARIE, PURCHE' CHIUNQUE RICEVA I FILE ESEGUIBILI ABBIA LA
POSSIBILITA' DI OTTENERE IL CODICE SORGENTE AD UN PREZZO
RAGIONEVOLE
Kernel Linux: moduli & driver
TORNANDO ALLA TECNICA … COS'E' UN MODULO?

E' UN COMPONENTE SOFTWARE CHE PUÒ SVOLGERE DIVERSE FUNZIONI

VANTAGGI:
 PUÒ ESSERE COMPILATO SEPARATAMENTE ED ESSERE CARICATO IN UN
 KERNEL GIA' IN USO.
 ALTA PERSONALIZZAZIONE
 DISTRIBUZIONE GRATUITA E LIBERA

I DRIVER IN UN SISTEMA LINUX:

IL KERNEL POSSIEDE DELLE TABELLE DINAMICHE DI TUTTI I DRIVER NOTI E
FORNISCE UN INSIEME DI PROCEDURE CHE PERMETTONO DI AGGIUNGERE O
RIMUOVERE UN DRIVER DA QUESTE TABELLE IN QUALUNQUE MOMENTO

MODULI & DRIVER:

UN MODULO PUO' REGISTRARE MOLTI TIPI DI DRIVER; UN CERTO MODULO PUO'
SCEGLIERE FRA QUESTI E, SE LO DESIDERA, REGISTRARE PIU' DI UN DRIVER.
UN CERTO DRIVER POTREBBE VOLER REGISTRARE DUE MECCANISMI DISTINTI
PER L'ACCESSO AD UN DISPOSITIVO.
Kernel Linux: gestione dei
                 processi
MODELLO UNIX: CREAZIONE - FORK() - ED ESECUZIONE - EXEC() - DEI
PROGRAMMI.

IDENTITA' DEI PROCESSI:

 IDENTIFICATORE (PROCESS IDENTIFIER - PID)
 CREDENZIALI UTENTE
 PERSONALITA' DELLA SEMANTICA (LINUX)

CONTESTO DI UN PROCESSO:

 CONTESTO DI SCHEDULING
 CONTABILIZZAZIONE DELLE RISORSE
 TABELLA DEI FILES
 CONTESTO DEL FILE SYSTEM
 TABELLA DEI GESTORI DEI SEGNALI
 CONTESTO DELLA MEMORIA VIRTUALE

LA CHIAMATA CLONE() E IL CONCETTO DI TASK
Kernel Linux: scheduling
LO SCHEDULING CONSISTE NELL'ALLOCAZIONE DEL TEMPO DI CPU AI DIVERSI
TASK ALL'INTERNO DI UN SISTEMA OPERATIVO.

UN ASPETTO IMPORTANTE DELLO SCHEDULING NEL SISTEMA LINUX È
L'ESECUZIONE DEI VARI TASK DEL KERNEL:
  TASK RICHIESTI DA UN PROCESSO IN ESECUZIONE
  TASK INTERNI ESEGUITI PER CONTO DI UN DRIVER DI DISPOSITIVO.

2 DISTINTI ALGORITMI DI SCHEDULING
(CON PRELAZIONE E BASATO SULLE PRIORITA'):
  ALGORITMO A PARTIZIONE DEL TEMPO
  ALGORITMO DI REAL TIME (SOFT)

SINCRONIZZAZIONE KERNEL:
 PRELAZIONE VS SPINLOCK

MULTIELABORAZIONE SIMMETRICA (SMP):
 SPINLOCK
 BIG KERNEL LOCK (BKL)
 LOCK MULTIPLI E ALGORITIMI DI BILANCIAMENTO DEL CARICO
Kernel Linux: gestione della memoria

 ALLOCAZIONE E RILASCIO DI PAGINE E BLOCCHI DI MEMORIA
 MEMORIA VIRTUALE

GESTIONE DELLA MEMORIA FISICA:
ZONA                 MEMORIA FISICA
ZONE_DMA             <16 MB
ZONE_NORMAL          16 MB <X< 896 MB
ZONE_HIGHMEM         >896 MB
SISTEMI DI ALLOCAZIONE: BUDDY, KMALLOC(), SLAB

GESTIONE DELLA MEMORIA VIRTUALE:
SPAZIO DI INDIRIZZI VISIBILE A OGNI PROCESSO
(NATURA LOGICA VS NATURA FISICA)

ASPETTI DA VALUTARE:
 DURATA DI UNO SPAZIO DI INDIRIZZI
 PAGINAZIONE E AVVICENDAMENTO
Kernel Linux: file system

IL DOGMA: OGNI COSA E' UN FILE

DAL VANGELO DI THOMPSON && RITCHIE:

  ”UN FILE NON E' NECESSARIAMENTE UN OGGETTO MEMORIZZATO IN UN
   DISCO O PRELEVATO DA UN SERVER DI RETE: UN FILE E' QUALUNQUE
  ELEMENTO SIA IN GRADO DI GESTIRE L'IMMISSIONE O L'EMISSIONE DI UN
                           FLUSSO DI DATI”

IL KERNEL DI LINUX GESTISCE TUTTI I TIPI DI FILE NASCONDENDONE I
DETTAGLI RELATIVI ALLA STRUTTURA INTERNA SOTTO UNO STRATO DI
PROGRAMMI: IL FILE SYSTEM VIRTUALE (VFS)

IL VFS DEFINISCE QUATTRO TIPI DI OGGETTI PRINCIPALI:
  INODE
  FILE → /usr/include/linux/fs.h
  SUPERBLOCCO
  DENTRY → /usr/include/stdio.h

JOURNALING: ANNOTAZIONE DELLE MODIFICHE

/PROC: RAPPRESENTAZIONE COME FILE DELLE STRUTTURE DEL KERNEL
Kernel Linux: I/O

IL SISTEMA LINUX SUDDIVIDE I DISPOSITIVI IN TRE CLASSI:

DISPOSITIVI A BLOCCHI
→ BLOCCHI DI DATI DI DIMENSIONE FISSA INDIPENDETE

DISPOSITIVI A CARATTERI
→ MOUSE E TASTIERE

 DISPOSITIVI DI RETE
 → COMUNICAZIONE INDIRETTA TRAMITE IL SOTTOSISTEMA DI RETE DEL
KERNEL
Kernel Linux: comunicazione fra
             processi

IL MECCANISMO STANDARD DI UNIX USATO PER COMUNICARE A UN PROCESSO
CHE UN EVENTO SI È VERIFICATO È IL SEGNALE

LINUX PERO' NON UTILIZZA I SEGNALI PER COMUNICARE CON I PROCESSI
ESEGUITI IN MODALITA' KERNEL. ESSO FA USO DEGLI STATI DI SCHEDULING E
DELLE STRUTTURE wait_queue

MECCANISMO DEI SEMAFORI – VANTAGGI:
 ESSERE CONDIVISI IN GRAN NUMERO DA PROCESSI INDIPENDENTI
 ESECUZIONE ATOMICA

PASSAGGIO DI DATI TRA PROCESSI:
 PIPE
Kernel Linux: struttura di rete


INTERNAMENTE IL KERNEL REALIZZA I SERVIZI DI RETE PER MEZZO DI TRE
STRATI DI PROGRAMMI:

 INTERFACCIA A SOCKET (4.3BSD)

DRIVER DEI PROTOCOLLI (ETICHETTATURA DI PROTOCOLLO)
→ skbuff
→ GESTIONE DEL FIREWALL
→ CATENE DI FIREWALL

DRIVER DEI DISPOSITIVI DI RETE
→ ipfraq
→ ipq
Kernel Linux: sicurezza
LE QUESTIONI RELATIVE ALLA SICUREZZA SONO CLASSIFICABILI IN DUE
GRUPPI:

 AUTENTICAZIONE
 → ASSICURARE CHE NESSUNO POSSA ACCEDERE AL SISTEMA SENZA PRMA
DIMOSTRARE DI AVERNE DIRITTO
 → FUNZIONE DI CODIFICA NON INVERTIBILE
 → PAM (PLUGGABLE AUTHENTICATION MODULES)

  CONTROLLO DELL'ACCESSO
 → FORNIRE UN MECCANISMO CHE PERMETTA DI CONTROLLARE SE UN
UTENTE ABBIA DIRITTO D'ACCESSO A UN CERTO OGGETTO E CHE IMPEDISCA
L'ACCESSO SE L'ESITO DEL CONTROLLO E' NEGATIVO
 → UID, GID
 → MASCHERA DI PROTEZIONE
 → ROOT (da non confondere con chroot*)

*isolare limiti operativi di una singola applicazione, utile per la difesa in rete (…e non solo)
Kernel Linux: mappa
Kernel Linux: pratica

FORZA && CORAGGIO

STEP N°1: SCARICARE I SORGENTI https://www.kernel.org/
CASO D'ESEMPIO, LINUX KERNEL 3.0.4 (LATEST STABLE KERNEL)
https://www.kernel.org/pub/linux/kernel/v3.x/

STEP N°2: SCOMPATTARE L'ARCHIVIO
root@host:/# bunzip2 linux-3.0.4.tar.bz2
#sostituisce il *.tar.bz2 con il suo equivalente non compresso *.tar

root@host:/# tar xvf linux-3.0.4.tar
#estrae dall'archivio i files e crea la giusta struttura di directory, mantenendo il file *.tar
#a questo punto si può entrare nella direcotry creata:

root@host:/# cd linux-3.0.4
root@host:/linux-3.0.4#
Kernel Linux: pratica

STEP N°3: LA FASE DI CONFIGURAZIONE
root@host:/linux-3.0.4# make config

#nel caso nel sistema fossere presenti le librerie ncurses (e relativi files di sviluppo) è
possibile sostituire il comando sopra citato con

root@host:/linux-3.0.4# make menuconfig

LA SELEZIONE DEI PARAMETRI E' UN PROCEDIMENTO LUNGO CHE RICHIEDE
MOLTA PONDERAZIONE: SI TRATTA DI DECIDERE CHE COSA ANDRA'
COMPILATO ED INCLUSO NEL KERNEL, CHE COSA NON DOVRA' ESSERE
COMPILATO, COSA ANDRA' COMPILATO MA SARA' UTILIZZATO COME MODULO.

                               NT (NERDATA TOTALE)
Kernel Linux: pratica



STEP N°4: LA COMPILAZIONE
ASSICURATEVI CHE LA VOSTRA MACCHINA SIA A DISPOSIZIONE SENZA
INTERRUZZIONI MA SOPRATTUTTO TROVATEVI QUALCOSA DI DIVERTENTE DA
FARE … 4 SEMPLICI LETTERE STRESSERANNO IL VOSTRO PC IN UNA MANIERA
NON INDIFFERENTE

root@host:/linux-3.0.4# make
Kernel Linux: pratica
STEP N°5: IMMAGINE COMPRESSA, MODULI E RAMDISK
IN QUESTO MOMENTO ABBIAMO COMPILATO TUTTO MA NON ABBIAMO ANCORA
MESSO AL LORO POSTO NE' I MODULI NE' L'IMMAGINE DEL KERNEL:
CREIAMOLA!

root@host:/linux-3.0.4# make bzImage

FATTO CIO' NELLA SOTTODIRECTORY arch/xyz/boot SI TROVERA' IL FILE bzImage.
#xyz = sigla che indica l'architettura per cui è stato compilato il kernel
CREATO IL KERNEL E' IL MOMENTO DI INSTALLARE I MODULI

root@host:/linux-3.0.4# make modules_install

FATTO (cit. necessaria)! MANCA SOLO UN RAMDISK
COS'E'? E' UNA PORZIONE DI RAM CHE VIENE UTILIZZATA COME DISCO.

root@host:/linux-3.0.4# mkinitramfs -o /boot/initrd.img-3.0.4 3.0.4
IL PRIMO PARAMETRO INDICA IL PATH IN CUI ALLOCARE IL FILE, IL SECONDO
INDICA LA VERSIONE DEL KERNEL DI CUI GENERARE IL RAMDISK
Kernel Linux: pratica


STEP N°6: COPIA DEI FILE
 IMMAGINE DEL KERNEL
  cp arch/x86/boot/bzImage /boot/vmlinuz-3.0.4

 MAPPATURA DEL SISTEMA
 cp System.map /boot/System.map-3.0.4

 [CONSIGLIATA] CONFIGURAZIONE USATA
  cp .config /boot/config-3.0.4

STEP N°7: MODIFICA DEL BOOTLOADER
LILO, GRUB, GRUB2 … SI RIMANDA ALLE RISPETTIVE GUIDE (RTFM googleando
googleando)
Kernel Linux: il lato oscuro



KERNEL PANIC
→ ERRORE IRRECUPERABILE INDIVIDUATO IN KERNEL SPACE

INIEZIONE DI FALLIMENTI
→ TRANSAZIONE DI UN SISTEMA IN UNO STATO NON CORRETTO

OVERFLOW
→ STACK
→ BUFFER
→ HEAP
GRAZIE A ...




                             Dennis MacAlistair Ritchie
              (Bronxville, 9 settembre 1941 – Murray Hill, 12 ottobre 2011)

 Co-creatore del linguaggio C (insieme a Brian Kerningam e Ken Thompson) e co-
creatore dell’originale UNIX (assieme a Ken Thompson), a quest’uomo sono legate le
origini dell’affascinante e intricata storia del sistema operativo “più elegante” del mondo.


Se ne è andata una delle menti più brillanti dell’Informatica dei primi anni, dal cui GENIO
  ASSOLUTO discendono tutti i sistemi operativi UNIX-derivati, tra cui Linux, BSD e
         MacOS X, nonché tutti i linguaggi di programmazione moderni.
                  L’eco dovuta alla sua opera non si spegnerà mai.

More Related Content

What's hot

Sicurezza e protezione dati su raspberry
Sicurezza e protezione dati su raspberrySicurezza e protezione dati su raspberry
Sicurezza e protezione dati su raspberryOrazio Sarno
 
Cyber Forensic
Cyber ForensicCyber Forensic
Cyber ForensicNaLUG
 
Free software & Open Source (FLOSS)
Free software & Open Source (FLOSS)Free software & Open Source (FLOSS)
Free software & Open Source (FLOSS)Piergiorgio Borgogno
 
Corso Linux
Corso LinuxCorso Linux
Corso Linuxagnelloe
 
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slidesLinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slidesMaurizio Antonelli
 
Corso formazione Linux
Corso formazione LinuxCorso formazione Linux
Corso formazione LinuxErcole Palmeri
 
BlueSecurity: quando il dente fa male!
BlueSecurity: quando il dente fa male!BlueSecurity: quando il dente fa male!
BlueSecurity: quando il dente fa male!Alfredo Morresi
 
(in)Sicurezze delle reti wireless 802.11b
(in)Sicurezze delle reti wireless 802.11b(in)Sicurezze delle reti wireless 802.11b
(in)Sicurezze delle reti wireless 802.11bAlfredo Morresi
 
Introduzione a Linux: differenze con windows e strumenti per la programmazione
Introduzione a Linux: differenze con windows e strumenti per la programmazioneIntroduzione a Linux: differenze con windows e strumenti per la programmazione
Introduzione a Linux: differenze con windows e strumenti per la programmazioneValerio Bruno
 
Rootkit: teoria e pratica. Michele BOLOGNA
Rootkit: teoria e pratica. Michele BOLOGNARootkit: teoria e pratica. Michele BOLOGNA
Rootkit: teoria e pratica. Michele BOLOGNAMichele Bologna
 
introduzione_a_pfSense
introduzione_a_pfSenseintroduzione_a_pfSense
introduzione_a_pfSenseMassimo Giaimo
 
Security and hacking engineering - metodologie di attacco e difesa con strume...
Security and hacking engineering - metodologie di attacco e difesa con strume...Security and hacking engineering - metodologie di attacco e difesa con strume...
Security and hacking engineering - metodologie di attacco e difesa con strume...Marco Ferrigno
 
Presentazione Linux
Presentazione LinuxPresentazione Linux
Presentazione LinuxMatteo
 

What's hot (19)

Sicurezza e protezione dati su raspberry
Sicurezza e protezione dati su raspberrySicurezza e protezione dati su raspberry
Sicurezza e protezione dati su raspberry
 
Cyber Forensic
Cyber ForensicCyber Forensic
Cyber Forensic
 
Free software & Open Source (FLOSS)
Free software & Open Source (FLOSS)Free software & Open Source (FLOSS)
Free software & Open Source (FLOSS)
 
Corso linux base
Corso linux baseCorso linux base
Corso linux base
 
Corso Linux
Corso LinuxCorso Linux
Corso Linux
 
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slidesLinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
 
Corso formazione Linux
Corso formazione LinuxCorso formazione Linux
Corso formazione Linux
 
BlueSecurity: quando il dente fa male!
BlueSecurity: quando il dente fa male!BlueSecurity: quando il dente fa male!
BlueSecurity: quando il dente fa male!
 
(in)Sicurezze delle reti wireless 802.11b
(in)Sicurezze delle reti wireless 802.11b(in)Sicurezze delle reti wireless 802.11b
(in)Sicurezze delle reti wireless 802.11b
 
Introduzione a Linux: differenze con windows e strumenti per la programmazione
Introduzione a Linux: differenze con windows e strumenti per la programmazioneIntroduzione a Linux: differenze con windows e strumenti per la programmazione
Introduzione a Linux: differenze con windows e strumenti per la programmazione
 
Rootkit: teoria e pratica. Michele BOLOGNA
Rootkit: teoria e pratica. Michele BOLOGNARootkit: teoria e pratica. Michele BOLOGNA
Rootkit: teoria e pratica. Michele BOLOGNA
 
Attacchi e difese
Attacchi e difeseAttacchi e difese
Attacchi e difese
 
Oltre I firewall
Oltre I firewallOltre I firewall
Oltre I firewall
 
introduzione_a_pfSense
introduzione_a_pfSenseintroduzione_a_pfSense
introduzione_a_pfSense
 
Heartbleed - OpenSSL Bug
Heartbleed - OpenSSL BugHeartbleed - OpenSSL Bug
Heartbleed - OpenSSL Bug
 
Security and hacking engineering - metodologie di attacco e difesa con strume...
Security and hacking engineering - metodologie di attacco e difesa con strume...Security and hacking engineering - metodologie di attacco e difesa con strume...
Security and hacking engineering - metodologie di attacco e difesa con strume...
 
PfSense Cluster
PfSense ClusterPfSense Cluster
PfSense Cluster
 
Sistema Operativo - LInux - Modulo 2.1
Sistema Operativo - LInux - Modulo 2.1Sistema Operativo - LInux - Modulo 2.1
Sistema Operativo - LInux - Modulo 2.1
 
Presentazione Linux
Presentazione LinuxPresentazione Linux
Presentazione Linux
 

Similar to Understanding Linux: 20 anni di kernel tra storia e tecnica

Understanding Linux
Understanding LinuxUnderstanding Linux
Understanding LinuxNaLUG
 
Lug Roma3 Corso Linux Base
Lug Roma3   Corso Linux BaseLug Roma3   Corso Linux Base
Lug Roma3 Corso Linux Basefosk
 
Digital Forensic
Digital ForensicDigital Forensic
Digital ForensicNaLUG
 
Da Thompson a Torvalds: passato, presente e futuro del mondo *nix
Da Thompson a Torvalds: passato, presente e futuro del mondo *nixDa Thompson a Torvalds: passato, presente e futuro del mondo *nix
Da Thompson a Torvalds: passato, presente e futuro del mondo *nixFelice Pescatore
 
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of ThingsMirko Mancin
 
Power point sistemi operativi , luca marcella 3° e
Power point sistemi operativi , luca marcella 3° ePower point sistemi operativi , luca marcella 3° e
Power point sistemi operativi , luca marcella 3° eLuca Marcella
 
Linux e fs storia e caratteristiche vincenti
Linux e fs   storia e caratteristiche vincentiLinux e fs   storia e caratteristiche vincenti
Linux e fs storia e caratteristiche vincentiMaurizio Antonelli
 
Linux & Open Source : Lezione Tre
Linux & Open Source : Lezione TreLinux & Open Source : Lezione Tre
Linux & Open Source : Lezione TreDario Mazza
 
Docker - virtualizzazione leggera
Docker - virtualizzazione leggeraDocker - virtualizzazione leggera
Docker - virtualizzazione leggeraRoberto Polli
 
Linux & Open Source : Lezione Due
Linux & Open Source : Lezione DueLinux & Open Source : Lezione Due
Linux & Open Source : Lezione DueDario Mazza
 
Amministrazione base dei sistemi Linux
Amministrazione base dei sistemi LinuxAmministrazione base dei sistemi Linux
Amministrazione base dei sistemi LinuxPaolo Campegiani
 
LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...
LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...
LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...Maurizio Antonelli
 
Introduzione ai Sistemi Operativi
Introduzione ai Sistemi OperativiIntroduzione ai Sistemi Operativi
Introduzione ai Sistemi OperativiorestJump
 
Elio Tondo - Linux In Azienda
Elio Tondo - Linux In AziendaElio Tondo - Linux In Azienda
Elio Tondo - Linux In AziendaBetter Software
 
Elementidi informatica
Elementidi informaticaElementidi informatica
Elementidi informaticagiu89
 
Sistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente LinuxSistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente LinuxTruelite
 

Similar to Understanding Linux: 20 anni di kernel tra storia e tecnica (20)

Understanding Linux
Understanding LinuxUnderstanding Linux
Understanding Linux
 
Lug Roma3 Corso Linux Base
Lug Roma3   Corso Linux BaseLug Roma3   Corso Linux Base
Lug Roma3 Corso Linux Base
 
Digital Forensic
Digital ForensicDigital Forensic
Digital Forensic
 
Da Thompson a Torvalds: passato, presente e futuro del mondo *nix
Da Thompson a Torvalds: passato, presente e futuro del mondo *nixDa Thompson a Torvalds: passato, presente e futuro del mondo *nix
Da Thompson a Torvalds: passato, presente e futuro del mondo *nix
 
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
 
debian gnu linux
debian gnu linuxdebian gnu linux
debian gnu linux
 
Power point sistemi operativi , luca marcella 3° e
Power point sistemi operativi , luca marcella 3° ePower point sistemi operativi , luca marcella 3° e
Power point sistemi operativi , luca marcella 3° e
 
Linux e fs storia e caratteristiche vincenti
Linux e fs   storia e caratteristiche vincentiLinux e fs   storia e caratteristiche vincenti
Linux e fs storia e caratteristiche vincenti
 
Lezione tre
Lezione treLezione tre
Lezione tre
 
Linux & Open Source : Lezione Tre
Linux & Open Source : Lezione TreLinux & Open Source : Lezione Tre
Linux & Open Source : Lezione Tre
 
Sistema operativo unix
Sistema operativo unixSistema operativo unix
Sistema operativo unix
 
Docker - virtualizzazione leggera
Docker - virtualizzazione leggeraDocker - virtualizzazione leggera
Docker - virtualizzazione leggera
 
Linux & Open Source : Lezione Due
Linux & Open Source : Lezione DueLinux & Open Source : Lezione Due
Linux & Open Source : Lezione Due
 
Lezione due
Lezione dueLezione due
Lezione due
 
Amministrazione base dei sistemi Linux
Amministrazione base dei sistemi LinuxAmministrazione base dei sistemi Linux
Amministrazione base dei sistemi Linux
 
LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...
LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...
LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...
 
Introduzione ai Sistemi Operativi
Introduzione ai Sistemi OperativiIntroduzione ai Sistemi Operativi
Introduzione ai Sistemi Operativi
 
Elio Tondo - Linux In Azienda
Elio Tondo - Linux In AziendaElio Tondo - Linux In Azienda
Elio Tondo - Linux In Azienda
 
Elementidi informatica
Elementidi informaticaElementidi informatica
Elementidi informatica
 
Sistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente LinuxSistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente Linux
 

Understanding Linux: 20 anni di kernel tra storia e tecnica

  • 1. #LINUX DAY NAPOLI 2011 Understanding Linux: 20 anni di kernel tra storia e tecnica A CURA DI MARCO FERRIGNO - Security & system independent researcher - - Developer of the Italian Debian GNU/Linux HOWTOs - gplus.to/marko.ferrigno #all_contacts
  • 2. root@host:/# intro PROPEDEUTICITA': NOZIONI BASILARI SULLE ARCHITETTURE DI ELABORAZIONE, NOZIONI BASILARI SULL'UTILIZZO DEI SISTEMI OPERATIVI, CURIOSITA' E SPIRITO DI INIZIATIVA. COSA IMPAREREMO DA QUESTO TALK: COS'E' UN KERNEL, IL KERNEL LINUX: STORIA, IL KERNEL LINUX: TECNICA, IL KERNEL LINUX IN PRATICA, … ALTRE AMENITA' NERD' ORIENTED
  • 3. Kernel: cos'è realmente? E' IL SOFTWARE IL CUI COMPITO E' QUELLO DI FORNIRE AI PROCESSI IN ESECUZIONE SULL'ELABORATORE UN ACCESSO SICURO E CONTROLLATO ALL'HARDWARE. PRINCIPALI MANSIONI:  GESTIONE DELLA PORZIONE TEMPO-MACCHINA,  GESTIONE DELLE ASTRAZIONI. I KERNEL SI CLASSIFICANO IN QUATTRO CATEGORIE: MONOLITICI MICROKERNEL IBRIDI ESOKERNEL
  • 4. Differenze tra kernel KERNEL MONOLITICI (UNIX->*.BSD, LINUX ) INTEGRAZIONE DEL CODICE STRETTA MICROKERNEL (MACH, MINIX, QNX) SEPARAZIONE SERVIZI BASE DA STRUTTRA OPERATIVA
  • 5. Differenze tra kernel IBRIDI (WINDOWS, XNU, DRAGONFLY, QUARK) CODICE NON ESSENZIALE A LIVELLO KS ESOKERNEL (NEMESIS) ”POTERE ALLO SVILUPPATORE”
  • 6. Kernel Linux: le origini "I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones." - Linus Torvads 26 agosto 1991 8:12 am - camp.os.minix HA INIZIO UNA STORIA RICCA DI CONTRIBUTI DA PARTE DI UTENTI DI TUTTO IL MONDO CHE COMUNICAVANO ESCLUSIVAMENTE TRAMITE INTERNET. TRA LA NASCITA E LO STATO DELL'ARTE: LA ”GUERRA” LINUS TORVALDS VS ANDREW TANENBAUM LINUX 1.0 - 14 MARZO 1994 LINUX 3.0 - 21 LUGLIO 2011
  • 7. Kernel Linux: stato dell'arte LINUX 3.0: PRINCIPALI MIGLIORAMENTI BTRFS: DEFRAMMENTAZIONE AUTOMATICA, SCRUBBING , PRESTAZIONI AMPIAMENTO DEL PARCO DRIVER E DELLE ARCHITETTURE > SCALABILITA' DEL VFS PROCESS SCHEDULER++ GESTIONE DELLA MEMORIA++ NETWORKING → IPSET: SCTP, UDPLITE FILE SYSTEM → EXT4 ”PUNCH HOLE”, CIFS WINDOWS 2008 DFS, XFS++ CRYPTO → FREESCALE SEC4/CAAM, SHA1/256 VIA NANO, S5PV210 VIRTUALIZZAZIONE → USER MODE++, XEN BLKBACK SICUREZZA → SELINUX MOUNT POINT /sys/fs/selinux ALTRE MODIFICHE → ULIMIT, KBUILD, HIBERNATE, POSIX-TIMER, COREDUMP NB: (++) == miglioramento rispetto alla release precedente FACCIAMO UN PASSO INDIETRO ...
  • 8. Kernel Linux: melting pot IL ”SISTEMA” LINUX: CODICE EX NOVO KERNEL LINUX GESTIONE DEI SERVIZI DI RETE 4.3BSD VARI FRAMMENTI DI CODICE X WINDOWS GNU PRINCIPALI LIBRERIE DI SISTEMA, GCC FILE SYSTEM HIERARCHY STANDARD: DOCUMENTO CHE STABILISCE SOTTO QUALI NOMI DI DIRECTORY I FILE DI CONFIGURAZIONE, LE LIBRERIE, I FILE ESEGUIBILI DI SISTEMA E I FILE DI DATI DOVREBBERO ESSERE ARCHIVIATI DISTRIBUZIONI E PACKAGES MANAGERS: DA SOFTLANDING LINUX SYSTEM (AGOSTO 1992) A SABAYON … …. PASSANDO PER SLACKWARE, DEBIAN, RED HAT
  • 9. Kernel Linux: licenze I TERMINI DELLA GNU GENERAL PUBLIC LICENSE (GPL) SONO STATI STABILITI DALLA FREE SOFTWARE FOUNDATION. IL SISTEMA LINUX E' LIBERO NEL SENSO CHE SI PUO' COPIARE, MODIFICARE E USARE IN QUALUNQUE MODO SI DESIDERI E SI PUO' FAR CIRCOLARE SENZA ALCUNA LIMITAZIONE. CHIUNQUE LO USI O CREI UN PRODOTTO DA ESSO DERIVATO NON PUO' RECLAMARE DIRITTI DI PROPRIETA' SUL PRODOTTO. ALL'ATTO DELLA DISTRIBUZIONE SI DEVE RENDERE DISPONIBILE IL CODICE SORGENTE E CIO' VALE PER OGNI COMPONENTE DI UN PACCHETTO DI DISTRIBUZIONE CHE SIA OGGETTO DELLA GPL. CIO' NON EVITA LA DIFFUSIONE GRATUITA O LA VENDITA DI VERSIONI PURAMENTE BINARIE, PURCHE' CHIUNQUE RICEVA I FILE ESEGUIBILI ABBIA LA POSSIBILITA' DI OTTENERE IL CODICE SORGENTE AD UN PREZZO RAGIONEVOLE
  • 10. Kernel Linux: moduli & driver TORNANDO ALLA TECNICA … COS'E' UN MODULO? E' UN COMPONENTE SOFTWARE CHE PUÒ SVOLGERE DIVERSE FUNZIONI VANTAGGI: PUÒ ESSERE COMPILATO SEPARATAMENTE ED ESSERE CARICATO IN UN KERNEL GIA' IN USO. ALTA PERSONALIZZAZIONE DISTRIBUZIONE GRATUITA E LIBERA I DRIVER IN UN SISTEMA LINUX: IL KERNEL POSSIEDE DELLE TABELLE DINAMICHE DI TUTTI I DRIVER NOTI E FORNISCE UN INSIEME DI PROCEDURE CHE PERMETTONO DI AGGIUNGERE O RIMUOVERE UN DRIVER DA QUESTE TABELLE IN QUALUNQUE MOMENTO MODULI & DRIVER: UN MODULO PUO' REGISTRARE MOLTI TIPI DI DRIVER; UN CERTO MODULO PUO' SCEGLIERE FRA QUESTI E, SE LO DESIDERA, REGISTRARE PIU' DI UN DRIVER. UN CERTO DRIVER POTREBBE VOLER REGISTRARE DUE MECCANISMI DISTINTI PER L'ACCESSO AD UN DISPOSITIVO.
  • 11. Kernel Linux: gestione dei processi MODELLO UNIX: CREAZIONE - FORK() - ED ESECUZIONE - EXEC() - DEI PROGRAMMI. IDENTITA' DEI PROCESSI: IDENTIFICATORE (PROCESS IDENTIFIER - PID) CREDENZIALI UTENTE PERSONALITA' DELLA SEMANTICA (LINUX) CONTESTO DI UN PROCESSO: CONTESTO DI SCHEDULING CONTABILIZZAZIONE DELLE RISORSE TABELLA DEI FILES CONTESTO DEL FILE SYSTEM TABELLA DEI GESTORI DEI SEGNALI CONTESTO DELLA MEMORIA VIRTUALE LA CHIAMATA CLONE() E IL CONCETTO DI TASK
  • 12. Kernel Linux: scheduling LO SCHEDULING CONSISTE NELL'ALLOCAZIONE DEL TEMPO DI CPU AI DIVERSI TASK ALL'INTERNO DI UN SISTEMA OPERATIVO. UN ASPETTO IMPORTANTE DELLO SCHEDULING NEL SISTEMA LINUX È L'ESECUZIONE DEI VARI TASK DEL KERNEL: TASK RICHIESTI DA UN PROCESSO IN ESECUZIONE TASK INTERNI ESEGUITI PER CONTO DI UN DRIVER DI DISPOSITIVO. 2 DISTINTI ALGORITMI DI SCHEDULING (CON PRELAZIONE E BASATO SULLE PRIORITA'): ALGORITMO A PARTIZIONE DEL TEMPO ALGORITMO DI REAL TIME (SOFT) SINCRONIZZAZIONE KERNEL: PRELAZIONE VS SPINLOCK MULTIELABORAZIONE SIMMETRICA (SMP): SPINLOCK BIG KERNEL LOCK (BKL) LOCK MULTIPLI E ALGORITIMI DI BILANCIAMENTO DEL CARICO
  • 13. Kernel Linux: gestione della memoria ALLOCAZIONE E RILASCIO DI PAGINE E BLOCCHI DI MEMORIA MEMORIA VIRTUALE GESTIONE DELLA MEMORIA FISICA: ZONA MEMORIA FISICA ZONE_DMA <16 MB ZONE_NORMAL 16 MB <X< 896 MB ZONE_HIGHMEM >896 MB SISTEMI DI ALLOCAZIONE: BUDDY, KMALLOC(), SLAB GESTIONE DELLA MEMORIA VIRTUALE: SPAZIO DI INDIRIZZI VISIBILE A OGNI PROCESSO (NATURA LOGICA VS NATURA FISICA) ASPETTI DA VALUTARE: DURATA DI UNO SPAZIO DI INDIRIZZI PAGINAZIONE E AVVICENDAMENTO
  • 14. Kernel Linux: file system IL DOGMA: OGNI COSA E' UN FILE DAL VANGELO DI THOMPSON && RITCHIE: ”UN FILE NON E' NECESSARIAMENTE UN OGGETTO MEMORIZZATO IN UN DISCO O PRELEVATO DA UN SERVER DI RETE: UN FILE E' QUALUNQUE ELEMENTO SIA IN GRADO DI GESTIRE L'IMMISSIONE O L'EMISSIONE DI UN FLUSSO DI DATI” IL KERNEL DI LINUX GESTISCE TUTTI I TIPI DI FILE NASCONDENDONE I DETTAGLI RELATIVI ALLA STRUTTURA INTERNA SOTTO UNO STRATO DI PROGRAMMI: IL FILE SYSTEM VIRTUALE (VFS) IL VFS DEFINISCE QUATTRO TIPI DI OGGETTI PRINCIPALI: INODE FILE → /usr/include/linux/fs.h SUPERBLOCCO DENTRY → /usr/include/stdio.h JOURNALING: ANNOTAZIONE DELLE MODIFICHE /PROC: RAPPRESENTAZIONE COME FILE DELLE STRUTTURE DEL KERNEL
  • 15. Kernel Linux: I/O IL SISTEMA LINUX SUDDIVIDE I DISPOSITIVI IN TRE CLASSI: DISPOSITIVI A BLOCCHI → BLOCCHI DI DATI DI DIMENSIONE FISSA INDIPENDETE DISPOSITIVI A CARATTERI → MOUSE E TASTIERE DISPOSITIVI DI RETE → COMUNICAZIONE INDIRETTA TRAMITE IL SOTTOSISTEMA DI RETE DEL KERNEL
  • 16. Kernel Linux: comunicazione fra processi IL MECCANISMO STANDARD DI UNIX USATO PER COMUNICARE A UN PROCESSO CHE UN EVENTO SI È VERIFICATO È IL SEGNALE LINUX PERO' NON UTILIZZA I SEGNALI PER COMUNICARE CON I PROCESSI ESEGUITI IN MODALITA' KERNEL. ESSO FA USO DEGLI STATI DI SCHEDULING E DELLE STRUTTURE wait_queue MECCANISMO DEI SEMAFORI – VANTAGGI: ESSERE CONDIVISI IN GRAN NUMERO DA PROCESSI INDIPENDENTI ESECUZIONE ATOMICA PASSAGGIO DI DATI TRA PROCESSI: PIPE
  • 17. Kernel Linux: struttura di rete INTERNAMENTE IL KERNEL REALIZZA I SERVIZI DI RETE PER MEZZO DI TRE STRATI DI PROGRAMMI: INTERFACCIA A SOCKET (4.3BSD) DRIVER DEI PROTOCOLLI (ETICHETTATURA DI PROTOCOLLO) → skbuff → GESTIONE DEL FIREWALL → CATENE DI FIREWALL DRIVER DEI DISPOSITIVI DI RETE → ipfraq → ipq
  • 18. Kernel Linux: sicurezza LE QUESTIONI RELATIVE ALLA SICUREZZA SONO CLASSIFICABILI IN DUE GRUPPI: AUTENTICAZIONE → ASSICURARE CHE NESSUNO POSSA ACCEDERE AL SISTEMA SENZA PRMA DIMOSTRARE DI AVERNE DIRITTO → FUNZIONE DI CODIFICA NON INVERTIBILE → PAM (PLUGGABLE AUTHENTICATION MODULES) CONTROLLO DELL'ACCESSO → FORNIRE UN MECCANISMO CHE PERMETTA DI CONTROLLARE SE UN UTENTE ABBIA DIRITTO D'ACCESSO A UN CERTO OGGETTO E CHE IMPEDISCA L'ACCESSO SE L'ESITO DEL CONTROLLO E' NEGATIVO → UID, GID → MASCHERA DI PROTEZIONE → ROOT (da non confondere con chroot*) *isolare limiti operativi di una singola applicazione, utile per la difesa in rete (…e non solo)
  • 20. Kernel Linux: pratica FORZA && CORAGGIO STEP N°1: SCARICARE I SORGENTI https://www.kernel.org/ CASO D'ESEMPIO, LINUX KERNEL 3.0.4 (LATEST STABLE KERNEL) https://www.kernel.org/pub/linux/kernel/v3.x/ STEP N°2: SCOMPATTARE L'ARCHIVIO root@host:/# bunzip2 linux-3.0.4.tar.bz2 #sostituisce il *.tar.bz2 con il suo equivalente non compresso *.tar root@host:/# tar xvf linux-3.0.4.tar #estrae dall'archivio i files e crea la giusta struttura di directory, mantenendo il file *.tar #a questo punto si può entrare nella direcotry creata: root@host:/# cd linux-3.0.4 root@host:/linux-3.0.4#
  • 21. Kernel Linux: pratica STEP N°3: LA FASE DI CONFIGURAZIONE root@host:/linux-3.0.4# make config #nel caso nel sistema fossere presenti le librerie ncurses (e relativi files di sviluppo) è possibile sostituire il comando sopra citato con root@host:/linux-3.0.4# make menuconfig LA SELEZIONE DEI PARAMETRI E' UN PROCEDIMENTO LUNGO CHE RICHIEDE MOLTA PONDERAZIONE: SI TRATTA DI DECIDERE CHE COSA ANDRA' COMPILATO ED INCLUSO NEL KERNEL, CHE COSA NON DOVRA' ESSERE COMPILATO, COSA ANDRA' COMPILATO MA SARA' UTILIZZATO COME MODULO. NT (NERDATA TOTALE)
  • 22. Kernel Linux: pratica STEP N°4: LA COMPILAZIONE ASSICURATEVI CHE LA VOSTRA MACCHINA SIA A DISPOSIZIONE SENZA INTERRUZZIONI MA SOPRATTUTTO TROVATEVI QUALCOSA DI DIVERTENTE DA FARE … 4 SEMPLICI LETTERE STRESSERANNO IL VOSTRO PC IN UNA MANIERA NON INDIFFERENTE root@host:/linux-3.0.4# make
  • 23. Kernel Linux: pratica STEP N°5: IMMAGINE COMPRESSA, MODULI E RAMDISK IN QUESTO MOMENTO ABBIAMO COMPILATO TUTTO MA NON ABBIAMO ANCORA MESSO AL LORO POSTO NE' I MODULI NE' L'IMMAGINE DEL KERNEL: CREIAMOLA! root@host:/linux-3.0.4# make bzImage FATTO CIO' NELLA SOTTODIRECTORY arch/xyz/boot SI TROVERA' IL FILE bzImage. #xyz = sigla che indica l'architettura per cui è stato compilato il kernel CREATO IL KERNEL E' IL MOMENTO DI INSTALLARE I MODULI root@host:/linux-3.0.4# make modules_install FATTO (cit. necessaria)! MANCA SOLO UN RAMDISK COS'E'? E' UNA PORZIONE DI RAM CHE VIENE UTILIZZATA COME DISCO. root@host:/linux-3.0.4# mkinitramfs -o /boot/initrd.img-3.0.4 3.0.4 IL PRIMO PARAMETRO INDICA IL PATH IN CUI ALLOCARE IL FILE, IL SECONDO INDICA LA VERSIONE DEL KERNEL DI CUI GENERARE IL RAMDISK
  • 24. Kernel Linux: pratica STEP N°6: COPIA DEI FILE IMMAGINE DEL KERNEL cp arch/x86/boot/bzImage /boot/vmlinuz-3.0.4 MAPPATURA DEL SISTEMA cp System.map /boot/System.map-3.0.4 [CONSIGLIATA] CONFIGURAZIONE USATA cp .config /boot/config-3.0.4 STEP N°7: MODIFICA DEL BOOTLOADER LILO, GRUB, GRUB2 … SI RIMANDA ALLE RISPETTIVE GUIDE (RTFM googleando googleando)
  • 25. Kernel Linux: il lato oscuro KERNEL PANIC → ERRORE IRRECUPERABILE INDIVIDUATO IN KERNEL SPACE INIEZIONE DI FALLIMENTI → TRANSAZIONE DI UN SISTEMA IN UNO STATO NON CORRETTO OVERFLOW → STACK → BUFFER → HEAP
  • 26. GRAZIE A ... Dennis MacAlistair Ritchie (Bronxville, 9 settembre 1941 – Murray Hill, 12 ottobre 2011) Co-creatore del linguaggio C (insieme a Brian Kerningam e Ken Thompson) e co- creatore dell’originale UNIX (assieme a Ken Thompson), a quest’uomo sono legate le origini dell’affascinante e intricata storia del sistema operativo “più elegante” del mondo. Se ne è andata una delle menti più brillanti dell’Informatica dei primi anni, dal cui GENIO ASSOLUTO discendono tutti i sistemi operativi UNIX-derivati, tra cui Linux, BSD e MacOS X, nonché tutti i linguaggi di programmazione moderni. L’eco dovuta alla sua opera non si spegnerà mai.