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