Il corso e’ concepito in due moduli. Nel primo modulo si presenta una trattazione del sistema calcolatore nel suo complesso, si introduce il repertorio delle istruzioni e i vari sottosistemi: processore, memoria e input/output. Durante le lezioni saranno discussi esempi concreti dei vari sottosistemi.
The student who successfully completes the course is expected to acquire: (i) some knowledge of the basic concepts of computer architecture; (ii) ability of using the Unix operating system.
Esame orale
The student will be assessed on his/her demonstrated ability to discuss the main course contents using the appropriate terminology. - The student's ability to explain correctly the main topics presented during the course at the board will be assessed. - The student must demonstrate the ability to put into practice and to execute, with critical awareness, the activities illustrated or carried out under the guidance of the teacher during the course.
Methods:
Nel secondo modulo si introduce lo standard de-facto dei sistemi operativi moderni (UNIX). Si spiega come i vari sottosistemi visti nel primo modulo sono resi disponibili e usabili attraverso astrazioni di più alto livello tipiche del sistema operativo stesso. Le domande a cui gli studenti sapranno rispondere sono: 1) come un sistema operativo abilita l’interazione dei sottosistemi visti nel primo modulo? 2) come si interagisce e si gestiscono processi? 3) quali sono le tecniche che abilitano la comunicazione tra processi sulla stessa piattaforma? 4) come si abilita la comunicazione tra piattaforme diverse? 5) come si realizzano e ottimizzano sistemi client-server?
Pre-esame orale
Programmazione C/C++
Fondamenti di Informatica e Sistemi Operativi.
Lezioni frontali ed esercitazioni pratiche al calcolatore
Delivery: face to face
Learning activities:
Attendance: Advised
Teaching methods:
Primo Modulo
Argomenti:
1) Funzionamento e intercessione di un elaboratore. Componenti, funzioni, interconnessioni, bus.
2) Memoria. Gerarchia di memoria, organizzazione, implementazione, cache.
3) Input/Output. Moduli, interruzioni, accesso diretto alla memoria.
4) Repertorio delle istruzioni. Istruzioni macchia, operandi, operazioni, metodi di indirizzamento.
5) Processore. Organizzazione, registri, ciclo fetch-execute, controllo.
7) Approfondimenti
Secondo Modulo
Argomenti:
1) UNIX overview. Panoramica dei sistemi UNIX: storia, sistema di accesso, files & directory.
2) I/O su file. Descrittori dei file, efficienza nel sistema di I/O, tipi di file, loro accesso, utenti e gruppi.
3) Libreria di standard I/O. Sottosistemi di standard input, output and error, buffering, stream, stream binari, alternative al sistema di standard I/O.
4) Processi (controllo, ambiente, segnali, relazioni). Layout di memoria di un programma C, librerie condivise, variabili d’ambiente, controllo dei processi (fork, exit), relazioni, chiamate a sistema e segnali principali (kill).
5) Comunicazione tra processi. Pipes, (popen, pclose), IPC (Message Queues, Semafori, Memoria condivisa, Sistemi client/server).
6) Comunicazione su rete (sockets, UDP, TCP). Socket, Descrittori del socket, addressing (byte ordering, formato indirizzi, lookups, associazioni), handshaking, trasferimento dati, opzioni socket, async I/O.
COMPUTER ARCHITECTURE AND ORGANIZATION: Functional blocks. Instruction format and addressing modes. Most important instructions. Programs. Subprograms. Bus. Central memory and cache memory. Static and Dynamic RAM. Interfaces. Interrupts. Bus Mastering. PC IBM: Intel x86 processors, commercial RAM chips. ARM processors. OPERATING SYSTEMS: Unix: the kernel, primitives, processes, file system, commands.
Struttura e progetto dei calcolatori, di David A. Patterson e John L. Hennessy, edito da Zanichelli (quarta edizione italiana condotta sulla quinta edizione americana)
R. Stevens e S. Rago, Advanced Programming in the UNIX environment, Addison-Wesley
M. Mitchell, J. Oldham e A. Samuel, Advanced Linux Programming, New Riders
G. Bucci, Architettura e organizzazione dei calcolatori elettronici, McGraw-Hill. W. Stallings, Computer Organization and Architecture, Prentice Hall. R. Stevens e S. Rago, Advanced Programming in the UNIX environment, Addison-Wesley. M. Mitchell, J. Oldham e A. Samuel, Advanced Linux Programming, New Riders.
Esame Orale