Corso di Programmazione di Sistema Anno accademico 2006/2007 Presentazione del corso Umberto Villano, 4 Ottobre 2006.

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

I Linguaggi di programmazione
Traduzione ed Interpretazione
Laboratorio di Linguaggi lezione I: "Hello, world!" Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Laboratorio di Linguaggi Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in Informatica.
Linguaggi di programmazione
Java: programmazione concorrente con condivisione di memoria
Metodologie di Programmazione = decomposizione basata su astrazioni
Fondamenti di Informatica CDL in Ingegneria Meccanica - A.A CDL in Ingegneria Meccanica - A.A Tipi di dati Ing. Simona Colucci.
Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A Tipi di dati Ing. Simona Colucci.
Lez. 121 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Progettazione.
Anno Accademico Corso di Informatica Informatica per Scienze Biologiche e Biotecnologie Anno Accademico
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Gestione dei dati e della conoscenza (agenti intelligenti) M.T. PAZIENZA a.a
Reti Logiche e Architettura dei Calcolatori Luciano Gualà home page
Funzioni definite dall’utente
Introduzione allinformatica. Cosè linformatica ? Scienza della rappresentazione e dellelaborazione dellinformazione ovvero Studio degli algoritmi che.
Laboratorio di Linguaggi lezione VI: puntatori 2/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Laboratorio di Linguaggi lezione I: "Hello, world!" Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Laboratorio di Linguaggi lezione V Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi lezione IV Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi lezione VII: puntatori 3/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
Laboratorio di Linguaggi lezione IV Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Introduzione al linguaggio Java
Corso di Informatica Applicata Lezione 6
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
I Thread.
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
nome: sequenza di caratteri usata per denotare un oggetto
Primi Elementi di Programmazione in C++
Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.
Le funzioni.
Espressioni condizionali
Progettazione di una base di dati
A.Natali DL Maggio1999 Oggetti Concetti fondamentali.
FUNZIONI... Una funzione permette di dare un nome a una espressione rendendola parametrica float f(){ return * sin(0.75); } float f1(int x) { return.
Fondamenti di informatica Linguaggio C Main Program: Architettura di un PC Diagrammi di flusso Linguaggio C.
Elementi di Informatica di base
Unità Didattica 3 Linguaggio C
Laboratorio di Linguaggi lezione VII: variabili Globali e Locali Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali.
Introduzione al linguaggio assembly del microprocessore a parte
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
1 Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( ) Laboratorio di programmazione Lezione 11 e 12 -
OCSe-PISA e Veneto. PISA Programme for International Student Assessment ): fu avviato nel 1997 da parte dei paesi aderenti all’OCSE.
Sistemi e Tecnologie Informatiche Verifica di correttezza di un programma.
1 Corso di Informatica (Programmazione) Lezione 8 (7 novembre 2008) Programmazione in Java: operatori aritmetici, operatori di assegnamento e cast.
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Allievi Elettrici - AA Le funzioni ricorsive in C
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali (corso TIE) CORSO LAUREA MAGISTRALE IN SCIENZE E TECNOLOGIE DELLE PRODUZIONI ANIMALI.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
© Copyright NTT DATA Italia – All Rights Reserved The information contained in this document is the property of NTT DATA Italia S.p.A. and the addressee.
Sorrentino, Corvino, Palumbo, Credendino, Salzano, Ponticiello Caso di studio 2 Gruppo 7 Materia : Informatica- progetto ABACUS Scuola: ITIS indirizzo.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
ALLOCAZIONE STATICA: LIMITI Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente –la loro esistenza deve essere prevista e.
Corso di Architetetture degli Elaboratori, A.A. 2004/ Architettura degli Elaboratori Elisa B.P. Tiezzi Orario ricevimento: Giovedì, ( Il materiale.
Sistemi basati su conoscenza (agenti intelligenti) Prof. M.T. PAZIENZA a.a
Concetti Fondamentali sulla Programmazione
1 Macchine astratte, linguaggi, interpretazione, compilazione.
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
1 Metodologie di Programmazione = decomposizione basata su astrazioni.
Il software Claudia Raibulet
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

Corso di Programmazione di Sistema Anno accademico 2006/2007 Presentazione del corso Umberto Villano, 4 Ottobre 2006

Descrizione del corso Destinato a studenti con precedente esperienza di programmazione in un linguaggio ad alto livello orientato agli oggetti. Si propone innanzitutto di introdurre luso del linguaggio C (e delle librerie di sistema Unix). Obiettivo successivo: migliorare le capacità di programmazione, mostrando cosa avviene allinterno di un sistema di calcolo durante lesecuzione di un programma.

Descrizione del corso Spiegati i concetti fondamentali dellarchitettura e del funzionamento dei sistemi di calcolo, mostrando come essi hanno influenza sulla correttezza, le prestazioni e lutilità dei programmi applicativi. In conclusione: il corso verte su alcuni argomenti che hanno un valore immediato per lo studente come programmatore, insieme ad altri che possono essere utili per eventuali corsi avanzati di compilatori, architettura dei sistemi di calcolo, sistemi operativi, reti di calcolatori.

Obiettivi del corso fornire una conoscenza del linguaggio C e del suo utilizzo in un ambiente di programmazione Unix dare una vista di dettaglio di alcune fondamentali funzioni di un sistema operativo dal punto di vista del programmatore dare nozioni dettagliate sullarchitettura ed il funzionamento interno dei sistemi di calcolo che siano di immediato interesse per il programmatore, in maniera da fornirgli tutte le conoscenze e gli strumenti per la scrittura di programmi corretti ed efficienti

Prospettiva del Corso P.S. è un corso Programmer-Centric Lo scopo è mostrare che conoscendo di più sul funzionamento del sistema si possa essere più efficace come programmatore Rendervi capaci di –Scrivere programmi più affidabili ed efficienti –Incorporare caratteristiche che richiedono di agganciarsi al S.O. E.g., concorrenza, handler dei segnali Non è solo un corso per hacker dedicati –Portare fuori lhacker nascosto che è in voi Coprire materiale che non sarebbe trattato altrove

Inserimento nel piano di studi

Perché il corso di Programmazione di Sistema A partire dalla. a. 2000/2001, nei corsi di Fondamenti di Informatica del Corso di Laurea in Ingegneria Informatica (ora corsi di Programmazione) e stato adottato il linguaggio Java. Inserire nel manifesto un corso che, partendo dal linguaggio C, recepisse alcuni degli argomenti precedente trattati nei corsi di Sistemi Operativi con un approccio orientato alla programmazione.

Altri contenuti Far capire nel dettaglio allo studente cosa succede durante lesecuzione dei propri programmi, in modo che abbia a disposizione tutti i concetti e i tool che possono servire qualora (come accade praticamente sempre) qualcosa nei suoi programmi non funziona a dovere. Questo richiede quindi di scendere di livello rispetto ai tradizionali corsi di programmazione, e di trattare, tra le varie cose, argomenti quali la programmazione in linguaggio macchina, spesso esclusi dai percorsi formativi dellingegnere informatico. Un libro da poco pubblicato sullargomento...

Altri contenuti

Lastrazione va bene, ma non dimenticate la realtà! Tipicamente i corsi enfatizzano lastrazione –Tipi di dato astratto –Analisi asintotica Queste astrazioni hanno dei limiti –Specialmente in presenza di bug –E necessario comprendere le implementazioni usate Risultati utili –Divenire programmatori più efficienti Essere in grado di trovare ed eliminare i bug più efficientemente Essere in grado di ottimizzare le prestazioni dei programmi –Prepararsi per corsi successivi di sistema Compilatori, Sistemi Operativi, Reti, Calcolatori

Grande realtà #1 Gli Int s non sono Interi, i Float non sono Reali Esempi –E x 2 0? Floats: Si! Ints: – * > (On most machines) – 65535L * > (On Alpha) –E (x + y) + z = x + (y + z)? Unsigned & Signed Ints: Si! Floats: – (1e e10) > 3.14 – 1e10 + (-1e ) --> 0.0

Aritmetica dei Calcolatori Non genera numeri a caso –Le operazioni aritmetiche hanno importanti proprietà matematiche Non si possono assumere proprietà usuali –A causa delle rappresentazioni finite –Le operazioni intere soddisfano le proprietà di anello (di solito) Commutativa, associativa, distributiva –Le operazioni floating point soddisfano proprietà di ordinamento Monotonicità, valori dei segni Osservazione –Occorre capire quali astrazioni si applicano in ogni contesto –Problemi importanti per chi scrive compilatori e per i programmatori di applicazioni serie

Grande realtà #2 Cè bisogno di conoscere il linguaggio assembly Cè la possibilità che non scriverete mai un programma in assembly –I compilatori sono più bravi e pazienti di voi Capire lassembly è la chiave per il modello di esecuzione a livello macchina –Comportamento dei programmi in presenza di bug il modello di linguaggio ad alto livello non va più bene –Ottimizzazione delle prestazioni dei programmi Comprendere le cause di inefficienza dei programmi –Implementazione del software di sistema Il compilatore ha codice macchina come target I sistemi operativi devono gestire lo stato dei processi

Grande realtà #3 La memoria conta La memoria non è illimitata –Deve essere allocata e gestita –Molte applicazioni sono dominate dalla memoria I bug di riferimento alla memoria sono particolarmente insidiosi –I loro effetti possono essere distanti nel tempo e nello spazio Le prestazioni della memoria non sono uniformi –Cache e memoria virtuale hanno grande impatto sulle prestazioni dei programmi –Adattare i programmi alle caratteristiche del sistema di memoria può portare a significativi incrementi di prestazioni

Esempio di Bug di Riferimento in Memoria main () { long int a[2]; double d = 3.14; a[2] = ; /* Out of bounds reference */ printf("d = %.15g\n", d); exit(0); } AlphaMIPSSun -g e O3.14

Errori di Riferimento in Memoria C e C++ non forniscono nessuna protezione di memoria –Riferimenti ad array out of bounds –Valori invalidi di puntatori –Abusi di malloc/free Può portare a bug particolarmente perniciosi –Il bug può avere effetto o meno a seconda di sistema e compilatore –Azione a distanza Loggetto corrotto è logicamente non correlato a quello acceduto Leffetto del bug può essere osservato molto dopo la sua generazione Possibili rimedi –Programmare in Java, Lisp, o ML –Capire quali possibili interazioni ci possono essere –Usare o sviluppare tool per rilevare errori di riferimento in memoria

Esempio di Prestazioni della Memoria Implementazioni della Moltiplicazione di Matrici –Più modi alternativi di innestare i loop /* ijk */ for (i=0; i<n; i++) { for (j=0; j<n; j++) { sum = 0.0; for (k=0; k<n; k++) sum += a[i][k] * b[k][j]; c[i][j] = sum; } /* jik */ for (j=0; j<n; j++) { for (i=0; i<n; i++) { sum = 0.0; for (k=0; k<n; k++) sum += a[i][k] * b[k][j]; c[i][j] = sum }

Prestazioni di Matmult (Alpha 21164) jki kij kji Too big for L1 CacheToo big for L2 Cache

Prest. di Blocked matmult (Alpha 21164) matrix size (n) bijk bikj ijk ikj

Grande Realtà #4 Le prestazioni non sono solo complessità asintotica Anche i fattori costanti contano! –E facile osservare prestazioni 10:1 a seconda di come è scritto il codice –Occorre ottimizzare a più livelli: algoritmo, rappresentazione dei dati, procedure, loops Occorre comprendere il sistema per ottimizzare le prestazioni –Come i programmi sono compilati ed eseguiti –Come misurare le prestazioni dei programmi ed identificare eventuali bottlenecks –Come migliorare le prestazioni senza distruggere la modularità e generalità del codice

Grande Realtà #5 I computer non si limitano ad eseguire programmi Hanno bisogno di portare dati dentro e fuori –Il sistema di I/O è critico per laffidabilità e le prestazioni dei programmi Comunicano tra di loro su reti –Molti problemi a livello di sistema nascono in presenza di reti Operazioni concorrenti effettuate da processi autonomi Gestire mezzi di comunicazione inaffidabili Compatibilità cross platform Problemi di prestazioni complessi

A chi è destinato il corso di Programmazione di Sistema Istituzionalmente destinato agli studenti in corso del Secondo Anno.

Come verrà tenuto il corso 8 crediti formativi - 5 ore di corso settimanale nellambito del primo semestre (27 Settembre 2005 – 20 Gennaio 2005). sono previste tre prove pratiche durante il corso, più un colloquio finale. La frequenza non e obbligatoria, ma è fortemente consigliata

Come verrà tenuto il corso Esempi e gli approfondimenti (nonché le tre prove intracorso) basate su processori Intel 386-compatibili che eseguono programmi C sotto il sistema operativo Unix. Lo studente deve essere in grado di accedere ad una macchina del genere (ad esempio un PC con Linux), aprendo sessioni e facendo operazioni semplici come cambiare directory, copiare file,....

Programma del Corso Il linguaggio C I sistemi di calcolo dal punto di vista del programmatore

Libri di testo Per la parte sul linguaggio C: B. Kerningham, D. Ritchie, "Il linguaggio C - Seconda Edizione", Pearson Education Italia.

Libri di testo Per la parte sull'architettura dei sistemi di calcolo dal punto di vista del programmatore: R. E. Bryant e D. R. O'Hallaron, "Computer Systems: A Programmer's Perspective", Prentice Hall (2002).

Web page del corso

Aiuto!