πŸ“š Sistemi Operativi

Appunti semplificati Β· UnitΓ  1 completa

01
Il Modello a Processi
Cos'Γ¨ un processo, gli stati, PCB, scheduling

Programma vs Processo

πŸ“„ Programma

È un file salvato sul disco. Non fa nulla da solo β€” Γ¨ fermo, come un libro chiuso sullo scaffale.

βš™οΈ Processo

È il programma mentre è in esecuzione. Ha memoria, usa la CPU, fa cose. È il libro aperto e in lettura.

I 3 modelli di interazione tra processi

🧍 Indipendente

Ogni processo fa la sua cosa senza comunicare con gli altri.

🀝 Cooperazione

Due processi si parlano e si scambiano dati per raggiungere un obiettivo comune.

βš”οΈ Competizione

Due processi vogliono usare la stessa risorsa allo stesso momento. Uno deve aspettare. Se nessuno cede β†’ blocco.

Gli stati di un processo

Un processo cambia stato durante la sua vita. Ecco il percorso:

πŸ†• NEW
β†’
βœ… READY
β†’
πŸƒ RUNNING
β†’
⏳ WAITING
πŸƒ RUNNING
β†’
🏁 TERMINATED
StatoCosa significa
NEWIl processo Γ¨ appena stato creato, ancora non fa nulla.
READYHa tutto ciΓ² che gli serve, tranne la CPU. Aspetta il suo turno.
RUNNINGLa CPU sta eseguendo le sue istruzioni. In esecuzione!
WAITINGAspetta qualcosa (es. dati dal disco). Non puΓ² andare avanti.
TERMINATEDHa finito. Il SO libera memoria e risorse.

Time-Slice e Scheduler

⏱️ Time-Slice (quanto di tempo)

La CPU non resta bloccata su un processo per sempre. Ogni processo ha un piccolo slot di tempo (time-slice). Scaduto il tempo β†’ tocca al prossimo.

Lo scheduler Γ¨ come un arbitro che gestisce chi gioca. Ogni giocatore (processo) ha un turno cronometrato. Quando scade il tempo, l'arbitro fischia e manda in campo il prossimo.

PCB – Process Control Block

πŸ“‹ PCB = Carta d'identitΓ  del processo

Il SO tiene traccia di ogni processo tramite un PCB. Contiene: PID (numero identificativo), stato attuale, Program Counter, registri, prioritΓ , memoria usata, risorse allocate.

πŸ” Context Switching

Quando si cambia processo, il SO salva tutto il PCB del processo che si ferma, e ricarica il PCB del processo che riparte. Chi fa questo lavoro si chiama Dispatcher.

πŸ“Š Process Table

È una tabella in RAM che contiene tutti i PCB di tutti i processi attivi. Il SO la consulta per gestire chi va in esecuzione.

Gerarchia dei processi

Ogni processo Γ¨ creato da un processo padre. Il figlio eredita risorse dal padre. L'unico processo senza padre Γ¨ init, il primo processo avviato dal sistema operativo.
02
Gli Interrupt
Cosa sono, come funzionano, ISR e Interrupt Vector

Il problema senza interrupt: il Polling

❌ Polling (metodo brutto)

La CPU controlla continuamente: "Sei pronta, periferica? Sei pronta? Sei pronta?" β€” finchΓ© non lo Γ¨. Nel frattempo non puΓ² fare nient'altro. Si chiama busy-waiting = spreco totale.

La soluzione: gli Interrupt

βœ… Interrupt = "interruzione"

La periferica manda un segnale alla CPU quando ha finito il suo lavoro. La CPU nel frattempo fa altro. Quando riceve il segnale, si ferma, gestisce l'evento, poi riprende da dove si era fermata.

Immagina di aspettare un pacco. Col polling usciresti ogni 5 minuti a controllare la porta. Con gli interrupt, il corriere suona il campanello quando arriva β€” tu stai facendo altro nel frattempo.

ISR – Interrupt Service Routine

πŸ› οΈ ISR = programma di gestione dell'interrupt

Quando arriva un interrupt, la CPU smette quello che sta facendo e esegue l'ISR: un programma speciale che sa come gestire quell'evento specifico. Finita l'ISR, la CPU riprende il processo interrotto.

Cosa succede step-by-step

1. Processo X in esecuzione
↓
2. Arriva un interrupt
↓
3. HW salva PC + PSW nello stack kernel
↓
4. CPU esegue l'ISR (modalitΓ  kernel)
↓
5. Scheduler decide chi va in esecuzione
↓
6. Il processo riprende da dove era rimasto

Interrupt Vector

πŸ“ Interrupt Vector = tabella degli indirizzi ISR

È una zona di memoria che dice: "Se arriva questo tipo di interrupt, vai a eseguire quella ISR lì". Una specie di rubrica degli interrupt.

ModalitΓ  Utente vs ModalitΓ  Supervisore

