Il kernel di Linux è il cuore del piu’ popolare e completo s.o. open source Unix-like.
Il codice sorgente è liberamente disponibile al pubblico Linux per modifiche ed installazione.
Oggi molto diffuso su servers, desktop computers e sistemi embedded
↓
Numerosi vantaggi per gli utenti
↓
RAPIDISSIMA DIFFUSIONE
Versione 0.1 creata nel 1991 da Linus Torvalds a partire dal s.o. “didattico” Minix e dagli strumenti sw sviluppati da Stallman nel progetto GNU.
Guidati da Torvalds, una comunità di sviluppatori rilascia la versione 1.0 nel 1994
Versione 2.0 nel 1994
Versione 2.6 nel 2003
Nate per facilitare il processo di installazione e configurazione del sistema, nonché il suo uso.
Di solito includono:
Distribuzioni famose:
A differenza di Windows e MacOS X, il kernel di Linux non specifica una interfaccia grafica utente (il desktop).
L’accesso standard al sistema è attraverso interfacce “a linea di comando” chiamate shell (Bourne shell, C shell, Bourne again shell).
Le comuni interfacce grafiche fanno parte delle distribuzioni e sono costituite da 3 livelli:
Responsabile per:
Linux non fa differenza tra processi e thread:
Oltre ai task_struct (una per processo) il kernel mantiene una tabella dei processi.
Ogni processo è identificato univocamente da un Process ID.
Un metodo hashing consente un accesso veloce alla tabella dei processi.
Un task può generare altri tasks mediante la chiamata di sistema clone.
Mediante tale funzione e’ possibile specificare quali risorse (memoria, registri, stack, descrittori di file) far condividere tra task padre e task figlio.
I task sono le unità di schedulazione da parte del kernel, quindi i threads generati con clone hanno una naturale implementazione uno-uno.
40 livelli di priorita’: da -19 (la massima) a 20 (la minima).
I task vengono eseguiti secondo l’ordine di priorità.
Ogni livello gestito in modalità round robin.
Quanto di tempo q variabile a secondo della priorità
Ogni task è in esecuzione fino a:
EPOCA =
Periodo di tempo predefinito (starvation limit) entro cui tutti i processi sono eseguiti almeno una volta
Alla creazione di un processo si assegna un valore di default q= Q = 200ms.
Quando i processi esauriscono il loro quanto oppure scade la starvation limit tutti i processi passano allo stato expired e non possono essere più schedulati.
All’inizio di una nuova epoca il nuovo quanto di tempo q viene ricalcolato come
q = Q + T/2
(priorita’ maggiore)
Dove T è il tempo non usato nell’epoca precedente (es. erano bloccati per I/O).
I task possono essere divisi in due classi
Ai task interattivi (I/O bound) si cerca di dare una priorità maggiore
Oltre allo scheduling a partizione di tempo, Linux gestisce anche la classe di scheduling real time.
I processi sono gestiti o con una coda FIFO senza prelazione o in modalità round-robin.
Per prevenire un utilizzo improprio possono essere creati solo dall’amministratore di sistema.
Segmentazione paginata
I dispositivi DMA sono in grado di indirizzare limitate quantita’ di memoria
I frame liberi sono organizzati in liste di frame adiacenti in numero pari a potenze di 2
Alle liste si accede attraverso un vettore
Utilizzato quando il kernel non riesce ad allocare pagine con il precedente meccanismo (es. 3 pagine e assenza di 1 e 2 frame liberi consecutivi).
Crea gruppi di frame in numero uguali a potenza di due,
2. Lo stallo dei processi – parte prima
3. Lo stallo dei processi – parte seconda
4. Lo stallo dei processi – parte terza
6. Il S.O. Linux – parte prima
7. Il S.O. Linux – parte seconda
8. Il S.O. Windows – parte prima
9. Il S.O. Windows – parte seconda
10. Il S.O. Windows – parte terza
11. I S.O. multimediali – parte prima
12. I S.O. multimediali – parte seconda
13. I S.O. multimediali – parte terza
14. I Sistemi Operativi distribuiti - parte prima
15. I Sistemi Operativi distribuiti - parte seconda
16. I Sistemi Operativi distribuiti - parte terza
17. I Sistemi Operativi distribuiti - parte quarta
18. I Sistemi Operativi distribuiti - parte quinta
19. I Sistemi Operativi distribuiti - parte sesta
Silberschatz , Galvin, Gagne – Sistemi Operativi 8a ed. Capitolo 21
Tanenbaum – Moderni sistemi operativi 3a ed. Capitolo 10
Deitel, Deitel, Choffnes - Sistemi operativi 3a ed. Capitolo 16
2. Lo stallo dei processi – parte prima
3. Lo stallo dei processi – parte seconda
4. Lo stallo dei processi – parte terza
6. Il S.O. Linux – parte prima
7. Il S.O. Linux – parte seconda
8. Il S.O. Windows – parte prima
9. Il S.O. Windows – parte seconda
10. Il S.O. Windows – parte terza
11. I S.O. multimediali – parte prima
12. I S.O. multimediali – parte seconda
13. I S.O. multimediali – parte terza
14. I Sistemi Operativi distribuiti - parte prima
17. I Sistemi Operativi distribuiti - parte quarta
18. I Sistemi Operativi distribuiti - parte quinta
19. I Sistemi Operativi distribuiti - parte sesta
I podcast del corso sono disponibili anche su iTunesU e tramite Feed RSS.