
Il computer non è specializzato in un solo compito, può svolgere molte funzioni diverse.
La finalità cambia a seconda del programma eseguito (testi, filmati, progettazione, musica, giochi, ecc.).
Generalità e programmabilità
Velocissimo esecutore di programmi, capace di miliardi di operazioni.
Se il programma è errato, produce errori molto velocemente (esempio sonda Mariner).
Potenza e rischi degli errori
Natura e uso del computer
Hardware: componenti fisici tangibili (monitor, tastiera, mouse, webcam, stampanti).
Software: dati e istruzioni che regolano il funzionamento (sistema operativo, browser, programmi vari).
Programma speciale che sovrintende tutte le operazioni.
Gestisce sia hardware sia software e permette l’interazione utente–computer.
Sistema operativo come ponte
Hardware, software e sistema operativo
Dati espressi tramite codifiche (numeri, caratteri, immagini, suoni).
Numeri anche in base 2 (binaria), non solo base 10; introduzione a “base N”.
Codifica dei dati e basi numeriche
Bit (0/1) e byte (8 bit) per rappresentare numeri e testo.
Tabelle di codifica: ASCII (1 byte, fino a 256 caratteri) e Unicode (2 byte, fino a 65.536 caratteri).
Codifica binaria e caratteri
Rappresentazione dell’informazione
Memoria interna (RAM): contiene dati e istruzioni dei programmi in esecuzione, è volatile e ad accesso diretto.
Memoria esterna/di massa: conserva dati e programmi in modo persistente, capacità maggiore ma tempi di accesso più lenti.
– Cinque elementi principali
CPU (processore): esegue le elaborazioni, controlla trasferimenti di dati e programmi, legge/decodifica/esegue istruzioni.
Bus di sistema e interfaccia alle periferiche: il bus collega le unità funzionali, l’interfaccia gestisce tastiera, video, mouse e altre periferiche esterne.
– Processore, bus, interfacce
Componenti principali della macchina
Architettura della macchina di von Neumann
Fase di istruzione (fetch): lettura da memoria dell’istruzione da eseguire e sua decodifica da parte della CPU.
Fase di esecuzione: lettura degli operandi, esecuzione dell’istruzione, memorizzazione del risultato.
Modello sequenziale: la CPU esegue un passo del ciclo per ogni colpo di clock, procedendo istruzione dopo istruzione.
Necessità di caricamento in RAM: per essere eseguito, un programma deve prima essere caricato nella memoria centrale.
- Caratteristiche del modello
Celle e indirizzi: la RAM è una sequenza ordinata di celle, ciascuna con un indirizzo univoco, contenente una parola.
Memoria volatile ad accesso diretto: lettura/scrittura illimitata, ma perdita del contenuto allo spegnimento.
– Struttura e proprietà della RAM
Registro indirizzi e registro dati: la CPU usa il registro indirizzi per indicare la cella e il registro dati per contenere la parola letta/scritta.
Lettura/scrittura: in lettura la CPU copia il contenuto della cella nel registro dati; in scrittura copia dal registro dati alla cella, sovrascrivendo il contenuto precedente.
– Indirizzi, registri e operazioni di copia
Memoria centrale (RAM) e accesso
Caratteristiche generali: permanenti, grande capacità, accesso più lento della RAM.
Memoria magnetica: floppy disk (storico), hard disk interni/esterni con dischi, tracce, settori e testine.
Memoria ottica: CD e DVD, basati su laser, con zone opache/riflettenti, versioni ROM, registrabili e riscrivibili.
Pen drive: supporti esterni recenti a stato solido.
Formattazione: suddivisione del disco in settori e tracce che formano blocchi indirizzabili.
FAT e file: File Allocation Table per collegare i blocchi che compongono un file, indicando blocco iniziale e successivi.
Controller: interfaccia che gestisce il flusso dati tra CPU e dispositivo di memoria, nascondendo la gestione dei blocchi.
Organizzazione su disco e controller
Dispositivi di memoria di massa
Porte seriali: collegamento uno-a-uno, 2 linee (trasmissione/ricezione), invia un bit per volta; usata per modem, vecchie stampanti, periferiche.
Porte parallele: trasmettono più bit per volta (es. 8), usate per stampanti e alcuni dispositivi esterni, più veloci delle seriali.
SCSI: interfaccia per collegare in cascata più periferiche (fino a ~8) sulla stessa porta; oggi in disuso.
Collegamenti cablati tradizionali
USB e FireWire: connessione in cascata di molte periferiche, velocità elevata, supporto hot plug e alimentazione delle periferiche.
Bluetooth: collegamenti a breve distanza (cellulari, stampanti, periferiche).
Wi-Fi: connessioni radio a media distanza, per reti e dispositivi.
Collegamenti moderni e wireless
Porte di comunicazione e collegamenti
Periferiche di input: inviano dati e comandi al computer (tastiera, mouse, joystick, tavolette grafiche, touch screen, scanner, microfono).
Tastiera: tasti alfanumerici, funzione, cursore, tastierino numerico, escape; layout QZERTY vs QWERTY; driver associa tasti ai caratteri.
Mouse e alternativi: tecnologie a sfera e ottico; bottoni gestiti da driver; alternative come trackpad, tablet grafico, joystick, trackball.
Periferiche di input e dispositivi di puntamento
Schermo: pixel come unità minima; risoluzione in dpi; tecnologie CRT, LCD, Plasma.
Stampante: output principale dopo lo schermo; risoluzione in dpi; tecnologie laser, getto d’inchiostro, a impatto.
Periferiche di output: schermo e stampante
Periferiche di input e output
Dispositivi di memoria e di input/output
Basata su grandezza fisica continua che varia proporzionalmente al dato.
Esempi: segnale elettrico per audio, termometro a mercurio.
Rappresentazione analogica
Il dato è suddiviso in “pezzi”, ognuno rappresentato da un numero.
Esempi: pixel nelle immagini, ASCII per caratteri, campionamento audio; più campioni e precisione = meno disturbo ma più dati.
Codifica/decodifica tra digitale e analogico è fondamentale nelle comunicazioni di rete.
Rappresentazione digitale
Rappresentazione dei dati (analogica vs digitale)
Ogni livello ha un’interfaccia con quello sopra e sotto; interazione lungo piani orizzontali.
Strato inferiore: hardware, incluso firmware.
Sistema operativo: maschera l’hardware; hardware+SO = “macchina astratta”.
Programmi applicativi: usano servizi del SO e creano una macchina astratta per l’utente.
Utente: interagisce con il sistema operativo o tramite programmi.
Ruolo di sistema operativo, programmi e utente
Schema a livelli gerarchici (astrazione del sistema)
Supercomputer: massima potenza, migliaia di processori, enormi capacità di calcolo.
Mainframe: per grandi organizzazioni e grandi quantità di dati.
Workstation: potenza inferiore ai mainframe, usate in CAD/CAM.
Personal Computer: uso personale, includono portatili.
Dispositivi mobili e microcontroller: PDA, smartphone, palmari; microcontroller integrati in altri apparati.
Tipi di computer per potenza di calcolo
Tecnologia a semiconduttore su silicio: CPU e RAM come chip.
Legge di Moore: densità degli elementi base nei chip raddoppia ogni 18 mesi.
Effetti: più potenza a parità di prezzo o stesso calcolo a prezzo minore.
Limiti futuri: vincoli fisici (velocità della luce, principio di indeterminazione), ma non immediati.
Legge di Moore e limiti fisici
Classificazione dei computer e Legge di Moore
Classificazioni e architetture dei calcolatori
Definizione: programma che controlla l’esecuzione dei programmi applicativi e funge da interfaccia tra applicazioni e hardware.
Obiettivi: semplicità, astrazione, efficienza, protezione.
Il SO è il primo software caricato all’accensione e prende il controllo del sistema.
Cos’è un sistema operativo e perché esiste
Servizi: esecuzione programmi, gestione memoria principale/secondaria, gestione I/O, rilevazione e gestione errori.
Multi-utente: gestione utenti, controllo accessi, accounting delle risorse.
Servizi offerti e gestione multi-utente
Definizione, obiettivi e servizi del sistema operativo
Hardware: strato inferiore.
Kernel: sopra l’hardware, gestisce risorse e nasconde dettagli.
System call: interfaccia tra kernel e software.
Librerie di sistema, tool di sistema + kernel = software di sistema.
Strati hardware, kernel e software di sistema
Software applicativo: gira sopra il software di sistema.
Figure: utente, amministratore di sistema, programmatore di sistema, progettista di sistemi operativi.
Software applicativo e figure che usano il SO
Struttura a strati: calcolatore, kernel e software
Gestore del processore (scheduler): organizza esecuzione dei processi.
Gestore della memoria principale: ripartisce RAM tra processi e tiene traccia di spazio occupato/libero.
Gestori dispositivi di I/O: astraggono l’hardware e offrono interfacce comuni.
Gestore della memoria secondaria e file system: astrazione di file/directory e gestione spazio su disco.
Protezione e sicurezza: meccanismi trasversali di controllo accessi.
Componenti principali del sistema operativo
Interrupt: eventi hardware/software che sospendono l’attività corrente e trasferiscono il controllo al SO.
Esempi: tasto tastiera, fine lettura disco, system call, errori.
Il SO esegue routine di gestione e poi torna al processo precedente o cambia processo (context switch).
Gran parte del kernel gira dentro le routine di interrupt.
Interrupt e funzionamento dinamico del SO
Componenti interni e interrupt nei sistemi operativi
Sistemi operativi: ruolo, struttura, componenti
Processo: esecuzione di un algoritmo o attività controllata da un programma.
Programma = entità statica; processo = entità dinamica.
Stato di un processo: immagine di memoria (codice+dati+strutture SO), immagine nel processore (registri, PC), stato di avanzamento.
Definizione e stato di un processo
In esecuzione (running): sul processore.
Pronto (ready): eseguibile ma in attesa di CPU.
In attesa (waiting): sospeso in attesa di evento (es. I/O).
Interrupt e richieste I/O causano passaggi tra stati.
Ciclo di vita e stati (running/ready/waiting)
Cos’è un processo e come “vive”
Multiprogrammazione: durante I/O di un processo, la CPU esegue altri processi.
Time-sharing: tempo CPU diviso in quanti; allo scadere del quanto si passa ad altro processo.
Vantaggi: uso efficiente risorse, percezione di CPU dedicata nei sistemi interattivi.
Multiprogrammazione e time-sharing
Scheduler: decide quale processo eseguire.
Code: processi pronti, code per dispositivi I/O.
Politiche: FCFS e altre più complesse.
Context switch: salvataggio stato processo sospeso e caricamento stato processo successivo.
Scheduler, context switch e code di processi
Multiprogrammazione, time-sharing e scheduler
Lanciare nuovi programmi.
Terminare processi in esecuzione.
Terminare processi bloccati (Task Manager, comando kill).
Cosa può fare l’utente con i processi
fork(): creare nuovi processi.
exec(): eseguire nuovo programma in un processo.
exit(): terminare processo.
signal(), kill(): sincronizzazione e segnali.
send(), receive(): comunicazione fra processi (IPC).
Primitive per programmatori (creazione, esecuzione, comunicazione)
Interazione con i processi e primitive di controllo
Organizza la memoria principale e può usare il disco per emulare più RAM.
Compiti: tracciare memoria libera/occupata, allocare/deallocare memoria ai processi.
Gestore della memoria (Memory Manager)
Ogni processo ha uno spazio di indirizzamento logico.
MMU traduce indirizzi logici in fisici usando strutture preparate dal SO.
Obiettivi: astrazione della memoria fisica, protezione, illusione di memoria dedicata per ogni processo.
MMU e spazio di indirizzamento logico
Gestore della memoria e MMU
Solo parte di codice/dati di un processo deve stare in RAM in un dato momento.
Memoria virtuale: esecuzione di processi parzialmente in RAM e parzialmente su disco.
Obiettivo: eseguire più processi o processi più grandi di quanto consenta la RAM fisica.
Definizione e obiettivi della memoria virtuale
Vantaggio: aumento apparente della memoria disponibile.
Rischio: troppi accessi a pagine su disco causano degrado prestazioni (thrashing).
Tutti i SO moderni supportano memoria virtuale.
Vantaggi, rischi e prestazioni
Memoria virtuale: concetto e impatto sulle prestazioni
Memoria logica suddivisa in pagine; memoria fisica in frame.
Ogni pagina può trovarsi in RAM o su disco.
Paginazione a richiesta (demand paging)
MMU traduce indirizzi di pagina in frame.
Se pagina non è in RAM: SO la carica in frame libero; se non ci sono frame, sostituisce pagina poco usata.
Obiettivo: massimizzare accessi a pagine già in RAM per buone prestazioni.
Ruolo della MMU e politica di sostituzione
Paginazione a richiesta e traduzione pagine/frame
Gestione I/O è cruciale per le prestazioni globali.
Ogni dispositivo: controllore hardware che riceve richieste dal SO e dialoga col dispositivo, spesso con DMA.
Ruolo della gestione I/O e controller
Driver: controparte software del controllore, fornisce interfaccia astratta (“leggi file”).
Controller implementa meccanismi semplici; driver implementa politiche complesse.
Distribuzione driver: inclusi nel SO o forniti a parte; in Linux spesso sviluppati dalla comunità.
Driver: controparte software e politiche
Dispositivi di I/O: controller e driver
CPU invia richiesta e resta in busy waiting controllando la fine dell’operazione.
Poco efficiente: CPU sprecata in attesa.
Interrupt-driven I/O: CPU invia richiesta e lavora su altro; interrupt segnala fine operazione.
DMA: controllore trasferisce dati direttamente in memoria; CPU riceve interrupt solo a trasferimento completato.
DMA è il meccanismo più efficiente per grandi quantità di dati.
Interrupt-driven I/O e DMA
Modalità di I/O: Programmed I/O, interrupt, DMA
Memoria secondaria contiene codice/dati di tutti i programmi.
Ottimizzazione tramite gestione coda richieste e caching.
Analogia ascensore: riordinare richieste riduce spostamenti testina e tempi di accesso.
Scheduling delle richieste su disco
Cache: copia in RAM dei dati su disco più usati o recenti.
Obiettivo: ridurre accessi a disco.
Combinare scheduling e caching migliora notevolmente le prestazioni.
Cache di memoria secondaria
Gestione della memoria secondaria: scheduling e caching
Media fisici diversi (dischi, CD, nastri) con organizzazioni differenti.
Tutti possono essere visti come insiemi di blocchi.
File system offre astrazione unica basata su file e directory.
Ogni OS ha file system nativi; non tutti sono compatibili tra sistemi.
Perché serve un file system, file e astrazione dei media
Attributi: nome, locazione, dimensione, tempi, proprietario, permessi.
Tipi di file: via estensione (es. .txt) o numero magico (es. %PDF).
Attributi dei file e tipi di file
Concetto di file system, file e attributi
create(), open(), close(), read(), write(), append(), lseek(), unlink(), ftruncate(), fstat(), chown(), chmod.
Interfaccia uniforme indipendente dall’organizzazione fisica.
Operazioni fondamentali sui file
Diversi tipi (FAT, NTFS, ext, ecc.).
Codice del SO per interpretare metadati è specifico, quindi non sempre leggibili ovunque.
Tipologie di file system e dipendenza dall’OS
Operazioni sui file e API
Directory: contiene file e altre directory, struttura ad albero con radice.
File: foglie dell’albero.
Ogni file è identificato da un path (es. /b/x/5.txt).
File system ad albero puro: file in una sola directory (FAT, NTFS).
UNIX/Linux: link per raggiungere file da più percorsi.
Directory e struttura gerarchica
Ogni processo ha una directory corrente.
Path assoluto: dalla radice; relativo: dalla directory corrente.
Notazione .. indica la directory genitore.
Vantaggi: nomi più brevi per l’utente, percorsi più corti per il SO.
Programmatore: crea/cancella/rinomina directory; lettura directory tramite open/read/close; niente scrittura diretta, gestita dalle operazioni sui file.
Directory corrente, path assoluti/relativi e notazione
Directory, struttura ad albero, path e collegamenti
Sicurezza: meccanismi di controllo accesso alle risorse.
Obiettivi CIA: confidenzialità, integrità, disponibilità.
Definizione e obiettivi della sicurezza
Autenticazione: associare utente a identità nota.
Autorizzazione: verificare diritti su risorse.
Protezione: impedire operazioni non autorizzate.
Obiettivi e problemi fondamentali della sicurezza
Rischi: password visibili, banali, attacchi dizionario/forza bruta.
Password sicura: ≥8 caratteri, mix di lettere/numeri/simboli, senza significato.
Attacchi: login spoofing, sniffing; serve canale sicuro.
Autenticazione basata su password
Hardware: token, smart card, generazione di password diverse ogni volta, spesso combinata con password.
Biometrica: impronte, voce, retina, tratti somatici; molto sicura ma costosa.
Autenticazione hardware e biometrica
Autenticazione: meccanismi e rischi
Processi agiscono per conto degli utenti.
Utente specifica diritti; SO controlla ogni system call.
Esempio: verifica permessi prima di open() su file.
Meccanismo di autorizzazione
Principio di privilegio minimo
Autorizzazione e protezione
file:///C:/Users/lucac/Downloads/cap 2.html