ModalitΓ Chi la usaCosa puΓ² fare
UtenteProgrammi normaliAccesso limitato
Supervisore (Kernel)Sistema OperativoAccesso completo a tutto l'hardware
Quando arriva un interrupt, la CPU passa automaticamente in modalitΓ  Supervisore per gestirlo. Poi torna in modalitΓ  Utente.
03
Risorse e Condivisione
Tipi di risorse, gestione, Grafo di Holt

Cos'Γ¨ una risorsa

πŸ’Ύ Risorsa = qualsiasi cosa usi un processo

CPU, RAM, stampante, disco, scheda di rete... I processi competono per le risorse perchΓ© spesso non ce ne sono abbastanza per tutti.

Pensa a una biblioteca: i libri sono risorse, gli studenti sono processi. Se un libro Γ¨ giΓ  in prestito, lo studente deve aspettare. Il bibliotecario (= SO) gestisce chi ottiene cosa.

Classificazione delle Richieste

Per numero
Singola / Multipla

Singola: chiede una sola risorsa alla volta.
Multipla: chiede piΓΉ risorse contemporaneamente (es. copia da HD a masterizzatore).

Per tipo
Bloccante / Non bloccante

Bloccante: se la risorsa non Γ¨ disponibile, il processo si ferma ad aspettare.
Non bloccante: il processo va avanti comunque, viene solo avvisato.

Classificazione dell'Assegnazione

πŸ“Œ Statica

La risorsa viene assegnata alla creazione del processo e rimane sua fino alla fine. Es: area di memoria del codice.

πŸ”„ Dinamica

La risorsa viene richiesta, usata e poi rilasciata durante la vita del processo. Es: stampante, RAM del browser.

Classificazione delle Risorse

TipoSignificatoEsempio
Seriale Un processo alla volta. Gli altri aspettano in coda. Stampante, CD-ROM
Non seriale PiΓΉ processi possono usarla contemporaneamente. File in sola lettura
Prerilasciabile PuΓ² essere "tolta" al processo senza danni. CPU, RAM
Non prerilasciabile Se la togli, rovini il lavoro in corso. Stampante, masterizzatore

Grafo di Holt

πŸ“Š Grafo di Holt = mappa visiva di chi usa cosa

Serve per capire la situazione tra processi e risorse in un dato momento.

Riduzione del Grafo di Holt

Un processo che non sta aspettando nessuna risorsa (ha solo frecce entranti) sicuramente finirΓ  presto e libererΓ  tutto. Puoi "eliminarlo" dal grafo = riduzione. Se puoi ridurre tutto il grafo, non c'Γ¨ blocco.
04
I Thread (Processi Leggeri)
Cos'Γ¨ un thread, differenze con i processi, stati, User/Kernel level

Processo "pesante" vs Thread "leggero"

Processo pesante
πŸ‹οΈ Processo

Ha tutto: memoria, risorse, codice, dati. Il context switch Γ¨ lento e costoso (deve salvare e ripristinare tutto).

Processo leggero
πŸͺΆ Thread

È solo il flusso di esecuzione dentro un processo. Condivide memoria e risorse con gli altri thread dello stesso processo. Il context switch è veloce.

Un processo Γ¨ una fabbrica (con macchinari, operai, magazzino). Un thread Γ¨ un singolo operaio che lavora dentro quella fabbrica. PiΓΉ operai (thread) condividono gli stessi macchinari (risorse).

Cosa condividono i thread di uno stesso processo

Cosa ha di suo ogni thread (TCB)

πŸ“‹ TCB = Thread Control Block

Ogni thread ha il suo: Program Counter, Stack, Stato dei registri, priorità. È la sua "carta d'identità personale".

Esempi reali di thread

Word

Thread 1: legge la tastiera
Thread 2: controlla l'ortografia
Thread 3: salvataggio automatico

Browser

Thread 1: disegna la pagina
Thread 2: esegue JavaScript
Thread 3: scarica immagini

Stati di un thread

StatoSignificato
IdleCreato ma non ancora avviato
ReadyPronto, aspetta la CPU
RunningIn esecuzione
BlockedAspetta un'operazione hardware (es. lettura disco)
SleepingSospeso per un tempo definito (es. ogni 30 secondi)
WaitingAspetta che un altro thread finisca
DeadHa terminato

User-Level vs Kernel-Level

User-Level
πŸ“¦ Gestiti da librerie

Il SO non sa che esistono. Gestiti da librerie apposite. Veloci nel context switch. Esempio: UNIX.

Kernel-Level
πŸ”§ Gestiti dal SO

Il SO li conosce e li schedula. PiΓΉ flessibili, sfruttano meglio i multiprocessori. PiΓΉ lenti nel context switch. Esempio: Linux, Windows.

I 4 scenari di sistema

SistemaProcessiThread per processo
MS-DOS11
UNIX classicoMultipli1 per processo
JVM (Java)1Multipli
Linux / WindowsMultipliMultipli per processo
⚠️ Nota importante sui thread

Se un processo termina, tutti i suoi thread terminano. Ma un singolo thread puΓ² terminare senza fermare il processo o gli altri thread.