Al termine del corso, lo studente:
Upon completion of the course, the student will:
Al termine del corso, lo studente:
By the end of the course:
Lo studente verrà stimolato ad usare un linguaggio tecnico non ambiguo nel definire un problema, e ad esercitare un motivato spirito critico nel descrivere e analizzare le soluzioni.
The student will be stimulated to use unambiguous technical language in defining a problem, and to exercise a motivated critical spirit in describing and analyzing solutions.
Durante l'esame orale, lo studente dovrà rispondere ai quesiti seguendo uno schema "problema-soluzione-analisi", curando precisione e appropriatezza del linguaggio.
During the oral examination, the student is expected to answer the questions following a "problem-solution-analysis" pattern, taking care of accuracy and appropriateness of language.
Nessuno.
None
Lezioni frontali, con ausilio di lavagna e slide. Esercitazioni in laboratorio con presenza di docente di supporto; si possono usare sia i PC delle aule informatiche, che i PC personali, se disponibili.
Lectures, with the aid of blackboard and slides. Lab exercises with supporting lecturer present; either PCs in computer classrooms or personal PCs may be used if available.
Rappresentazione dell'informazione all'interno dei calcolatori: numeri naturali, numeri interi, numeri reali, testi.
Fondamenti di programmazione: Il concetto di algoritmo. Il calcolatore come esecutore di algoritmi. Sintassi e semantica di un linguaggio di programmazione. Metodologie di programmazione strutturata e orientata alle procedure. Il linguaggio C++: tipi fondamentali. Istruzioni semplici, strutturate e di salto. Funzioni. Ricorsione. Riferimenti e puntatori. Array. Strutture e unioni. Memoria libera. Visibilità e collegamento. Strutture dati: Liste, Code, Pile. Alcuni algoritmi di ricerca e di ordinamento.
Un ambiente di sviluppo per programmi in linguaggio C++: Code::Blocks
Architettura del calcolatore. Modello di Von Neumann. Blocchi funzionali e loro collegamento. Organizzazione dello spazio di memoria e dello spazio di I/O. Tipo di transazioni sul bus. La CPU: registri generali, registri di stato (IP, PSW, SP). Il set di istruzioni del microprocessore mED: formato istruzioni, istruzioni operative, istruzioni di controllo, esempio di programma. Ciclo della CPU: fetch, decode, execute. Meccanismo di chiamata e ritorno da sottoprogramma. Meccanismo di interruzione: vettore di interruzione, gestione di interruzioni esterne. Gerarchia di memoria. Il DMA. Meccanismi di protezione.
Principali funzioni di un sistema operativo. Organizzazione di un sistema operativo. Cenni storici sull’evoluzione dei sistemi operativi. Struttura dei sistemi operativi multiprogrammati.
Gestione dei processi. Definizione di processo. Stati di un processo. Descrittore di un processo. Code di processi. Cambio di contesto. Creazione e terminazione dei processi. Interazione tra i processi. Richiami sul nucleo di un sistema a processi. Classificazione degli algoritmi di short-term scheduling e metriche per la loro valutazione (FCFS, SJF, SRTF, RR). Schedulazione di sistemi hard real-time (RM, EDF). Thread.
Sincronizzazione dei processi. Tipi di interazione tra processi. Competizione, cooperazione, interferenza. Ambiente globale e ambiente locale. Problema della mutua esclusione. Problemi della comunicazione: Produttori-Consumatori, Semafori: definizione e primitive wait() e signal(). Uso dei semafori per la soluzione dei problemi di mutua esclusione e della comunicazione. Il blocco critico: esempio con grafo possesso-attesa. Condizioni, prevenzione statica e dinamica, rilevamento e recupero.
Gestione della memoria. Aspetti caratterizzanti, la memoria virtuale, rilocazione statica e dinamica, Memory Management Unit, allocazione della memoria fisica. Tecniche di gestione della memoria: partizioni fisse e variabili, ricerca first-fit e best-fit, frammentazione esterna ed interna. Memoria segmentata. Stati swapped di un processo. Segmentazione a domanda. Memoria paginata. Meccanismo di traduzione degli indirizzi. Gestione di un page-fault. Algoritmi di rimpiazzamento: algoritmo second chance. Memoria segmentata e paginata.
Protezione e sicurezza. Modelli, politiche e meccanismi di protezione. Domini di protezione. Il modello matrice degli accessi. Realizzazione della matrice degli accessi. Sistema di sicurezza multilivello. Controllo degli accessi basato sui ruoli.
Fundamentals of binary data representation : natural numbers, integers, real numbers and text.
Computer Programming Basics: the notion of algorithm, syntax and sematics of a programming language; structured programming paradigm. C++ Programming Language: data types, operators and expressions; control structures; arrays; pointers and references; functions; structures and unions; dynamic memory allocation, input/output. Search and ordering algorithms. Modular programming technique. Introduction to classses.
An integrated development environment for C++:Code::Blocks
Computer architecture. Von Neumann model. Function blocks and their connection. Organization of memory space and I/O space. Type of transactions on the bus. The CPU: general registers, status registers (IP, PSW, SP). The mED microprocessor instruction set: instruction format, operating instructions, control instructions, example program. CPU cycle: fetch, decode, execute. Mechanism of call and return from subprogram. Interrupt mechanism: interrupt vector, handling external interrupts. Memory hierarchy. DMA. Protection mechanisms.
Main functions of an operating system. Organization of an operating system. Historical background on the evolution of operating systems. Structure of multiprogrammed operating systems.
Process management. Definition of a process. States of a process. Descriptor of a process. Process queues. Change of context. Creation and termination of processes. Interaction between processes. Recalls on the core of a process system. Classification of short-term scheduling algorithms and metrics for their evaluation (FCFS, SJF, SRTF, RR). Scheduling of hard real-time systems (RM, EDF). Threads.
Synchronization of processes. Types of interaction between processes. Competition, cooperation, interference. Global environment and local environment. Problem of mutual exclusion. Communication problems: Producer-Consumer, Semaphores: definition and wait() and signal() primitives. Use of semaphores for solving mutual exclusion and communication problems. The critical block: example with possession-waiting graph. Conditions, static and dynamic prevention, detection and recovery.
Memory management. Characterizing aspects, virtual memory, static and dynamic relocation, Memory Management Unit, physical memory allocation. Memory management techniques: fixed and variable partitions, first-fit and best-fit search, external and internal fragmentation. Segmented memory. Swapped states of a process. Demand-driven segmentation. Paged memory. Address translation mechanism. Handling of a page-fault. Replacement algorithms: second chance algorithm. Segmented and paged memory.
Protection and security. Protection models, policies and mechanisms. Protection domains. The access matrix model. Implementation of the access matrix. Multilevel security system. Role-based access control.
Libri di testo:
Textbook:
L'esame è composto da
- una prova scritta, che consiste in un esercizio di programmazione
- da una prova orale sul programma del corso.
The final assessment consists of
- a written test, which consists in a program in C++
- and oral test.