Obiettivi
La prima parte del corso è dedicata a comprendere la struttura di un calcolatore seguendo un percorso di approfondimento a partire dal livello della programmazione fino al livello delle porte logiche. L’obiettivo della seconda parte è sia quello di ampliare la conoscenza della programmazione, acquisita nel corso di Fondamenti di Informatica, approfondendo le tecniche di programmazione parallela e concorrente, sia quello di comprendere e approfondire lo studio del sistema operativo.
Programma delle lezioni e delle esercitazioni
1. Istruzioni macchina, assemblaggio e collegamento
1.1 Classi di istruzioni macchina e modalità di indirizzamento
1.2 La realizzazione di sottoprogrammi
1.3 Linguaggio Assembler, assemblaggio e collegamento
1.4 Traduzione di semplici programmi C in linguaggio Assembler
2. Microarchitettura
2.1 Struttura interna di un processore
2.2 Estensioni per architetture in pipeline
2.2 Funzionamento delle memorie Cache
3. Il livello dei circuiti logici
3.1 Algebra di Boole e Porte logiche fondamentali
3.2 Funzioni combinatorie, principali circuiti combinatori e ALU
3.3 Bistabili e sincronizzazione
3.4 Banchi di registri e memoria
4. Programmazione di sistema e programmazione concorrente
4.1 Parallelismo e processi
4.2 Thread
4.3 Programmazione concorrente
5. Struttura del Sistema Operativo
5.1 La gestione dei processi
5.2 La gestione della memoria virtuale
5.3 Il File System
5.4 I gestori delle periferiche
Prerequisiti Il prerequisito ideale consiste nell'avere superato l'esame di Fondamenti di Informatica; è comunque indispensabile avere almeno la capacità di scrivere semplici programmi in linguaggio C.
|