Sistema operativo
• Software responsabile del controllo e della
gestione dei componenti hardware di un
computer mediante interfaccia (driver), e della
gestione dei vari programmi del computer.
• I programmi caricati in memoria prendono il
nome di “processi”
• Nota: un programma può essere composto da
tanti processi paralleli (chiamati threads)
– Avere un’architettura multi-core è un vantaggio
Sistema operativo - kernel
• Kernel – cuore del sistema operativo
– Interfacciamento con l’architettura fisica del computer
(cpu, ram, bus, schede di rete…)
– Gestione memoria virtuale (allocazione spazio su ram,
deallocazione, “swapping” della memoria)
– Gestione del “multitasking” (tramite il componente
chiamato “scheduler”)
– Gestione di base della “multiutenza”
– Gestione del filesystem (organizzazione logica dei files e
cartelle su disco fisso)
– Gestione dei dispositivi I/O mediante drivers (in Linux i
drivers possono essere “moduli” aggiuntivi del kernel)
– Gestione protocolli di rete, a vari livelli di astrazione
Altri componenti
• GUI – interfaccia utente grafica (menu, icone, …)
– Server X + KDE o Gnome (in Linux)
– File Explorer (in Windows)
– Finder (Mac Os X)
• Shell – interfaccia utente testuale a riga di comando
– “bash” (in Linux)
– Sottosistema “prompt di dos” o “powershell” (in Windows)
• Spooler di stampa
– Gestisce la “coda” di stampa
• Desktop remoto
– Per connettersi ad un altro computer nella rete, usandolo come se fossimo lì
davanti ad esso.
Multitasking e Multiutenza
• Multi-tasking: capacità di eseguire più processi o
threads “simultaneamente”
– Lo “scheduler” del kernel esegue un processo per un po’ di
tempo, poi lo ferma e passa l’esecuzione ad un altro
processo per un altro po’ di tempo, e così via. L’utente non
si accorge di questi passaggi.
– Con una cpu-multicore, i kernel moderni possono rendere
effettivamente parallela l’esecuzione dei threads,
eseguendo due o più “thread” contemporaneamente.
• Multi-user: diversi utenti possono effettuare il login e
usare simultaneamente il sistema operativo
– Linux e Windows supportano multitasking e multiutenza
(con meccanismo permessi)
Permessi degli utenti
• L’utente “administrator” (root in Linux) ha i permessi di controllo
globale sull’intero sistema.
• Gli utenti standard invece hanno permessi limitati (di uso generale
del sistema, e di modifica limitata esclusivamente al loro spazio
personale)
• I permessi degli utenti sui vari files sono in genere modificabili
dall’amministratore.
– In questo caso è consigliabile mantenere la configurazione di default.
• Suggerimento: configurare il proprio computer in questo modo, con
utente “admin” (login con password) usato per le modifiche
importanti, e utente standard per l’uso quotidiano
Windows vs Linux
• Windows è proprietario, Linux invece è “libero”
• Windows è molto più vulnerabile a virus, malware, etc.
• In teoria (dibattito aperto) Windows è molto più
soggetto a bug, essendo proprietario. Linux invece è
più controllato, e corretto costantemente dalla più
grande comunità che ci lavora.
• L’interfaccia testuale di Linux è molto potente.
– offre un controllo enorme della configurazione e
dell’esecuzione dei programmi, con più possibilità di
“debug”
– Possibilità di capire “cosa accade all’interno” del sistema
operativo (ottimo sistema di “log”, basato su files di testo)
Windows vs Linux
• I dispositivi hardware sono meglio supportati da
Windows
– Installazione drivers automatica in Windows, e
maggiore affidabilità nel loro funzionamento.
– …mentre in Linux le cose a volte sono più complicate
•
•
•
•
mancano i drivers
vanno installati manualmente
necessità di ricompilare i sorgenti del kernel
necessità di configurare il loro funzionamento manualmente
• Windows è più “user-friendly” (più facile da
usare)
Mac Os X
• Approfondimento
Per provare Linux
•
Dual Boot
– Installare Linux su un’altra partizione o un altro disco del proprio pc, e usare un bootloader all’avvio (grub o lilo)
• All’avvio quindi, si può scegliere se far partire windows o linux
•
Live CD
– Usare Linux direttamente da cd-rom o chiavetta, avviandolo all’accensione del computer
– Molto utile anche come metodo per effettuare operazioni di manutenzione su sistemi
compromessi gravemente, o operazioni di “computer forensic” (informatica forense)
•
Virtual Machine
– Creare una macchina virtuale (ad esempio usando Virtualbox o WMWare), e installarci
sopra Linux.
– Con VirtualBox si possono creare più macchine virtuali (installando su ognuna il sistema
operativo desiderato), collegarle in rete locale e fare test di hacking localmente
(raccomandazione, solo su di esse, non verso l’esterno) senza violare le leggi.
– La macchina virtuale, se configurata come si deve, è un sistema di difesa dagli hacker
– In certi casi è pure usata come “esca”
Comuni distribuzioni Linux
• Ci sono tantissime distribuzioni Linux
• Il kernel e gli elementi di base sono gli stessi.
• Ma si differenziano nella gestione dei pacchetti (i
programmi, il software), nella loro configurazione
in alcuni casi, e spesso nell’interfaccia grafica
– Distribuzioni più comuni
• Ubuntu (grande supporto hardware, molto user-friendly)
• Debian (discreta stabilità e sicurezza, ottimo sistema
gestione pacchetti software)
• Slackware (per chi veramente vuole capire come funziona
Linux, ottima stabilità e sicurezza)
– Configurazione molto manuale, per esperti.
Scaricare Ubuntu Linux
• Andare sul sito Ubuntu
– www.ubuntu-it.org/download
• Scaricare il file .iso
– 32 bit o 64 bit (in base alla cpu che avete)
• Masterizzare l’immagine (il contenuto interno
strutturato) del file .ISO su chiavetta usb o DVD
– Far partire Ubuntu come Live DVD/USB
– Usare il file .iso per installare Ubuntu su una macchina
virtuale creata in precedenza con Virtual Box
Virtual Box
• www.virtualbox.org
• È un software che serve per creare macchine virtuali
• È possibile creare una macchina virtuale
– Inserire la ram da assegnare ad essa
– Decidere quanto spazio dare all’hard disk virtuale (che sarà
realmente un file di virtual box, con estensione .vdi)
– Selezionare il sistema operativo da virtualizzare e
assegnare al drive DVD virtuale il file.iso della distribuzione
linux, da noi scaricata (es. Ubuntu)
– Far partire la macchina virtuale, così l’installazione partirà
– A fine installazione, sarà possibile usarla, come se fosse un
normale computer