Corso di Sicurezza Informatica
|
|
- Antonia Grilli
- 8 anni fa
- Visualizzazioni
Transcript
1 Corso di Sicurezza Informatica Sicurezza del Software Ing. Giuseppe D Aquì
2 Sicurezza nell informatica Un computer sicuro è un computer spento (Kevin Mitnick)
3 Attacchi informatici Gli attacchi informatici, secondo Wikipedia vengono fatti tramite la rete internet, da parte di utenti chiamati dalla società cracker, che tramite l uso di software particolari, a volte creati da loro stessi, si intrufolano abusivamente all interno del sistema, riuscendo ad ottenere piena disponibilità della macchina, per gestire risorse e dati senza avere i giusti requisiti richiesti
4 Attacchi di massa Storicamente (fino a metà anni 80) i software venivano scritti appositamente per l utilizzo su specifiche macchine Le macchine stesse a loro volta erano molto diverse tra loro, come architettura e sistema operativo Un attacco, per riuscire, necessitava di una persona con grande esperienza e abilità
5 Attacchi di massa (2) Con la diffusione dell informatica di massa : Standardizzazione dell architettura Standardizzazione de facto dei sistemi operativi Accesso di rete tramite protocolli standard Si è passati ad un ambiente in cui ci sono centinaia di migliaia di macchine tutte uguali Se un attacco funziona su una, funziona potenzialmente su tutte pacchettizzazione degli attacchi e Script Kiddie
6 Vulnerabilità Una vulnerabilità è una debolezza del sistema che può essere sfruttata da un attacker Causata da un errore di implemetazione o di progettazione Un exploit è un insieme di istruzioni che sfruttano la vulnerabilità
7 Exploit Gli exploit vengono in genere pubblicati sui bollettini di sicurezza perché sono una prova tangibile dell esistenza di un bug Un exploit pubblicato ha ovviamente la conseguenza di aumentare gli attacchi da parte di Script Kiddie Ma, considerando che chi ha intenzioni malevole in qualche modo lo trova anche se non pubblicato, diffondere un exploit serve a difendere gli utenti visto che il produttore del software è costretto a rilasciare una correzione (patch)
8 Memory Leak Un memory leak è una scorretta gestione della memoria da parte di un software Per esempio, a seguito di un memory leak un programa può occupare più memoria di quanta gliene necessiterebbe Non sempre da un memory leak deriva una vulnerabilità
9 Errori di programmazione Errori che causano accesso non controllato ai dati. Errori che causano alterazione del flusso di esecuzione del programma. Mancanza di verifiche sui permessi di accesso alle funzioni oppure ai dati (controlli inadeguati o incompleti). Errori sulle condizioni limite (primo o ultimo caso). Altri errori logici.
10 Buffer Overflow Un buffer è un area di memoria temporanea che contiene dei dati Qualsiasi variabile può essere vista come un buffer
11 Struttura di un software Un software viene scritto con linguaggi di programmazione leggibili da umani e poi tradotto in un linguaggio leggibile dalla macchina I passi sono: Compilazione link
12 Richiami di architettura dei calcolatori Una CPU è composta da: Control Unit: unità che gestisce il flusso di esecuzione dei programmi Arithmethic Logic Unit Registri: aree di memoria interne, usate come supporto alle operazioni
13 Codice macchina Qualunque software per essere eseguito deve essere trasformato in codice macchina Sequenza di byte, composta da codice e dati Il codice è composto da numeri (opcode e parametri) che rappresentano istruzioni permettono di svolgere operazioni sui registri della CPU, sulla memoria, sulle periferiche ecc.
14 Uso della memoria Importante: osservando una locazione di memoria è impossibile sapere se il numero che contiene rappresenta una istruzione o un dato Il suo significato dipende dal flusso di esecuzione!
15 Mappa della memoria Un software caricato in memoria e pronto per l esecuzione si può suddividere in blocchi chiamati segmenti Blocchi che raggruppano locazioni di memoria che svolgono una funzione simile
16 Mappa della memoria Data BSS Heap Direzione di crescita Heap Stack Code Direzione di crescita Stack
17 Mappa della memoria Data: contiene le variabili globali e statiche inizializzate Es. static int pippo=321; BSS: contiene le variabili globali e statiche non inizializzate, o inizializzate a zero Es. static int pippo; static int pluto=0;
18 Mappa della memoria Heap: contiene le variabili allocate con malloc()/new durante l esecuzione del programma Stack: contiene le variabili locali semplici (int, char, short ) e informazioni ausiliarie per effettuare le chiamate di funzione
19 Struttura Stack Lo stack (pila) è una struttura dati LIFO Last In First Out L ultimo elemento ad entrare è il primo ad uscire Uno stack possiede due funzioni: Push: inserisce un dato in cima allo stack (top) Pop: rimuove un dato dalla cima dello stack
20 Heap e Stack L Heap e lo Stack rappresentano la memoria a disposizione di un programma e sono di dimensione variabile L Heap cresce spostando in avanti il puntatore alla cima (top) Lo Stack cresce spostando all indietro il puntatore alla cima (top) Se i due puntatori si incontrano Out of Memory
21 Mappa della memoria* Data BSS Heap Direzione di crescita Heap Stack Code Direzione di crescita Stack * la disposizione dei blocchi cambia a seconda dell architettura e del Sistema Operativo
22 Attacco Denial of Service (DoS) Conoscendo il funzionamento della memoria, un primo attacco che può venire in mente è riempire tutta la memoria a disposizione in modo che un programma smetta di funzionare Un attacco di questo tipo porta a negare il servizio agli altri utenti, perché il software è andato in crash
23 Attacco DoS (esempio) Un servizio erogato via internet (come web, , etc) ha bisogno di una certa quantità di memoria per gestire ogni richiesta Al crescere delle richieste occuperà sempre più memoria Fino al punto in cui la memoria non basterà più
24 Attacco DoS Per evitare il fallimento dell esecuzione molti servizi accettano solo un certo numero di richieste, mettendo le altre in coda In questo modo il programma non va in crash Dal punto di vista degli utenti, però, non cambia niente: durante un attacco DoS si vedono negare il servizio
25 Esecuzione del codice macchina L esecuzione del codice macchina avviene in modo sequenziale Normalmente c è un registro (Program Counter (PC) o Instruction Pointer (IP)) memorizza l indirizzo dell istruzione corrente Viene incrementato per passare all istruzione successiva Esistono istruzioni di Jump che servono ad eseguire le condizioni (if else) e le chiamate a funzione
26 Chiamate di funzione Una chiamata di funzione è una cosa più complicata di come sembra Non è un semplice salto condizionale, perché ha queste caratteristiche: Può avere delle variabili come argomento Le istruzioni che la compongono non possono agire sulle variabili di altre funzioni e viceversa (visibilità) Alla sua conclusione, l esecuzione del programma deve riprendere da dove era stata interrotta
27 Chiamate di funzione Per garantire queste caratteristiche il compilatore traduce le chiamate di funzione in operazioni fatte sullo Stack Inserisce (push) sullo Stack: il Return Address: l indirizzo a cui ritornare una volta finita la funzione Il Frame Pointer, che rappresenta l indirizzo di riferimento per tutte le variabili locali Opzionalmente: Gli argomenti della funzione Variabili locali della funzione
28 Call Stack void funzione(int a){ int b; } b (4 byte) Cima dello Stack Frame Pointer (4 byte) Return Address (4 byte) Espansione dello Stack a (4 byte)
29 Call Stack void funzione2(int a){ char b[10]; } b (10 byte) Cima dello Stack Frame Pointer (4 byte) Return Address (4 byte) Espansione dello Stack a (4 byte)
30 Call Stack void funzione3(int a){ char b[8]; char c[16]; } c (16 bytes) Cima dello Stack b (8 bytes) Frame Pointer (4 bytes) Return Address (4 bytes) Espansione dello Stack a (4 bytes)
31 Stack Buffer Overflow Molte funzioni per l accesso alla memoria in linguaggi a basso/medio livello ( C/C++ ) non effettuano controlli sull accesso alle locazioni di memoria Questo per permettere la massima flessibilità di utilizzo ma da un grande potere derivano grandi responsabilità (cit.)
32 Stringhe Come si rappresenta una stringa in C? Una stringa è una sequenza di caratteri e si rappresenta come un array di char (interi a 8 bit) Un array è caratterizzato da: Dimensione: Una stringa in C è terminata da un carattere null string \0 Punto di inizio: L indirizzo iniziale della stringa è memorizzato in un puntatore (char*)
33 Stringhe char* saluto = Ciao ; saluto= 0x2345 0x2345 0x2346 0x2347 0x2348 0x2349 C i a o \0 Un char* è un puntatore ad un area di memoria (buffer) che memorizza la stringa
34 Copia di stringhe Come si copia una stringa? strcpy(char* dest, char* origine) Strcpy copia il contenuto di origine in dest Prende il primo carattere di origine e lo copia nella prima locazione di dest Prende il secondo carattere di origine e lo copia nella seconda locazione di dest E così via
35 Strcpy Strcpy ferma la copia solo quando ha esaurito tutti i caratteri di origine Se origine > dest, inizierà a scrivere i caratteri di origine al di fuori del buffer di dest (buffer overflow), potenzialmente distruggendo l esecuzione corretta del programma Se dest è una variabile memorizzata nello Stack allora avremmo un overflow che potenzialmente può distruggere lo Stack
36 Call Stack void funzione4(char* a){ char b[4]; char c[4]; strcpy(c, a); } c (4 bytes) Cima dello Stack b (4 bytes) Frame Pointer (4 bytes) Return Address (4 bytes) Espansione dello Stack a (4 bytes)
37 Call Stack void funzione4(char* a){ char b[4]; char c[4]; strcpy(c, a); } char* a = aaa ; a = 0x2345 c a a a \0 Cima dello Stack b FP Return Frame Pointer (4 bytes) Return Address (4 bytes) Espansione dello Stack a 0x2345
38 Call Stack void funzione4(char* a){ char b[4]; char c[4]; strcpy(c, a); } char* a = Saluti ; a = 0x2345!!!! c S a l u Cima dello Stack b t i \0 FP Return Frame Pointer (4 bytes) Return Address (4 bytes) Espansione dello Stack a 0x2345
39 Stack Buffer Overflow Vengono sovrascritte altre locazioni di memoria immediatamente successive nello Stack Si può anche arrivare a sovrascrivere il Return Address, modificando così l esecuzione del programma
40 Casi di accesso non-malizioso Se la variabile che viene sovrascritta non è pensata in modo malizioso, si avrà un Return Address che punta ad un area di memoria che non appartiene al programma In modalità protetta, questo significa generare un Segmentation fault e interromprere l esecuzione del programma
41 Attacco di Stack Buffer Overflow Per sfruttare in modo malizioso il bug, si possono fare due cose: Inserire nel buffer sotto attacco del codice eseguibile, che faccia qualcosa di malizioso oppure esegua componenti del sistema operativo (shell) Sovrascrivere il return address con l indirizzo del codice malizioso Al termine della funzione verrà eseguito in automatico il codice malizioso!
42 Proteggersi dallo Stack Buffer Overflow Usare funzioni sicure come strncpy(), che prevedono un controllo sulla dimensione massima del buffer Sfruttare funzionalità dei compilatori per produrre codice più difficile da attaccare Sfruttare funzionalità della CPU per marcare come non-eseguibili le aree di memoria dei dati
43 Canarino Il Canarino (canary) è un campanello d allarme per il buffer overflow, sfruttato alcuni compilatori È un numero, difficile da conoscere/scoprire, che viene inserito nello Stack subito dopo il Return Address
44 Canarino void funzione5(int a){ char b[8]; char c[16]; } c (16 bytes) b (8 bytes) Frame Pointer (4 bytes) Canarino Return Address (4 bytes) a (4 bytes) Cima dello Stack Espansione dello Stack
45 Canarino Il principio è che se qualcuno/qualcosa vuole sovrascrivere il Return Address, allora dovrà sovrascrivere anche il Canarino Prima di chiamare il Return Address, il compilatore inserisce codice che controlla se il Canarino corrisponde all originale Se è stato modificato, allora c è un tentativo di attacco in corso!
46 No-eXecute Il metodo del Canarino ha un problema: è possibile scoprirlo e ricostruirlo Per questo viene in aiuto l hardware I processori più recenti supportano un flag per le pagine di memoria chiamato NX No-eXecute Appena l esecuzione del programma entra in una pagina marcata come NX l esecuzione si ferma con un errore
47 Problemi del No-eXecute Il flag NX risolve l attacco Stack Buffer Overflow che abbiamo visto prima Non può impedire però la sovrascrittura del Return Address Ovvero si può sovrascrivere il Return Address per far saltare l esecuzione in qualsiasi punto del programma
48 Attacco return-to-libc In qualunque programma viene automaticamente aggiunta, in fase di link, la Libreria Standard C (libc) Pertanto si può sovrascrivere il Return Address facendolo puntare a una funzione della libreria C, eseguendola Una funzione come system() (presente nella Libreria C) permette di eseguire qualunque programma del sistema attaccato
49 Address Space Layout Randomization (ASLR) Per evitare anche questi ultimi attacchi si usa la disposizione casuale degli spazi di indirizzi I blocchi di memoria dedicati alle librerie, ai segmenti di dati e del codice vengono disposti in memoria in modo casuale In questo modo è molto difficile conoscere in anticipo l indirizzo da inserire al posto di Return Address
50 Heap Overflow Heap Buffer Overflow è simile alla versione Stack È più raro, perché raramente l heap contiene puntatori a funzione che possono essere sovrascritti Non per questo è meno pericoloso! Vedi vulnerabilità JPG Microsoft
51 Integer Overflow Un Integer Overflow si ha quando si superano i limiti di memorizzazione di un intero Unsigned Char 8 bit [0, 255] Char 8 bit [-128, 127] Unsigned Int -> 32 bit [0, ] Int 32 bit [-2 31, ]
52 Integer Overflow (Esempio) Un problema si ha con la conversione implicita da Signed a Unsigned A livello di memoria, non cambia la rappresentazione del dato ma solo la sua interpretazione
53 Tool per prevenzione e attacco
54 Analisi della memoria Valgrind/DRMemory
55 Analisi del codice compilato Disassembler e Debugger Ollydbg, IDA, gdb
56 Metasploit Piattaforma per la verifica di vulnerabilità
57 Riferimenti Mappa della memoria per differenti architetture: Notes on Assembly memory Smashing the Stack for fun and profit di Aleph One SecurityFocus
Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti
Corso di Sicurezza Informatica Sicurezza del software Ing. Gianluca Caminiti Software Sicuro Privo di errori (logici) che comportino un comportamento inatteso. Tali bug possono minare la sicurezza dell
DettagliSistema operativo: Gestione della memoria
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e
DettagliAllocazione dinamica della memoria - riepilogo
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della
DettagliTipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
DettagliINFORMATICA 1 L. Mezzalira
INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello
DettagliCon il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.
Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell
DettagliUniversità di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record
Dettagli4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0
Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice
DettagliFunzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
DettagliSistemi Operativi. 5 Gestione della memoria
Gestione della memoria Compiti del gestore della memoria: Tenere traccia di quali parti della memoria sono libere e quali occupate. Allocare memoria ai processi che ne hanno bisogno. Deallocare la memoria
DettagliPer scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli
CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per
DettagliLa microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico 2006 2007 pagina 1
La microarchitettura. anno accademico 2006 2007 pagina 1 Integer Java virtual machine Ogni microprocessore può avere una microarchitettura diversa, ma la modalità di funzionamento per certi aspetti è generale.
DettagliGli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori
Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine
DettagliSISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09
SISTEMI OPERATIVI Prof. Enrico Terrone A. S: 2008/09 Che cos è il sistema operativo Il sistema operativo (SO) è il software che gestisce e rende accessibili (sia ai programmatori e ai programmi, sia agli
DettagliInizializzazione, Assegnamento e Distruzione di Classi
Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della
DettagliSistemi Operativi (modulo di Informatica II) I processi
Sistemi Operativi (modulo di Informatica II) I processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2009-10 Sommario Il concetto di processo Schedulazione dei processi e cambio di contesto
DettagliIl tipo di dato astratto Pila
Il tipo di dato astratto Pila Il tipo di dato Pila Una pila è una sequenza di elementi (tutti dello stesso tipo) in cui l inserimento e l eliminazione di elementi avvengono secondo la regola seguente:
DettagliLABORATORIO DI SISTEMI
ALUNNO: Fratto Claudio CLASSE: IV B Informatico ESERCITAZIONE N : 1 LABORATORIO DI SISTEMI OGGETTO: Progettare e collaudare un circuito digitale capace di copiare le informazioni di una memoria PROM in
DettagliGestione della memoria. Paginazione Segmentazione Segmentazione con paginazione
Gestione della memoria Paginazione Segmentazione Segmentazione con paginazione Modello di paginazione Il numero di pagina serve come indice per la tabella delle pagine. Questa contiene l indirizzo di base
DettagliEsercizi su. Funzioni
Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità
DettagliIntroduzione. Corso di Informatica Applicata. Università degli studi di Cassino
Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Corso di Informatica Applicata Introduzione Ing. Saverio De Vito e-mail: saverio.devito@portici.enea.it Tel.:
Dettaglidall argomento argomento della malloc()
Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È
DettagliVlan Relazione di Sistemi e Reti Cenni teorici
Cosa sono le Vlan? Vlan Relazione di Sistemi e Reti Cenni teorici Le Vlan sono un tipo di rete particolare che permettono di creare tante reti logiche a partire da una singola rete fisica. Questo significa
DettagliSOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE
SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software
DettagliGESTIONE INFORMATICA DEI DATI AZIENDALI
GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming
DettagliArduino: Programmazione
Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite
DettagliFunzioni. Il modello console. Interfaccia in modalità console
Funzioni Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2, presente in tutti i programmi
DettagliVariabili e tipi di dato
Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per
DettagliArchitettura hardware
Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione
DettagliIl Sistema Operativo. C. Marrocco. Università degli Studi di Cassino
Il Sistema Operativo Il Sistema Operativo è uno strato software che: opera direttamente sull hardware; isola dai dettagli dell architettura hardware; fornisce un insieme di funzionalità di alto livello.
DettagliArchitettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro
Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica prof. ing. Corrado Santoro Schema a blocchi di una CPU Arithmetic Logic Unit Control Unit Register File BUS Control
DettagliIl memory manager. Gestione della memoria centrale
Il memory manager Gestione della memoria centrale La memoria La memoria RAM è un vettore molto grande di WORD cioè celle elementari a 16bit, 32bit, 64bit (2Byte, 4Byte, 8Byte) o altre misure a seconda
DettagliGuida al sistema. Dott. Enea Belloni
Sistema Gestionale Voucher Guida al sistema Dott. Enea Belloni Sommario della presentazione Il sistema informatico per la gestione delle domande L utente presentatore: diritti e responsabilità La pagina
DettagliGestione della Memoria
Gestione della Memoria Idealmente la memoria dovrebbe essere grande veloce non volatile Gerarchia di memorie Disco: capiente, lento, non volatile ed economico Memoria principale: volatile, mediamente grande,
DettagliIl software. la parte contro cui si può solo imprecare. Funzioni principali del sistema operativo. (continua) Gestione della memoria principale
Funzioni principali del sistema operativo Il software la parte contro cui si può solo imprecare Avvio dell elaboratore Gestione del processore e dei processi in Gestione della memoria principale Gestione
DettagliProgrammazione I / Informatica generale Prova scritta 11 Giugno 2008
Programmazione I / Informatica generale Prova scritta 11 Giugno 2008 NOTA: Si trascuri ogni problema legato al tipo ed al valore di ritorno della funzione main. Inoltre, nei programmi è da sottintendere
DettagliInformazione analogica e digitale
L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica
DettagliIl Sistema Operativo (1)
E il software fondamentale del computer, gestisce tutto il suo funzionamento e crea un interfaccia con l utente. Le sue funzioni principali sono: Il Sistema Operativo (1) La gestione dell unità centrale
DettagliFONDAMENTI di INFORMATICA L. Mezzalira
FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software
DettagliCalcolatori Elettronici. La memoria gerarchica La memoria virtuale
Calcolatori Elettronici La memoria gerarchica La memoria virtuale Come usare la memoria secondaria oltre che per conservare permanentemente dati e programmi Idea Tenere parte del codice in mem princ e
DettagliDispensa di Informatica I.1
IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.
Dettagli2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.
1 Esercizio 1 1. Immaginate di avere una calcolatore che invece che poter rappresentare i classici due valori per ogni bit (0/1) possa rappresentare 7 valori per ogni bit. (a) Quanti bit gli occorreranno
DettagliPROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)
PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) (Da effettuare non prima del 01/01/2011) Le istruzioni si basano su un azienda che ha circa 1000 articoli, che utilizza l ultimo
DettagliSTRUTTURE DEI SISTEMI DI CALCOLO
STRUTTURE DEI SISTEMI DI CALCOLO 2.1 Strutture dei sistemi di calcolo Funzionamento Struttura dell I/O Struttura della memoria Gerarchia delle memorie Protezione Hardware Architettura di un generico sistema
DettagliStudio o faccio i compiti?
Devo leggere o studiare? Per oggi c erano i compiti, ma non c era nulla da studiare. Che fortuna! Studio o faccio i compiti? La sostanza dei compiti è lo studio e lo studio è il compito dei compiti STUDIARE
DettagliSistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione
IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza
DettagliArchitettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):
Architettura (10/9003) Pag. 1/6 Esame di Architettura (matr.0-1) del 10/9003 Per Fondamenti di Architettura NON rispondere Per le domande a risposta multipla cerchiare la risposta scelta. Non alle domande
DettagliPronto Esecuzione Attesa Terminazione
Definizione Con il termine processo si indica una sequenza di azioni che il processore esegue Il programma invece, è una sequenza di azioni che il processore dovrà eseguire Il processo è quindi un programma
DettagliCorso di formazione CerTICTablet
Redattore prof. Corso di formazione CerTICTablet Sesta Dispensa Comitato Tecnico Scientifico: Gruppo Operativo di Progetto CerticAcademy Learning Center, patrocinato dall assessorato al lavoro e alla formazione
DettagliCorso di Sistemi di Elaborazione delle informazioni
Corso di Sistemi di Elaborazione delle informazioni Sistemi Operativi Francesco Fontanella Complessità del Software Software applicativo Software di sistema Sistema Operativo Hardware 2 La struttura del
Dettagli10 - Programmare con gli Array
10 - Programmare con gli Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
DettagliTesti di Esercizi e Quesiti 1
Architettura degli Elaboratori, 2009-2010 Testi di Esercizi e Quesiti 1 1. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica
DettagliLa protezione dai memory error exploit
Università degli Studi di Milano Sommario Introduzione 1 Stack Guard Terminator Canaries Random Canaries 2 3 Buffer Overflow Stack Guard Introduzione Buffer Overflow Condizione anomala. Memorizzazione
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,
DettagliRealizzazione di Politiche di Gestione delle Risorse: i Semafori Privati
Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad
DettagliUn sistema operativo è un insieme di programmi che consentono ad un utente di
INTRODUZIONE AI SISTEMI OPERATIVI 1 Alcune definizioni 1 Sistema dedicato: 1 Sistema batch o a lotti: 2 Sistemi time sharing: 2 Sistema multiprogrammato: 3 Processo e programma 3 Risorse: 3 Spazio degli
DettagliToolChain: Come Generare Applicazioni in Linguaggio Macchina
ToolChain: Come Generare Applicazioni in Linguaggio Macchina Luca Abeni e Luigi Palopoli March 30, 2015 La Lingua della CPU Una CPU capisce e riesce ad eseguire solo il linguaggio macchina Linguaggio di
DettagliAppunti sulla Macchina di Turing. Macchina di Turing
Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso
DettagliAXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio
AXO Architettura dei Calcolatori e Sistema Operativo processo di assemblaggio linguaggio assembly è il linguaggio simbolico che consente di programmare un calcolatore utilizzando le istruzioni del linguaggio
DettagliIl client deve stampare tutti gli eventuali errori che si possono verificare durante l esecuzione.
RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2010/2011 Il progetto consiste nello sviluppo di un applicazione client/server. Sia il server che il client dovranno
DettagliLaboratorio di Informatica
per chimica industriale e chimica applicata e ambientale LEZIONE 4 La CPU e l esecuzione dei programmi 1 Nelle lezioni precedenti abbiamo detto che Un computer è costituito da 3 principali componenti:
Dettaglida 2 a 5 giocatori, dai 10 anni in su, durata 30 minuti
da 2 a 5 giocatori, dai 10 anni in su, durata 30 minuti OBIETTIVO Il vincitore è colui che, dopo due round di gioco, delle sue 11 ordinazioni, ne ha consegnate il maggior numero. CONTENUTO DELLA SCATOLA
Dettaglicostruttori e distruttori
costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,
DettagliIl Software. Il software del PC. Il BIOS
Il Software Il software del PC Il computer ha grandi potenzialità ma non può funzionare senza il software. Il software essenziale per fare funzionare il PC può essere diviso nelle seguenti componenti:
DettagliSiamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.
DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti
DettagliHardware di un Computer
Hardware di un Computer Monitor Mouse Tastiera Printer Disk CPU Graphics Adapter USB Controller Parallel Port Disk Controller BUS Memoria RAM Memoria ROM (BIOS) DMA CPU esegue istruzioni, effettua calcoli,
DettagliCPU. Maurizio Palesi
CPU Central Processing Unit 1 Organizzazione Tipica CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 2 L'Esecutore
DettagliSTACK, istruzioni PUSH e POP; PROCEDURE, istruzioni CALL e RET
Lo stack STACK, istruzioni PUSH e POP; PROCEDURE, istruzioni CALL e RET Lo stack (tradotto talvolta in italiano con pila o catasta) è un'area di memoria privilegiata, dove il microprocessore può salvare
DettagliSommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.
Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell
DettagliCodifica: dal diagramma a blocchi al linguaggio C++
Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU
DettagliArchitettura dei calcolatori e sistemi operativi. Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H
Architettura dei calcolatori e sistemi operativi Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H Sommario Il processo di assemblaggio Il collegatore (linker) 2 Assemblatore: traduzione
DettagliArchitettura di un calcolatore: introduzione
Corso di Calcolatori Elettronici I Architettura di un calcolatore: introduzione Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie
DettagliArchitettura del calcolatore
Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macro-componenti: Hardware Software Architettura del calcolatore L architettura dell hardware di un calcolatore reale
DettagliSistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo
Sistema Operativo Fondamenti di Informatica 1 Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al
DettagliCorso di Informatica
Corso di Informatica Modulo T2 3-Compilatori e interpreti 1 Prerequisiti Principi di programmazione Utilizzo di un compilatore 2 1 Introduzione Una volta progettato un algoritmo codificato in un linguaggio
DettagliIl simulatore SPIM SPIM
Il simulatore SPIM Architetture dei Calcolatori (lettere A-I) SPIM SPIM: un simulatore per eseguire programmi assembler scritti per processori MIPS32 Download e materiale relativo alla pagina Web http://www.cs.wisc.edu/~larus/spim.html
DettagliVARIABILI LOCALI E GLOBALI (ESTERNE)
VARIABILI LOCALI E GLOBALI (ESTERNE) Le variabili locali sono definite (ed il loro uso dichiarato) nella funzione (o nel blocco) che le usa; nascono quando la funzione entra in esecuzione e muoiono al
DettagliIntroduzione al linguaggio C Gli array
Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome
Dettaglilo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000
Capittol lo 2 Visualizzazione 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Nel primo capitolo sono state analizzate le diverse componenti della finestra di Word 2000: barra del titolo, barra dei menu,
DettagliLa Gestione delle risorse Renato Agati
Renato Agati delle risorse La Gestione Schedulazione dei processi Gestione delle periferiche File system Schedulazione dei processi Mono programmazione Multi programmazione Gestione delle periferiche File
DettagliInformatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter
Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Architettura del Calcolatore Macchina di von Neumann Il calcolatore moderno è basato su un architettura
DettagliSistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1
IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza
DettagliMODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it
MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo
DettagliLe operazioni di allocazione e deallocazione sono a carico del sistema.
Allocazione della memoria In C++ è possibile creare (allocare) variabili in maniera statica o dinamica. Nell allocazione statica una variabile esiste ed è utilizzabile dal momento della sua dichiarazione
DettagliCOS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle
DettagliCapitolo Trasmissione di dati
Capitolo Trasmissione di dati Questo capitolo spiega tutto ciò che è necessario sapere per poter trasferire programmi fra l unità Power Graphic CASIO e un altra unità Power Graphic CASIO, collegati mediante
DettagliESERCIZIO 1 (b) Dove è memorizzato il numero del primo blocco del file? Insieme agli altri attributi del file, nella cartella che contiene il file.
ESERCIZIO 1 Si consideri un hard disk formattato la cui memoria è suddivisa in 16 blocchi (numerati da 0 a 15). Si supponga che sull hard disk sia memorizzato un unico file, contenuto, nell ordine, nei
DettagliLinguaggio C. Fondamenti. Struttura di un programma.
Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C La nascita del linguaggio C fu dovuta all esigenza di disporre di un Linguaggio ad alto livello adatto alla realizzazione
DettagliIl processore. Il processore. Il processore. Il processore. Architettura dell elaboratore
Il processore Architettura dell elaboratore Il processore La esegue istruzioni in linguaggio macchina In modo sequenziale e ciclico (ciclo macchina o ciclo ) Effettuando operazioni di lettura delle istruzioni
DettagliBreve riepilogo della puntata precedente:
Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta
DettagliCorso di Calcolatori Elettronici I A.A. 2010-2011 Il processore Lezione 18
Corso di Calcolatori Elettronici I A.A. 2010-2011 Il processore Lezione 18 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Calcolatore: sottosistemi Processore o CPU (Central Processing
DettagliCorso PLC - Manuale Pratico 1
Corso PLC - Manuale Pratico 1 "!#$ % L'unità centrale di un PLC, chiamata più semplicemente CPU, normalmente occupa il primo modulo del rack. Si individua subito in quanto tipicamente è dotata di un selettore,
DettagliLa manutenzione come elemento di garanzia della sicurezza di macchine e impianti
La manutenzione come elemento di garanzia della sicurezza di macchine e impianti Alessandro Mazzeranghi, Rossano Rossetti MECQ S.r.l. Quanto è importante la manutenzione negli ambienti di lavoro? E cosa
DettagliGestione dei File in C
Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte
DettagliSoftware relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi
Software relazione Hardware Software di base Software applicativo Bios Sistema operativo Programmi applicativi Software di base Sistema operativo Bios Utility di sistema software Software applicativo Programmi
DettagliLezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario
Lezione 2 Principi Fondamentali di SO Interrupt e Caching Sommario Operazioni di un SO: principi fondamentali Una visione schematica di un calcolatore Interazione tra SO, Computer e Programmi Utente 1
DettagliProcessi in Linux. Igino Corona igino.corona@diee.unica.it. 20 Ottobre 2009
Sistemi Operativi Processi in Linux Igino Corona igino.corona@diee.unica.it 20 Ottobre 2009 Contenuti della lezione Come funzionano i programmi in Linux? Schema base di esecuzione di un programma Modalità
DettagliC. P. U. MEMORIA CENTRALE
C. P. U. INGRESSO MEMORIA CENTRALE USCITA UNITA DI MEMORIA DI MASSA La macchina di Von Neumann Negli anni 40 lo scienziato ungherese Von Neumann realizzò il primo calcolatore digitale con programma memorizzato
Dettaglici sono più problemi che programmi esiste un problema che non si può risolvere con un programma
Calcolabilità problemi facili trovare la media di due numeri stampare le linee di un file che contengono una parola problemi difficili trovare il circuito minimo data una tabella determinare la migliore
Dettagli