- I sistemi di numerazione posizionali
- I sistemi di numerazione binario, ottale ed esadecimale
- Conversioni tra basi: binario-decimale e viceversa, ottale-decimale e viceversa, esadecimale-decimale e viceversa, binario-esadecimale e viceversa
- Aritmetica binaria ed esadecimale: somme, sottrazioni, moltiplicazioni e divisioni
- Concetto di informazione e sua rappresentazione all'interno di un calcolatore
- Rappresentazione dei numeri interi con e senza segno su N posizioni binarie: modulo e segno, complemento a 1 e complemento a 2
- Il codice BCD
- La rappresentazione in virgola mobile dei numeri reali con segno secondo lo standard IEEE 754 a 32 bit
- La codifica dei caratteri alfanumerici: codifica ASCII e UNICODE
I SISTEMI OPERATIVI
- Obiettivi e funzioni di un S.O
- Caricamento del S.O. (bootstrap)
- Tipologie dei S.O. ed evoluzione: dedicati, batch, multi programmati, real-time, di rete e sistemi operativi per dispositivi mobili
- La classificazione dei S.O. in base alla modalità di gestione dei programmi (mono-programmazione, multiprogrammazione) e in base al tipo di accesso fornito agli utenti (monoutente, multiutente)
- La struttura gerarchica e organizzazione di un S.O.: gestore dei processi, gestore della memoria, gestore delle periferiche, gestore delle informazioni e interprete dei comandi
- Modello monolitico e modello a microkernel
- Stato utente e stato supervisore
- I concetti di processo e risorsa
- Assegnazione delle risorse: statica, dinamica, in mutua esclusione, con o senza prerilascio
- Le politiche di assegnazione delle risorse
I PROCESSI E I THREAD
- Programmi e processi in Windows
- Stati di un processo e transizioni di stato
- Generazione e terminazione dei processi
- Lo schedulatore dei lavori, lo schedulatore dei processi e i descrittori
- Le politiche di schedulazione
- Le interruzioni hardware e software e i passaggi di stato (il concetto di context switch)
- Parametri per la valutazione delle prestazioni di un S.O.: percentuale di attività della CPU, throughput e overhead
- Le problematiche nei sistemi operativi multi-tasking: concetto di concorrenza tra processi e competizione per l'uso le risorse
- La situazione di stallo (deadlock): gestione dello stallo con tecniche di prevenzione e tecniche di riconoscimento e risoluzione del problema
- La situazione di starvation
- Algoritmo del barbiere
- I filosofi a cena
- Le politiche di schedulazione del processore (senza prerilascio): FCFS, SJF, a priorità e (con prerilascio): SJF, Round Robin e sue varianti (a percentuale di tempo, con priorità dinamica e a code multiple con feedback)
- Schedulazione nei sistemi multi-core (coda unica e code separate)
- Concetti di multielaborazione simmetrica e asimmetrica
- Cenni al tipo di schedulazione in Windows XP e in Linux
LA GESTIONE DELLA MEMORIA
- Le memorie di un computer
- Compiti del gestore della memoria
- Caricamento di un programma: dal programma eseguibile al processo in esecuzione
- Spazio logico e spazio fisico: traduzione degli indirizzi
- Concetto di programma rilocabile: rilocazione statica e dinamica
- Allocazione della memoria
- Partizioni fisse e frammentazione interna
- Partizioni variabili e frammentazione esterna
- Paginazione. Tabelle delle pagine e dei frame
- Memoria virtuale e memoria virtuale con paginazione
- Concetti di page fault e paginazione a richiesta. Algoritmi di scelta della pagina vittima: FIFO, LRU, LFU
- Organizzazione della memoria in Windows e Linux
LA GESTIONE DEL FYLE-SYSTEM
- Gestione del file-system
- La visione dell'utente: file e directory
- Organizzazione del file-system nell'unità di memorizzazione
- Ottimizzazione delle prestazioni del file-system
- Il file-system in Windows e Linux