Sistemi di elaborazione e trasmissione dell`informazione_G

Istituto Tecnico Industriale Statale "Othoca" A.S. 2012/13 CLASSE: 4 G PROGRAMMA DI: Sistemi per la trasmissione e l'elaborazione delle informazioni DOCENTI: Paolo Schirra e Fabiola Inconis
a
Architettura dei sistemi di elaborazione e i microprocessori: richiami di architetture dei
sistemi di elaborazione: il processore; la memoria; i dispositivi di ingresso/uscita; il
meccanismo di interruzione. L'architettura base dei processori; La sezione esecutiva e
la sezione di controllo dei processori. Il microprocessore Intel 8088/86: caratteristiche
generali; indirizzamento della memoria; i registri interni; Il linguaggio assembly 8088/86: la struttura di un programma assembly; la
dichiarazione delle variabili; il formato delle istruzioni; l'inizializzazione dei segmenti;
le istruzioni di trasferimento dei dati e degli indirizzi; istruzioni per l'inizializzazione
dei registri di segmento; le istruzioni aritmetiche; le istruzioni di controllo: le
istruzioni di salto; le istruzioni di confronto; la struttura di selezione; i cicli con il
controllo in testa e in coda. La gestione dell'input / output: le funzioni di base per
l'acquisizione di un carattere da tastiera e per la visualizzazione di un carattere.
I metodi di indirizzamento dell'8086: indirizzamento di un registro; indirizzamento
immediato; indirizzamento diretto; indirizzamento indiretto tramite registro;
indirizzamento indiretto tramite registro con spiazzamento; indirizzamento indiretto
indicizzato. I vettori di byte; le stringhe di caratteri; lo stack dell'8086. I sistemi operativi:
caratteristiche generali dei sistemi operativi: le funzioni principali di un sistema
operativo; esecuzione monoprogrammata dei programmi; sistemi operativi
multiprogrammati e i loro vantaggi; i sistemi batch; i sistemi time­sharing; i sistemi
operativi per personal computer.
La gestione dei processi: definizione di processo; gli stati di un processo e le transizioni di stato; descrittore di un processo; code di processi; cambio di contesto; creazione e terminazione dei processi; interazione tra processi. Algoritmi di scheduling: algoritmo First­Come­First­Served (FCFS); Shortest­Job­First (SJF); Shortest­Time­Remaining­First (STRF); Round­Robin (RR); algoritmi di scheduling su base prioritaria e a “code multiple”. I processi leggeri (thread). Esecuzione concorrente dei processi: competizione e cooperazione tra processi; il
problema della mutua esclusione e l'algoritmo di Peterson. La comunicazione tra
processi; I semafori e la soluzione del problema della mutua esclusione e della
comunicazione; I problemi caratteristici con processi concorrenti; il problema del
produttore­consumatore. I monitor e lo scambio di messaggi; le regioni critiche e lo
stallo.
La gestione della memoria: la rilocazione dei processi e la catena di programmazione;
la rilocazione statica e dinamica; Memory­Management­Unit (MMU);
multiprogrammazione e gestione della memoria; Algoritmi di allocazione dei processi
nei sistemi a partizioni variabili; la paginazione; la memoria virtuale; cenni alla
segmentazione.
Gestione della periferiche di Input/Output: gestione e organizzazione dei dischi;
organizzazione fisica dei dischi magnetici; algoritmi di schedulazione delle richieste di
trasferimento; Algoritmi FIFO (First­In­First­Out), SSTF (Shortest Service Time
First), SCAN, C­SCAN e N­SCAN. I dischi RAID (Redundant Array of
Inexpensive/Independent Disks); RAID livello 0; RAID livello 1; RAID livello 2; RAID
livello 3; RAID livello4; RAID livello 5.
Il file system: la struttura logica del file system; struttura e organizzazione dei file:
metodi di allocazione dello spazio su disco: allocazione contigua; allocazione a blocchi
collegati (Linked Allocation); allocazioni a blocchi indicizzati (Indexed Allocation);
allocazione con mappa dei blocchi dei file. Laboratorio:
Esercitazioni sulla programmazione in assembly 8086: programmi per eseguire le
operazioni aritmetiche. Utilizzo delle istruzioni di salto e di confronto per realizzare le
strutture di controllo. Programmi per gestire l'input output di caratteri, stringhe e
numeri. Esercitazioni sui sistemi operativi e processi: La creazione di un processo in C/C++ con
il sistema operativo GNU/Linux; la chiamata di sistema fork() per la generazione di un
processo figlio; il PID e il PPID (Process ID e Parent Process ID); la System Call
getpid() e getppid() per ottenere il PID e il PPID dei processi; Passaggio dei parametri
da linea di comando ad un processo. La System Call fork() e la gestione degli errori.
Attività multiple dei processi padre/figlio e gli effetti dello scheduling. Le chiamate di
sistema per la terminazione e l'attesa dei processi. Esercitazioni sulla sostituzione del
codice con le chiamate di sistema exec(). Esercitazione sulla comunicazione tra
processi mediante le pipe del sistema operativo GNU/Linux. Il problema del
produttore­consumatore risolto con le pipe. Le chiamate di sistema dup() (non
atomica) e dup2() (atomica) per per la duplicazione e chiusura dei file descriptor di
una pipe. Le pipe da linea di comando.
Esercitazioni sul sistema operativo GNU/Linux e sull'utilizzo della shell a linea di
comando: Organizzazione logica dei file; i permessi dei file; I comandi per la gestione
dei file e delle directory; la ridirezione dell'input e dell'output; le pipe da linea di
comando; i filtri sui file; il comando grep e le espressioni regolari;
Esercitazioni sulla programmazione della shell bash: le variabili nella shell e le
variabili di sistema; l'output di dati e di messaggi; espressioni condizionali e le
strutture di selezione e di ripetizione; semplici esempi della shell script; Script della
shell per generare una pagina HTML contente le informazioni su una directory e sui
file in essa contenuti. Esercitazioni sui thread in Java: il modello dei thread di Java: la classe Thread e
l'interfaccia Runnable; la comunicazione tra thread Java e il problema del
produttore­consumatore; Lo stallo di due thread in Java; I monitor in Java; La
concorrenza in Java: i semafori.
Esercitazioni su HTML e JavaScript: le espressioni regolari in JavaScript; l'input in
HTML5; i canvas dell'HTML5; il framework KineticJS JavaScript per la creazione di
animazioni dentro un canvas HTML5; esercitazione sulla gestione delle collisioni tra
oggetti animati.