Lo studente che segue il corso e supera l'esame acquisisce una solida conoscenza dei sistemi a singolo processore basati sull'architettura AMD64, incluso il suo linguaggio Assembler, il meccanismo delle interruzioni, i metodi di protezione e la paginazione. Inoltre, sarà in grado di capire come tali meccanismi possono essere utilizzati per realizzare un semplice, ma funzionante, nucleo di Sistema Operativo multiprogrammato.
The student who successfully completes the course will be able to demonstrate a solid knowledge of a (simplified) IA32 based single processor computer architecture. He or she will be able to understand the fine details of the execution of programs on this architecture, and will be able to modify a simple kernel that implements protection, shared memory multiprogramming, virtual memory and peripheral I/O access.
Le conoscenze dello studente verranno verificate durante la prova orale dell'esame finale
- 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:
Lo studente sarà in grado di scrivere programmi misti C++/Assembler per l'architettura AMD64 e modificare un semplice nucleo didattico che implementa la multiprogrammazione con memoria condivisa, la memoria virtuale e l'accesso alle periferiche di I/O.
Le capacità dello studente saranno verificate durante la prova pratica al calcolatore, parte dell'esame finale.
Sistemi Operativi
Delivery: face to face
Learning activities:
Attendance: Not mandatory
Teaching methods:
Linguaggio assembler per AMD64, programmazione mista C++/assembler, passaggio dei parametri tramite registri; la memoria cache ad accesso diretto e associativa ad insiemi; la paginazione su quattro livelli, il TLB; le periferiche di I/O: tastiera, video in modalità testo e grafica, l'interfaccia di conteggio, gli hard disk ATA; il bus PCI e il bus mastering; le interruzioni e il controllore APIC; la CPU: la tecnica della pipeline, l'esecuzione fuori ordine e speculativa; la protezione; la multiprogrammazione e i processi; la mutua esclusione e i semafori; la memoria virtuale.
Assembler language, mixed C++/assembler programs, stack based parameter passing; Cache memories, direct access and associative; paging, TLB; I/O peripherals: keyboard, text and graphic mode SVGA, counter, ATA hard disks; PCI bus, bus mastering; interrupts and APIC; the CPU: pipelining, out of order and speculative execution; protection; multipgramming, processes; mutual exclusion, semaphores; virtual memory.
Bibliografia e materiale didattico
"Archiettura dei calcolatori, vol I", G. Frosini, Pisa University Press; "Archiettura dei calcolatori, vol II", G. Frosini e G. Lettieri, Pisa University Press;
Tutte le slide utilizzate nel corso verranno rese disponibili agli studenti.
Per le parti del corso non coperte dal libro e dalle slide verranno fornite delle dispense.
Approfondimenti:
"Computer Architecture, Fifth Edition: A Quantitative Approach", 5th edition, J.L. Hennesy and D.A. Patterson, Morgan Kaufmann
Recommended reading includes the following works: "Archiettura dei calcolatori, vol I", G. Frosini, Pisa University Press; "Archiettura dei calcolatori, vol II", G. Frosini and G. Lettieri, Pisa University Press; "Archiettura dei calcolatori, vol III", G. Frosini and G. Lettieri, Pisa University Press. Further bibliography: "Computer Architecture, Fifth Edition: A Quantitative Approach", 5th edition, J.L. Hennesy and D.A. Patterson, Morgan Kaufmann
La prova pratica deve essere sostenuta priva della prova orale. È fortemente sconsigliato presentarsi alla prova orale se la prova pratica non è stata superata con una votazione di almeno 15/30. La prova pratica viene conservata per 5 appelli.
Lucidi sulla prima parte del corso: http://www.iet.unipi.it/g.frosini/Lucidi16-17/