2. Who am i?
Casenove Matteo
Studente dell’ Università di Pisa
Vice Presidente @System
Membro di MinixGroupPisa
Collaborazioni con:
AIPSI : Associazione Italiana Professionisti
Sicurezza Informatica
Clusit : Associazione Italiana per la Sicurezza
Informatica
4. Definizione SO
Il Sistema Operativo è un insieme di programmi e strutture dati che
offre principalmente tre funzionalità:
Supporto agli sviluppatori: permette utilizzo delle chiamate di
sistema come interfaccia con la macchina(SysCall).
Astrazione dalle risorse: crea un’astrazione dell’hardware e lo
gestisce utilizzando politiche adeguate(Driver).
Protezione delle risorse: impedisce un uso incauto delle risorse e
un accesso non autorizzato alle informazioni(Livelli di Privilegi).
5. Tipologie di SO
Attualmente possiamo trovare 3 tipologie di SO
distinguibili in base alla loro struttura interna
Monolitici
Microkernel
Ibridi
Ognuno di questi ha delle particolarità che li
caratterizzano
6. SO Monolitici
I kernel Monolitici hanno un corpo unico: un
unico grande programma che gestisce risorse e
offre servizi.
Le varie parti del SO vengono integrate nel kernel tramite l’aggiunta di moduli
che pero’ risultano essere dipendenti l’uno dall’altro.
Il sistema in funzione delle operazioni da eseguire, ha due livelli di privilegio:
user mode e kernel mode.
I servizi offerti dal SO sono richiesti invocando delle system call che lavorano in
kernel mode.
Il meccanismo di comunicazione(IPC) è a memoria condivisa. Esso rende la
comunicazione veloce.
7. SO Monolitici
- Il sistema risulta difficile da
modificare e caratterizzato
dall'interdipenza dei moduli.
Ogni modifica comporta la
ricompilazione dell'intero
sistema e il singolo crash di un
elemento porta al crash
dell'intero sistema.
✓ Buona protezione dalla lettura
del codice da terzi.
✓ Le chiamate di sistema
risultano più efficienti,
utilizzando una IPC a
memoria condivisa.
8. SO Microkernel
I microkernel hanno una struttura a livelli:
kernel level e user level.
Il kernel level è minimale e diviso in piccoli moduli indipendenti che
implementano le funzionalità di base(system call, IPC, timer clock, scheduler).
Tutti gli altri servizi ( file system, driver ecc.) sono nello user level e sono tutti
dei processi indipendenti. Essi vengono chiamati Server.
Il meccanismo di comunicazione(IPC) è lo scambio di messaggi (send, receive).
9. SO Microkernel
- Diminuzione dall’efficienza del
sistema dovuta all’utilizzo dello
scambio di messaggi.
✓ La comunicazione tra i vari
processi viene fatta sfruttando le
primitive dei livelli
sottostanti( distinzione dei
privilegi ).
✓ Ogni processo è indipendente,
questo permette la modifica di
uno senza la ricompilazione del
tutto.
✓ Diminuzioni di vulnerabilità
strutturali, maggiore robustezza.
10. SO Ibridi
I Sistemi ibridi sono la combinazione di un
sistema microkernel con uno monolitico.
Usa una struttura a microkenel ma implementata come sistema monolitico.
Usa Server separati per i servizi del kernel (filesystem, driver ecc ) ma li
incorpora a livello kernel.
Non hanno una struttura particolare vera e propria. Possono essere definiti
come un Microkernel modificato.
Su questa struttura ci sono parecchie controversie e linee di pensiero.
11. SO Ibridi
Vantaggi e svantaggi sono un mix di quelli del so monolitico e del so
microkernel considendo che non viene sfruttata al massimo nessuna
delle due strutture
12. Concetti di base
Alla base di tutti i modelli di SO ci sono dei
concetti comuni:
Il Processo
La Memoria
Il FileSystem
I/O
! Ogni modello si caratterizza da come implementa questi concetti.
13. Il processo
E’ l’unità di base del sistema operativo. Esso
rappresenta l’istanza(esecuzione) di un
programma.
Ad un processo viene associata una memoria virtuale cioè uno spazio di
indirizzamento sul quale può leggero e scrivere. Essa non rappresenta la
memoria reale ma una sua astrazione.
Il SO tiene una tabella con tutti i processi e la utilizza per scegliere il
programma da eseguire.
Un processo ha un ciclo di vita nel quale può assumere diversi stati: creato,
esecuzione, pronto, bloccato, morto.
E’ rappresentato da una propria struttura che contiene tutte le informazioni che
lo descrivono.
14. Il processo: memoria
virtuale
Essa è grande quanto il massimo
numero indirizzabile. Nei sistemi
a 32bit è 4gb(232).
E divisa in 2 segmenti principali:
Il segmento testo
Il segmento data
i dati statici
lo heap
lo stack
15. La memoria
Per memoria del Sistema operativo si intende
come esso gestisce la RAM (o memoria non
permanente).
Il problema della gestione della memoria è molto articolato in quanto le
problematiche che entrano in gioco sono diverse.
Nel corso della storia c’è stata una evoluzione sulla gestione della memoria.
1. Tutta la memoria del processo veniva caricata in memoria.
2. Si caricava la memoria del processo divisa in segmenti.
3. Venne introdotto lo swap della memoria quando un processo usciva dallo
stato di esecuzione
4. Infine si introdussero i blocchi e le pagine.
16. La memoria
La maggior parte dei sistemi operativi attuali gestiscono la memoria usando il
paging e lo swap.
Si dividono i vari blocchi della memoria virtuale in pagine.
le pagine vengono caricate in memoria ogni volta che un indirizzo all’interno
della pagina viene referenziato. Questo viene fatto tramite l’utilizzo di una
struttura del sistema chiamata page table che mette in corrispondenza le
pagine della memoria virtuale con l’indizzo della pagina nella memoria reale.
Quando un processo cambia il suo stato la pagina viene swappata cioè viene
fatta una sua immagine e salvata in un file di swap.
18. Il FileSystem
E’ la parte del Sistema Operativo che fornisce
i meccanismi necessari per l’accesso e l’archiviazione
delle informazioni in memoria permanente.
(HD, DVD)
Esso permette di rappresentare concetti astratti come:
il File : unità logica di base
rappresentato da una struttura che contiene gli attributi che lo
descrivono( grandezza, tipo , proprietario ecc. ).
la struttura contiene anche gli indirizzi fisici di dove risiedono le
informazioni nella memoria(hd).
la Directory : insieme di file
Si posiziona tra le applicazioni e la periferica hardware creando un’interfaccia,
semplificando così l’accesso.
19. Il FileSystem
La directory ( cartella) è un’astrazione che raggruppa logicamente più
file :
una cartella può contenere più file
può contenere a sua volta altre cartelle
La struttura logica del file system è un albero di file e cartelle, la cui
struttura è definita dalle cartelle stesse.
20. I/O
Per I/O si intendono tutte le periferiche di Input e
Output che il sistema si trova a gestire.
Le periferiche di I/O si possono dividere in 3 categorie:
Periferiche a blocchi ( HD,DVD ) : si caratterizzano dal fatto
che permetto la lettura e la scrittura di un blocco
indipendentemente dagli altri. Possono essere indirizzate.
Periferiche a caratteri ( Tastiera, mouse, stampante ) : queste
forniscono o accettano un flusso di caratteri. Non possono
essere indirizzate.
Periferiche particolari che generano interrupts per segnalare un
particolare evento.
21. Implementazioni di SO
Delle tipologie precedentemente descritte di SO
esistono delle implementazioni più o meno famose
che descriveremo focalizzandoci in particolare su
una.
Implementazioni:
Monolitici Linux ( !! Vedremo una spiegazione dettagliata)
Microkernel Minix3
Ibridi Windows ( NT, 2000, XP, Vista )
22. Windows
(Slide molto critica)
Windows è un sistema implementato ibrido.
La sua struttura complessa è fatta in modo da proteggere il più
possibile il codice del sistema.
In Windows sono implementate tutte le politiche che si possono trovare in giro:
politiche molteplici di scheduling( priorità dei processi )
politiche macchinose sui processi (creazione e comunicazione)
filesystem complicati e poco compatibili con gli altri standard
L’idea di implementare tutto nel sistema e non focalizzarsi in un aspetto in
particolare crea la caoticità del sistema della Microsoft.
23. Minix3
I sistemi a microkernel non sono molto sviluppati, per quanto la
loro struttura offre maggiori vantaggi rispetto alle altre. Si trovano
principalmente in ambiti di ricerca eccetto alcuni casi(AIX della
IBM o Mach) e utilizzati spesso in sistemi Embedded.
Minix3 è un sistema a microkernel implementato per
la didattica da Andrew S. Tanenbaum.
Semplice alla lettura e alla modifica.
Completo
Modulare
In molti aspetti simile a Unix (standard POSIX)
Open Source
24. Linux
Linux è un sistema monolitico sviluppato da Linus
Torvald.
La licenza Open Source è stata il punto di forza di Linux che gli ha
permesso un grande sviluppo nel corso degli anni.
Le funzionalità del sistema vengono aggiunte tramite l’integrazione
di nuovi moduli al kernel.
I principi di base del sistema sono molto semplici permettendo una
buona scrittura degli applicativi.
Permette l’accesso e la gestione completa del sistema avendo un
pieno controllo della macchina e una sua configurazione oculata per
le proprie esigenze.
25. Linux: processi
I processi in linux sono integranti con il concetto di
thread. Essi sono implementati a livello kernel e
vengono schedulati come unità di base.
I thread sono un flusso di esecuzione all’interno di un processo
un processo può avere più thread
i thread di uno stesso processo lavorano parallelamente
e in modo indipendente l’uno dall’altro.
I processi in linux rispettano tutte le caratteristiche già descritte
precedentemente.
Ogni processo ha una propria e l’accesso è limitato a questa, cioè
non può accedere alla memoria di un altro processo.
La comunicazione tra i processi è permessa utilizzando meccanismi
forniti dal SO, ad esempio pipe o socket.
26. Linux
Un processo può essere creato(lanciato):
alucard@Gentoox /mnt/archivio/Musica/Afterhours $ mplayer Afterhours - Quello Che Non C'é.mp3
.......
==========================================================================
AO: [oss] 44100Hz 2ch s16le (2 bytes per sample)
Inizio la riproduzione...
A: 10.6 (10.5) of 369.0 (06:09.0) 0.9%
E’ possibile vedere la lista dei processi attivi nel SO:
alucard@Gentoox ~ $ ps au
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 3923 3.4 4.7 33540 24376 tty7 Ss+ 13:04 0:02 /usr/bin/X -nolisten tcp -br -deferglyphs 16 -auth /var/run/
slim.auth vt07
root 4071 0.0 0.1 1696 664 tty1 Ss+ 13:04 0:00 /sbin/agetty 38400 tty1 linux
alucard 4124 0.0 0.3 3064 1600 pts/0 Ss+ 13:04 0:00 bash
Un processo può essere ucciso:
alucard@Gentoox ~ $ kill -9 4071
27. Linux: fileSystem
La struttura che rappresenta il file è chiamata inode . Rispecchia
tutte le caratteristiche descritte nell’introduzione.
Quasi tutto in linux è visto come un file:
File regolari
Directory : Le directory sono semplicemente file che elencano un
insieme di file.
Link simbolici : File che si riferiscono al nome di un altro file
Device e periferiche : File speciali che rappresentano i dispositivi.
E’ possibile interfacciarsi con il dispositivo come se fosse un
normale file( read e write ).
Altri: pipe socket.
28. Linux: fileSystem
Il filesystem di linux rispecchia la struttura ad albero.
La radice chiamata / (root) ha diverse sottodirectory ognuna con un
particolare scopo.
29. Linux: varie versioni
( distrubuzioni )
Di linux sono molte versioni che si differenziano da dettagli
implementativi anche se il kernel rimane sempre lo stesso.
Debian
Ubuntu*
Gentoo
Slackwere
RedHat
Suse
Mandriva
Ecc..