Introduzione. Le istruzioni del livello della macchina standard (livello 2) si possono dividere, con buona approssimazione, in due gruppi:

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Introduzione. Le istruzioni del livello della macchina standard (livello 2) si possono dividere, con buona approssimazione, in due gruppi:"

Transcript

1 Appunti di Informatica Appendice 3 Istruzioni e flusso di controllo TIPI DI ISTRUZIONI. 1 Introduzione.. 1 Istruzioni per il movimento dei dati. 2 Istruzioni per operazioni diadiche... 2 Istruzioni per operazioni monadiche 3 Confronti e salti condizionati.. 3 Istruzioni per la chiamata di procedure... 4 Istruzioni per il controllo dei cicli... 5 CONTROLLO DI FLUSSO DI UN PROGRAMMA.. 6 Premessa... 6 Istruzioni per la chiamata di procedure... 6 Le coroutine.. 6 I trap. 9 Gli interrupt.. 9 Sequenza di operazioni per la gestione di un interrupt.. 10 La gestione trasparente degli interrupt. 11 Controller di interrupt Tiipii dii iistruziionii Introduzione Le istruzioni del livello della macchina standard (livello 2) si possono dividere, con buona approssimazione, in due gruppi: le istruzioni generali sono quelle con la più vasta applicazione: ad esempio, la capacità di spostare i dati all interno della macchina è necessaria in quasi tutte le applicazioni; le istruzioni speciali hanno invece un campo di applicazione molto più ristretto: ad esempio, l istruzione MOVEP del processore Motorola prende i contenuti di un dato registro e li immagazzina in memoria in byte alternati, ossia con un byte non utilizzato ogni due. Poche applicazioni possono usare effettivamente questa istruzione e nessun compilatore la genererà mai. Il nostro obbiettivo è quello di esaminare i principali gruppi di istruzioni generali.

2 Appunti di Calcolatori Elettronici Appendice 3 Istruzioni per il movimento dei dati Una delle operazioni più importanti in un calcolatore è quella per copiare dati da un posto ad un altro: ciò significa creare un nuovo oggetto con una configurazione di bit uguale all originale. Ad esempio, quando diciamo che i contenuti della locazione 2000 di memoria sono stati spostati nel registro R1, intendiamo quasi sempre che ne è stata fatta una copia identica e che l originale è rimasto inalterato nella locazione Per questo motivo, le istruzioni per il movimento dei dati andrebbero forse chiamate più propriamente istruzioni per la duplicazione dei dati. I dati possono essere memorizzati in posti diversi, che cioè differiscono per il modo in cui si accede alle parole: tre posti comuni sono una particolare parola di memoria, un registro oppure uno stack (pila); bisogna però notare che una struttura a stack è solo una struttura di memoria che logicamente è gestita come uno stack, ma che fisicamente è qualcosa di ben diverso: infatti, uno stack può essere implementato tramite registri speciali o tramite la stessa memoria, mentre invece il modo di accedere agli elementi dello stack è diverso dal modo standard di accedere alla memoria o ai registri; ad esempio, l accesso alla memoria richiede un indirizzo, mentre invece l inserimento di un nuovo elemento in cima allo stack non richiede che venga esplicitamente indirizzato lo stack stesso. Le istruzioni per il movimento dei dati hanno alcuni fondamentali requisiti: richiedono che sia la sorgente dell informazione (cioè l originale) sia la destinazione (dove andrà posta la copia) siano specificare in modo implicito o esplicito; richiedono inoltre che sia specificata la quantità di dati da spostare: esistono infatti istruzioni per lo spostamento di quantità di dati che vanno da un solo bit all intera memoria. Nelle macchine con lunghezza di parola fissata, il numero di parole da spostare viene solitamente specificato nell istruzione stessa: per esempio, esistono istruzioni separate per spostare parole (32 bit) e parole corte (16 bit). Se invece consideriamo una macchina con lunghezza di parola variabile, la cosa è più complessa: in questi casi, non viene specificata la quantità di dati da copiare, ma solo l indirizzo sorgente e quello di destinazione e la copia dei dati prosegue fin quando non si trova, nei dati stessi, un campo indicatore di fine dei dati. Tanto per riportare degli esempi concreti, i processori Motorola 680x0 hanno una istruzione MOVE generale, con due operandi arbitrari, che può spostare i dati ovunque tra registri, memoria e stack. Le CPU Intel, invece, hanno istruzioni MOVE molto più limitate, ma ne hanno molte, per cui anche in questo caso è possibile spostare qualsiasi cosa ovunque. Istruzioni per operazioni diadiche Le operazioni diadiche sono quelle che combinano due operandi per produrre un risultato. Quasi tutte le macchine di livello 2 hanno istruzioni per eseguire l addizione e la sottrazione sugli interi. Ad eccezione che nei vecchi microcalcolatori ad 8 bit, anche la moltiplicazione e la divisione di interi è ormai standard. Un particolare gruppo di operazioni diadiche è quello che comprende le istruzioni booleane. In generale, è noto che esistono 16 distinte funzioni booleane a due variabili, ma poche macchine di livello 2 hanno istruzioni per tutte e 16: tanto per Autore: Sandro Petrizzelli aggiornamento: 7 luglio

3 Le Istruzioni ed il flusso di controllo fare un esempio semplice, dato che la funzione che restituisce TRUE indipendentemente dagli argomenti è inutile e quindi mai implementata. Tre istruzioni booleane presenti in molte macchine sono AND, OR e XOR (exclusive OR). Istruzioni per operazioni monadiche Le operazioni monadiche hanno un unico operando e producono un unico risultato. Dato che, rispetto alle operandi diadiche, è necessario specificare un unico indirizzo anziché due, le istruzioni per le operazioni monadiche sono spesso più corte. Tipici esempi di istruzioni monadiche sono quelle per traslare o ruotare i contenuti di una parola o di un byte. In particolare, sono frequenti le istruzioni di traslazione a destra con estensione di segno: questo tipo di traslazione implica che le posizioni che si liberano a sinistra sono occupate dal bit di segno originale (0 o 1); in altre parole, è come se il bit di segno venisse allungato verso destra e, ovviamente, il segno rimane lo stesso. Tanto per chiarirci le idee, riportiamo un esempio semplice: A Traslazione senza estensione di segno Traslazione con estensione di segno Un uso importante della traslazione riguarda la moltiplicazione e la divisione per potenze di due: se un numero intero positivo è traslato a sinistra di k bit, il risultato (a meno di overflow) corrisponde al numero originale moltiplicato per 2 k ; viceversa, se un numero intero positivo è traslato a destra di k bit, il risultato corrisponde al numero originale diviso per 2 k. Certe operazioni diadiche si verificano così frequentemente con particolari operandi che, a volte, le macchine di livello 2 prevedono istruzioni monadiche per eseguirle più velocemente: ad esempio, lo spostamento di 0 in una parola di memoria oppure in un registro è molto comune quando si inizializza una procedura di calcolo; si tratta di un caso particolare dell istruzione generale per muovere i dati, per cui, per questioni di efficienza, si fornisce spesso l operazione CLEAR con un solo indirizzo, corrispondente alla locazione in cui porre lo 0. Un altro esempio frequente nei calcoli è la somma di 1 ad una parola: una forma monadica di questa istruzione di addizione è l operazione di incremento unitario, che appunto aggiunge 1 alla locazione specificata come unico operando. Un ulteriore esempio è la negazione di una parola, che in realtà corrisponde a sottrarre tale parola da 0: la negazione di X corrisponde infatti a 0-X. Confronti e salti condizionati Quasi tutti i programmi hanno bisogno di poter controllare i loro dati e di poter cambiare la sequenza delle istruzioni da eseguire a seconda dei risultati. Un aggiornamento: 7 luglio Autore: Sandro Petrizzelli

4 Appunti di Calcolatori Elettronici Appendice 3 esempio semplice è la funzione per il calcolo della radice quadrata di un valore x (funzione sqrt): se x è negativo, la radice non va calcolata e va invece restituito un messaggio di errore, altrimenti il calcolo può essere eseguito. Un metodo comunque per fare questo è prevedere le cosiddette istruzioni di salto condizionato (dette anche diramazioni): tali istruzioni controllano una certa condizione e saltano ad un particolare indirizzo di memoria se essa è verificata. A volte, è presente un bit nell istruzione, che può essere posto ad 1 o a 0, il che significa che il salto deve avvenire se si verifica oppure non si verifica la condizione. Una condizione molto comune da verificare è controllare se un particolare bit della macchina vale 0 o meno. Molte macchine hanno dei bit usati per specificare determinate condizioni. Ad esempio, ci può essere un bit di overflow che viene posto ad 1 ogni volta che una istruzione aritmetica fornisce un risultato scorretto: controllando allora questo bit, si controlla di fatto l overflow sulla operazione aritmetica precedente e, in presenza di overflow, si può fare un salto ad una routine di errore. Il controllo sullo 0 è importante per i cicli e per altri scopi. Se tutte le istruzioni di salto condizionato controllassero solo un bit, allora per controllare se una intera parola vale 0 avremmo bisogno di un test separato per ciascun bit. Per evitare questa complicazione, molte macchine hanno un unica istruzione per controllare una parola e saltare se tutti i suoi bit sono 0. In pratica, l hardware contiene un registro in cui tutti i bit vengono riuniti in OR per fornire un singolo bit, che ovviamente varrà 0 se e solo se tutti i bit di partenza sono anch essi a 0. Il confronto tra due parole (o due caratteri) per vedere se sono uguali oppure quale è maggiore, è un altro caso importante, spesso applicato per esempio nelle funzioni di ordinamento. Per istruzioni di questo tipo sono necessari tre indirizzi: due per i dati da confrontare ed uno per l indirizzo del salto da effettuare se la condizione è vera. Allora, mentre i calcolatori che hanno formati di istruzioni a tre operandi non hanno problemi con questo tipo di istruzioni, quelli che prevedono non più di due operandi devono in qualche modo aggirare il problema: una soluzione molto comune è quella di prevedere una istruzione che esegue il confronto e, in base ad esso, attiva uno o più bit di condizione; l istruzione successiva va a leggere tali bit di condizione e decide se e dove effettuare il salto; in alcune situazioni particolari, i salti condizionati vengono invece gestiti tramite una istruzione che salta l istruzione successiva se si verifica la condizione considerata; evidentemente, l istruzione cui punta il salto è a sua volta, generalmente, una istruzione di salto. Non solo, ma su alcune macchine si possono saltare anche più istruzioni consecutivi, facendo specificare all istruzione stessa di confronto il numero di byte da saltare (il Motorola ha diverse istruzioni di questo tipo). Infine, le cosiddette istruzioni di salto incondizionato sono un caso particolare di istruzioni di salto, in quanto si ritiene implicitamente che la condizione sia sempre verificata. Istruzioni per la chiamata di procedure E noto che una procedura è un gruppo di istruzioni che esegue un certo compito e che può essere invocato (chiamato) da diversi punti del programma principale. Spesso si usa il termine subroutine (o routine) al posto di procedura. Autore: Sandro Petrizzelli aggiornamento: 7 luglio

5 Le Istruzioni ed il flusso di controllo Quando la procedura è terminato il proprio compito, deve necessariamente tornare all istruzione seguente a quella di chiamata, il che implica che l indirizzo di ritorno debba essere trasmesso alla procedura. Ci sono allora tre posti in cui tale indirizzo di ritorno può essere memorizzato: la soluzione peggiore è di porlo in una singola locazione fissata della memoria: infatti, se la procedura chiama sua volta un altra procedura, la seconda chiamata farà sì che l indirizzo di ritorno della prima chiamata vada perso. Un leggero miglioramento si ottiene se l istruzione di chiamata della procedura provvede direttamente a memorizzare l indirizzo di ritorno nella prima parola della procedura chiamata, mentre invece la prima istruzione eseguibile della procedura stessa si trova nella seconda parola: in questo caso, la procedura potrà ritornare saltando indirettamente alla prima parola e quindi sarà anche possibile chiamare altre procedure; non sarà invece possibile che una procedura chiami se stessa (chiamata ricorsiva), in quanto anche in questo caso l indirizzo di ritorno della prima chiamata andrebbe perso ( 1 ); non funzionerebbe nemmeno uno schema cosiddetto di ricorsione indiretta, in cui per esempio la procedura A chiama una procedura B che chiama una procedura C che chiama a sua volta A; una prima soluzione davvero valida è quella di porre l indirizzo di ritorno in un registro, lasciando alla procedura chiamata la responsabilità di memorizzare il suo contenuto in un posto sicuro: in questo modo, infatti, se la procedura è ricorsiva, dovrà porre l indirizzo di ritorno in un posto diverso ogni volta che è chiamata; la soluzione migliore è quella di spingere (push) l indirizzo di ritorno in uno stack: la procedura chiamante inserire (push) l indirizzo di ritorno nello stack, mentre invece la procedura chiamata, quando ha terminato, elimina l indirizzo di ritorno dallo stack (pop) e lo mette nel contatore di programma. Con questa forma di chiamata di procedura, la ricorsione non causa alcun problema: l indirizzi di ritorno viene automaticamente salvato in modo da evitare la distruzione degli indirizzi di ritorno precedenti. Istruzioni per il controllo dei cicli La necessità di eseguire un gruppo di istruzioni per un numero fissato di volte si verifica molto spesso e quindi alcune macchine hanno istruzioni apposite per facilitare queste situazioni. Tutti gli schemi utilizzati presuppongono l uso di un contatore, che viene prima inizializzato e poi aumentato o diminuito di una certa quantità costante ad ogni ciclo; se si verifica una certa condizione, il ciclo termina. 1 La capacità di una procedura di chiamare se stessa (detta ricorsione) risulta molto importante sia per i teorici sia per i programmatori pratici aggiornamento: 7 luglio Autore: Sandro Petrizzelli

6 Appunti di Calcolatori Elettronici Appendice 3 Controllllo dii fllusso dii un programma Premessa Il flusso di controllo si riferisce alla sequenza con cui le istruzioni di un programma vengono eseguite. Nel caso più semplice, le istruzioni eseguite in successione vengono prelevate da locazioni di memoria consecutive: quindi, l ordine dinamico in cui il processore esegue effettivamente le istruzioni è lo stesso in cui appaiono nel listato del programma; il registro contatore di programma, che contiene sempre l indirizzo della prossima istruzione da eseguire, è una sorte di funzione monotona linearmente crescente con il tempo. Alterazioni a tale ordine sequenziale vengono sia da istruzioni di chiamata di procedura (in generale da istruzioni di salto), in quanto fermano l'esecuzione della procedura in corso e fanno cominciare la procedura chiamata, e da altri tipi di istruzioni (chiamate di coroutine oppure trap oppure interrupt) che esamineremo nel dettaglio nei prossimi paragrafi: in tutti questi casi, l ordine di esecuzione delle istruzioni è alterato rispetto a quello sequenziale ed il registro contatore di programma non cresce più linearmente, ma in modo decisamente più complicato. Istruzioni per la chiamata di procedure Una procedura è un gruppo di istruzioni che esegue un certo compito e che può essere chiamato da un qualsiasi punto del programma. Quando la procedura ha finito il suo compito, deve ritornare alla istruzione che segue la chiamata: questo implica che l' indirizzo di ritorno debba essere in qualche modo trasmesso ala procedura. Ci sono 3 posti in cui l'indirizzo di ritorno può essere sistemato: la memoria, un registro o lo stack. Di queste però, la soluzione peggiore è l'uso di una locazione fissa di memoria: infatti, ciò escluderebbe la possibilità di effettuare una seconda chiamata, in quanto ogni chiamata distruggerebbe l'indirizzo di ritorno della chiamata precedente. Migliore è l'uso di un registro, nel senso che l'istruzione di chiamata pone in tale registro l'indirizzo di ritorno. Tuttavia, con questa scelta, per chiamate successive (cioè da una procedura ad un altra procedura e così via) si dovrebbero occupare più registri (a meno di non voler ritrovare lo stesso errore di prima) e la cosa non è ovviamente opportuna. La soluzione migliore è senz'altro l'uso dello stack: ogni istruzione di chiamata spinge (push) l'indirizzo di ritorno nello stack; quando la procedura è finita, estrae (pop) ed elimina l'indirizzo di ritorno dallo stack e lo mette nel contatore di programma. In questo modo, si possono supportare tutte le chiamate di procedura, incluse le cosiddette chiamate ricorsive, nelle quali cioè una procedura chiama se stessa. Le coroutine Quando c'è una istruzione di chiamata di procedura, c'è una evidente quanto fondamentale distinzione tra la procedura chiamante e la procedura chiamata. Supponiamo che ci sia una procedura A che, ad un certo punto della propria esecuzione, chiama la procedura B: Autore: Sandro Petrizzelli aggiornamento: 7 luglio

7 Le Istruzioni ed il flusso di controllo tale procedura (a meno di ulteriori chiamate) lavora per un certo tempo (quello necessario alla esecuzione delle sue istruzioni) e poi ritorna alla procedura A; per chiamare B, A usa una istruzione di chiamata di procedura la quale pone l'indirizzo di ritorno (che è l'indirizzo dell'istruzione seguente la chiamata) sulla cima dello stack e l'indirizzo di B (cioè della prima istruzione di B) nel contatore di programma; una volta terminata, B usa una istruzione di ritorno, la quale preleva l'indirizzo di ritorno dallo stack e ponendolo nel contatore di programma. La cosa fondamentale da notare in questi passaggi è la seguente: la procedura chiamata (cioè B) viene eseguita, dopo ogni chiamata, sempre dall'inizio alla fine; la procedura chiamante (cioè A), una volta eseguita B, riprende non dall'inizio ma dall'istruzione seguente la chiamata. chiamata di A dal programma principale ritorno da A al programma principale procedura A chiamata B chiamata B chiamata B ritorno procedura B ritorno Schematizzazione delle istruzioni di chiamata a procedura e di ritorno da procedura Una cosa diversa accade quando invece due procedure A e B si chiamano a vicenda: per esempio, supponiamo che in ciascuna di queste due procedure ci siano varie chiamate all'altra; supponiamo che per prima venga chiamata A (per esempio dal programma principale); all'interno di A viene chiamata B, la quale quindi comincia dall'inizio; ad un certo punto di B c'è una chiamata ad A: tale chiamata è però tale che l'esecuzione di A non avvenga dall'inizio, bensì dall'istruzione successiva alla chiamata di B; proseguendo, c'è una nuova chiamata a B, la quale riprende l'esecuzione non dall'inizio, ma nel punto in cui aveva poco fa chiamato A e così via. La figura seguente illustra quanto appena descritto: aggiornamento: 7 luglio Autore: Sandro Petrizzelli

8 Appunti di Calcolatori Elettronici Appendice 3 chiamata di A dal programma principale ritorno da A al programma principale procedura A procedura B Schematizzazione delle istruzioni di chiamata a coroutine e di ritorno da coroutine Due procedure che si considerano a vicenda una procedura (poiché sono chiamate, eseguono un certo lavoro e poi ritornano all'istruzione che segue la chiamata) vengono definite coroutine. Da quanto si è detto, si deduce che, per un meccanismo di questo tipo, non bastano le normali istruzioni di chiamata e di ritorno. Per poter realizzare questo meccanismo serve una istruzione che possa semplicemente scambiare la cima dello stack con il contatore di programma, usando per esempio un registro interno come variabile di scambio. Vediamo allora di analizzare il meccanismo considerando un programma principale e le due procedure A e B: il programma principale chiama A: viene memorizzato l'indirizzo di ritorno nello stack e viene inserito nel contatore di programma (program counter) l'indirizzo della prima istruzione di A; ad un certo punto della propria esecuzione, A chiama B: l'indirizzo di ritorno viene impilato e l'indirizzo della prima istruzione di B viene inserito nel contatore di programma; ad un certo punto della propria esecuzione, B chiama A: vengono scambiati il program counter e la cima dello stack: in tal modo, il program counter contiene l'indirizzo della istruzione di A successiva alla chiamata di B, mentre la cima dello stack contiene l'indirizzo dell'istruzione di B successiva all'ultima chiamata; ad ogni chiamata lo stack non viene né incrementato né decrementato; alla fine delle istruzioni di B, si passa ad eseguire le ultime istruzioni di A con lo stack che contiene, in cima, l'indirizzo di ritorno al programma principale. Una istruzione di chiamata di coroutine viene spesso detta istruzione di resume ed è presente nelle macchine di livello 2 (livello del linguaggio Assembler). Autore: Sandro Petrizzelli aggiornamento: 7 luglio

9 Le Istruzioni ed il flusso di controllo I trap Un trap è semplicemente un tipo di chiamata di procedura: in particolare, si tratta di una chiamata automatica attivata da una certa condizione provocata dal programma (ad esempio l'overflow). Quando si verifica una certa condizione (piuttosto rara per la verità) durante l'esecuzione di un programma, interviene un trap, il quale devia il flusso di controllo verso una locazione di memoria fissata; in tale locazione c'è un salto ad una opportuna procedura chiamata gestore di trap: tale procedura esegue l azione appropriata per l evento che l ha determinata, come ad esempio la stampa di un messaggio di errore a video. Il punto essenziale sulle trap è dunque quello di essere attivate da certe condizioni eccezionali provocate dal programma in corso di esecuzione e scoperte dall hardware oppure dal microprogramma. Non è l unica soluzione possibile, in quanto, ad esempio in presenza di overflow, si potrebbe procedere in altro modo: in primo luogo, si predispone un apposito registro da 1 bit che viene posto ad 1 quando si verifica l overflow; in secondo luogo, il contenuto di tale registro deve essere controllato da una istruzione successiva, che sarà del tipo salta se è attivo il bit di overflow. Il problema di una simile scelta è che comporta lentezza e spreco di spazio, al contrario invece dei trap, che risparmiano sia il tempo sia la memoria rispetto ai controlli espliciti fatti dai programmatori. Dal punto di vista concreto, i trap vengono implementati spesso demandando al microprogramma il compito di fare i test. Alcune condizioni comuni che possono provocare trap sono gli overflow e gli underflow in virgola mobile, gli overflow di interi, la violazione di protezioni, i codici operativi non definiti, gli overflow degli stack, i tentativi di far partire un dispositivo di I/O non esistente, la divisione per 0 e così via. Gli interrupt Anche gli interrupt, come i trap, sono cambiamenti nel flusso di controllo durante l'esecuzione del programma: tuttavia, al contrario dei trap, essi non dipendono dall'esecuzione del programma, bensì da qualcos'altro (spesso sono in relazione a operazioni di I/O); ad esempio, un programma può istruire il disco (tramite il suo controllore) per avviare il trasferimento di informazioni in memoria, indicando che dovrà fornire un interrupt non appena il trasferimento sarà finito. Al pari dei trap, un interrupt ferma il programma in corso e trasferisce il controllo ad un gestore di interrupt, il quale esegue le azioni appropriate; quando ha finito, il gestore di interrupt restituisce il controllo al programma interrotto. In particolare, il programma deve riprendere dall'esatto punto in cui era stato sospeso, il che significa che è necessario ripristinare tutti i registri interni allo stato di pre-interruzione. In due parole, possiamo dire che, mentre i trap sono sincroni con il programma, gli interrupt sono asincroni rispetto ad esso: se un programma viene eseguito tante volte con lo stesso ingresso, i trap si manifesteranno sempre e negli stessi punti, mentre invece gli interrupt possono anche variare, a seconda ad esempio della disponibilità dei dispositivi di I/O. I moderni calcolatori sono spesso sotto il controllo di un insieme gerarchico di programmi, alla cui sommità c'è naturalmente il sistema operativo. Per poter trasferire il controllo del calcolatore da un certo programma ad un altro (a seconda della operazione che si intende fare), è necessario fornire un meccanismo mediante il quale il funzionamento di un programma possa essere temporaneamente aggiornamento: 7 luglio Autore: Sandro Petrizzelli

10 Appunti di Calcolatori Elettronici Appendice 3 "interrotto" a favore di un altro. Una interruzione, come si detto poco fa, è un evento oppure un preciso segnale esterno, che provoca appunto la sospensione del funzionamento di un programma. Quando si verifica una interruzione, il contenuto di tutti i registri viene immediatamente salvato e il controllo del calcolatore passa ad una routine di servizio di interruzione, facente parte, in genere, del sistema operativo: essa determina da dove viene la richiesta di interruzione (generalmente esaminando un certo numero di flag o indicatori) e quindi trasferisce a sua volta il controllo ad una routine per la gestione di quel particolare tipo di interruzione; successivamente, il funzionamento del programma viene ripreso esattamente dal punto in cui era stato sospeso: questo lo si ottiene facilmente inserendo in tutti i registri i valori che erano stati salvati al momento della interruzione. Tra le cause più comuni di interruzioni vi sono operazioni di input e output di dati, oppure il rilevamento di un errore in un programma o anche il fatto che un programma ha superato il limite di tempo previsto. Il repertorio di istruzioni della maggior parte degli elaboratori include delle apposite istruzioni che attivano o disattivano le interruzioni. Esempi di interrupt HARDWARE sono: - divisione per zero - caduta di tensione - comunicazione eventi hardware al processore - esaurimento carta stampante - completamento di una azione di un drive e così via. Esempi di interrupt SOFTWARE sono invece: - attivazione programmi del BIOS definiti dal sistema operativo - attivazione programmi del BIOS definiti e gestiti dal software applicativo - attivazione programmi di tabella (memorizzazione di indirizzi). Ogni interrupt specifico è identificato da un numero che ne specifica il tipo. Per ogni interrupt, come si è detto, è previsto un programma gestore di interrupt, che esegue l'intero lavoro richiesto dall'interrupt. L'indirizzo del gestore è contenuto a sua volta nella cosiddetta tabella degli interrupt. Sequenza dii operaziionii per lla gestiione dii un iinterrupt Vogliamo adesso vedere, con sufficiente dettagliato, le azioni che vengono compiute quando si verifica un interrupt, nel caso specifico che questo provenga da un dispositivo di I/O, come ad esempio un disco che ha appena terminato un trasferimento di dati verso la memoria: 1) il controllore del dispositivo asserisce una apposita linea di interrupt sul bus di sistema, al fine di avvisare la CPU dell interrupt e quindi avviare la sequenza di gestione; 2) non appena la CPUU è pronta a servire l interrupt, asserisce un apposito segnale di ricevimento dell interrupt sul bus; 3) vedendo l asserimento del suddetto segnale, il controllore del dispositivo pone un numero intero sulla linea dei dati, al fine di identificare se stesso; tale numero è detto vettore di interrupt; Autore: Sandro Petrizzelli aggiornamento: 7 luglio

11 Le Istruzioni ed il flusso di controllo 4) la CPU legge il vettore di interrupt e lo salva temporaneamente; successivamente, essa memorizza nello stack sia il registro contatore di programma sia il registro di stato (PSW, Program Status Word); 5) a questo punto, la CPU ricerca il nuovo valore da inserire nel registro contatore di programma: usa quindi il vettore di interrupt per indicizzare la tabella degli interrupt, situata nel fondo della memoria: il valore così prelevato dalla tabella degli interrupt corrisponde all indirizzo della routine di servizio di interrupt per il dispositivo che ha provocato l interrupt, per cui tale indirizzo viene posto nel program counter; 6) così facendo, comincia l esecuzione della routine di servizio dell interrupt verificatosi: la prima operazione compiuta consiste nel salvare nello stack il contenuto di una serie di registri (tranne il program counter, che è stato già salvato), in numero tale da poter riprendere successivamente l esecuzione del programma esattamente da dove è stata interrotta; 7) la seconda operazione consiste nell individuare univocamente il dispositivo che ha causato l interrupt, dato che spesso più dispositivi vengono serviti dalla stessa routine: basta andare a leggere il contenuto di un particolare registro dei vari dispositivi potenzialmente coinvolti; 8) può adesso partire la gestione vera e propria dell interrupt, tramite l esecuzione del codice opportuno della routine di servizio dell interrupt; 9) al termine dell esecuzione, tutti i registri precedentemente salvati nello stack vengono ripristinati; eventualmente, si può anche inviare un segnale al dispositivo che ha causato l interrupt, per segnalare che questo è stato servito; 10) infine, viene eseguita l istruzione return form interrupt, che riporta la CPU nella modalità e nello stato in cui si trovata appena prima che si verificasse l interrupt. Da questo momento, il calcolatore continua come se nessuna interruzione si fosse verificata. La gestiione trasparente degllii iinterrupt Un concetto chiave legato agli interrupt è la cosiddetta trasparenza: quando capita un interrupt, vengono avviate determinate azioni ed eseguite determinate procedure, ma, quando tutto questo è stato fatto, il calcolatore dovrebbe ritornare nello stesso stato in cui era prima dell'interrupt. Una routine di interrupt che ha questa proprietà si dice che è trasparente. Mentre sui piccoli calcolatori il processo di gestione di interrupt risulta complessivamente uguale a quello prima descritto, nei grandi calcolatori le cose si complicano per via del fatto che ci sono molti dispositivi di I/O e molti utenti. Infatti, per questi calcolatori spesso accade che, mentre si sta eseguendo una certa routine di interrupt, ci siano una o più altre richieste di interrupt da parte di altri dispositivi. Per uscire da situazioni di questo tipo, si possono adottare due diversi meccanismi: una prima soluzione è la seguente: quando una routine di interrupt viene chiamata, prima ancora di salvare il contenuto dei registri, essa deve fare in modo che ogni altra possibile richiesta di interrupt venga ignorata; deve cioè "disabilitare" gli interrupt seguenti. In tal modo, gli interrupt vengono eseguiti in ordine sequenziale: una volta terminata una routine, si passa all'interrupt aggiornamento: 7 luglio Autore: Sandro Petrizzelli

12 Appunti di Calcolatori Elettronici Appendice 3 immediatamente successivo, poi al successivo e così via. Tuttavia, questo metodo può comportare dei problemi per quei dispositivi che non possono tollerare grandi ritardi della CPU nel prestare loro attenzione; la strategia più conveniente è la seguente: tenendo conto del tempo che i vari dispositivi possono passare in attesa di essere "serviti", si assegna a ciascuno di essi (cioè ai rispettivi interrupt) una priorità, che ovviamente sarà alta per quelli critici e più bassa per gli altri. In questo modo, mentre si sta eseguendo una routine di interrupt di priorità N, ogni tentativo di provocare un interrupt fatto da qualsiasi dispositivo con priorità minore di N è ignorato, finché la routine di interrupt non è finita; solo alla fine della suddetta routine, saranno servite le richieste di interrupt, sempre a partire da quelle con priorità maggiore. Nel caso dei processori INTEL, ci sono 2 livelli di interrupt, cioè 2 priorità: ci sono gli interrupt mascherabili (bassa priorità) e quelli non mascherabili (alta priorità). Gli interrupt della seconda categoria sono usati solo per segnalare errori gravi imminenti, mentre, ad esempio, tutti i dispositivi di I/O usano interrupt mascherabili. Controllller dii iinterrupt Questo dispositivo serve per gestire le priorità dei vari interrupt, nel senso che, quando ci sono contemporaneamente due o più richieste di interrupt al microprocessore, stabilisce quale debba essere servita per prima e quali debbano restare in attesa. Autore: Sandro Petrizzelli sandry@iol.it sito personale: Autore: Sandro Petrizzelli aggiornamento: 7 luglio

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 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

Dettagli

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6 Appunti di Calcolatori Elettronici Esecuzione di istruzioni in parallelo Introduzione... 1 Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD...

Dettagli

CPU. Maurizio Palesi

CPU. 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

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti 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

Dettagli

Architettura hardware

Architettura 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

Dettagli

Esercizi su. Funzioni

Esercizi 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à

Dettagli

Con 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. 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

Dettagli

4. Operazioni aritmetiche con i numeri binari

4. Operazioni aritmetiche con i numeri binari I Numeri Binari 4. Operazioni aritmetiche con i numeri binari Contare con i numeri binari Prima di vedere quali operazioni possiamo effettuare con i numeri binari, iniziamo ad imparare a contare in binario:

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

DMA Accesso Diretto alla Memoria

DMA Accesso Diretto alla Memoria Testo di rif.to: [Congiu] - 8.1-8.3 (pg. 241 250) 08.a DMA Accesso Diretto alla Memoria Motivazioni Organizzazione dei trasferimenti DMA Arbitraggio del bus di memoria Trasferimento di un blocco di dati

Dettagli

ESEMPIO 1: eseguire il complemento a 10 di 765

ESEMPIO 1: eseguire il complemento a 10 di 765 COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento

Dettagli

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo 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

Dettagli

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

Dettagli

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4 ARCHITETTURE MICROPROGRAMMATE. 1 Necessità di un architettura microprogrammata 1 Cos è un architettura microprogrammata? 4 Struttura di una microistruzione. 5 Esempi di microprogrammi 9 Esempio 1 9 Esempio

Dettagli

Configurazione della ricerca desktop di Nepomuk. Sebastian Trüg Anne-Marie Mahfouf Traduzione della documentazione in italiano: Federico Zenith

Configurazione della ricerca desktop di Nepomuk. Sebastian Trüg Anne-Marie Mahfouf Traduzione della documentazione in italiano: Federico Zenith Configurazione della ricerca desktop di Nepomuk Sebastian Trüg Anne-Marie Mahfouf Traduzione della documentazione in italiano: Federico Zenith 2 Indice 1 Introduzione 4 1.1 Impostazioni di base....................................

Dettagli

Gestione della memoria centrale

Gestione della memoria centrale Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti

Dettagli

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Il 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.

Dettagli

Struttura del calcolatore

Struttura del calcolatore Struttura del calcolatore Proprietà: Flessibilità: la stessa macchina può essere utilizzata per compiti differenti, nessuno dei quali è predefinito al momento della costruzione Velocità di elaborazione

Dettagli

Tipi 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. 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

Dettagli

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Sistemi 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

Dettagli

Arduino: Programmazione

Arduino: 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

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. 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

Dettagli

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Funzioni di Esportazione Importazione 1 Indice AIRONE GESTIONE RIFIUTI... 1 FUNZIONI DI ESPORTAZIONE E IMPORTAZIONE... 1 INDICE...

Dettagli

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno Rappresentazione di numeri Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno Un numero e un entità teorica,

Dettagli

Architettura di un sistema di calcolo

Architettura di un sistema di calcolo Richiami sulla struttura dei sistemi di calcolo Gestione delle Interruzioni Gestione della comunicazione fra processore e dispositivi periferici Gerarchia di memoria Protezione. 2.1 Architettura di un

Dettagli

Testi di Esercizi e Quesiti 1

Testi 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

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 PRESTAZIONI DEL CALCOLATORE Massimiliano Giacomin Due dimensioni Tempo di risposta (o tempo di esecuzione): il tempo totale impiegato per eseguire un task (include

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

Corso 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

Dettagli

STRUTTURE DEI SISTEMI DI CALCOLO

STRUTTURE 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

Dettagli

Uso di base delle funzioni in Microsoft Excel

Uso di base delle funzioni in Microsoft Excel Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce

Dettagli

Introduzione. Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache...

Introduzione. Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache... Appunti di Calcolatori Elettronici Concetti generali sulla memoria cache Introduzione... 1 Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache...

Dettagli

Esempi di algoritmi. Lezione III

Esempi di algoritmi. Lezione III Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni

Dettagli

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

SISTEMI 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

Dettagli

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno Parte II Indice Operazioni aritmetiche tra valori rappresentati in binario puro somma sottrazione Rappresentazione di numeri con segno modulo e segno complemento a 2 esercizi Operazioni aritmetiche tra

Dettagli

Più processori uguale più velocità?

Più processori uguale più velocità? Più processori uguale più velocità? e un processore impiega per eseguire un programma un tempo T, un sistema formato da P processori dello stesso tipo esegue lo stesso programma in un tempo TP T / P? In

Dettagli

Dispensa di Informatica I.1

Dispensa 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.

Dettagli

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

Mon Ami 3000 Produzione interna/esterna Gestione della produzione interna/esterna

Mon Ami 3000 Produzione interna/esterna Gestione della produzione interna/esterna Mon Ami 3000 Produzione interna/esterna Gestione della produzione interna/esterna Introduzione Questa guida illustra tutte le funzioni e le procedure da eseguire per gestire correttamente un ciclo di produzione

Dettagli

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe

Dettagli

Pronto Esecuzione Attesa Terminazione

Pronto 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

Dettagli

Laboratorio di Informatica

Laboratorio 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:

Dettagli

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU Lezione n.7 Il moltiplicatore binario e il ciclo di base di una CPU 1 SOMMARIO Architettura del moltiplicatore Architettura di base di una CPU Ciclo principale di base di una CPU Riprendiamo l analisi

Dettagli

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti Il processore: unità di lo Architetture dei Calcolatori (lettere A-I) L unità di lo L unità di lo è responsabile della generazione dei segnali di lo che vengono inviati all unità di elaborazione Alcune

Dettagli

Sistemi Operativi. 5 Gestione della memoria

Sistemi 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

Dettagli

Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico)

Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico) Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico) 1 Aprire Access Appare una finestra di dialogo Microsoft Access 2 Aprire un

Dettagli

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1) La gestione di un calcolatore Sistemi Operativi primo modulo Introduzione Augusto Celentano Università Ca Foscari Venezia Corso di Laurea in Informatica Un calcolatore (sistema di elaborazione) è un sistema

Dettagli

Alessandro Pellegrini

Alessandro Pellegrini Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione

Dettagli

Architettura del calcolatore

Architettura 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

Dettagli

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Sistemi 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

Dettagli

Ing. Paolo Domenici PREFAZIONE

Ing. Paolo Domenici PREFAZIONE Ing. Paolo Domenici SISTEMI A MICROPROCESSORE PREFAZIONE Il corso ha lo scopo di fornire i concetti fondamentali dei sistemi a microprocessore in modo semplice e interattivo. È costituito da una parte

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Sistema 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

Dettagli

Il Sistema Operativo

Il Sistema Operativo Il Sistema Operativo Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al meglio le risorse del Sistema

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

Dettagli

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1 LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1 I CODICI 1 IL CODICE BCD 1 Somma in BCD 2 Sottrazione BCD 5 IL CODICE ECCESSO 3 20 La trasmissione delle informazioni Quarta Parte I codici Il codice BCD

Dettagli

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Scopo della lezione. Informatica. Informatica - def. 1. Informatica Scopo della lezione Informatica per le lauree triennali LEZIONE 1 - Che cos è l informatica Introdurre i concetti base della materia Definire le differenze tra hardware e software Individuare le applicazioni

Dettagli

Esame di INFORMATICA

Esame di INFORMATICA Università di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA Lezione 4 MACCHINA DI VON NEUMANN Anni 40 i dati e i programmi che descrivono come elaborare i dati possono essere codificati nello

Dettagli

Università 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. 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,

Dettagli

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997 1 RAPPRESENTAZIONE BINARIA DEI NUMERI Andrea Bobbio Anno Accademico 1996-1997 Numeri Binari 2 Sistemi di Numerazione Il valore di un numero può essere espresso con diverse rappresentazioni. non posizionali:

Dettagli

Gestione Risorse Umane Web

Gestione Risorse Umane Web La gestione delle risorse umane Gestione Risorse Umane Web Generazione attestati di partecipazione ai corsi di formazione (Versione V03) Premessa... 2 Configurazione del sistema... 3 Estrattore dati...

Dettagli

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine.

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine. Quinto Homework 1) Si vuole progettare una cache a mappatura diretta per un sistema a 32 bit per una memoria da 2 GB (quindi sono solo 31 i bit utili per gli indirizzi) e blocchi di 64 byte. Rispondere

Dettagli

Funzioni in C. Violetta Lonati

Funzioni 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

Dettagli

Manuale d uso per la raccolta: Sicurezza degli impianti di utenza a gas - Postcontatore

Manuale d uso per la raccolta: Sicurezza degli impianti di utenza a gas - Postcontatore Manuale d uso per la raccolta: Sicurezza degli impianti di utenza a gas - Postcontatore 1. Obbligo di comunicazione dei dati... 2 2. Accesso alla raccolta... 2 3. Compilazione... 6 2.1 Dati generali Sicurezza

Dettagli

Elementi di informatica

Elementi di informatica Elementi di informatica Sistemi di numerazione posizionali Rappresentazione dei numeri Rappresentazione dei numeri nei calcolatori rappresentazioni finalizzate ad algoritmi efficienti per le operazioni

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16 Pietro Frasca Lezione 15 Martedì 24-11-2015 Struttura logica del sottosistema di I/O Processi

Dettagli

Introduzione alla programmazione in C

Introduzione 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

Dettagli

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Informatica 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

Dettagli

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

Fondamenti di Informatica 2. Le operazioni binarie

Fondamenti di Informatica 2. Le operazioni binarie Corso di per il corso di Laurea di Ingegneria Gestionale Le operazioni binarie Università degli Studi di Udine - A.A. 2010-2011 Docente Ing. Sandro Di Giusto Ph.D. 1 L'algebra binaria Il fatto di aver

Dettagli

Informatica per le discipline umanistiche 2 lezione 14

Informatica per le discipline umanistiche 2 lezione 14 Informatica per le discipline umanistiche 2 lezione 14 Torniamo ai concetti base dellʼinformatica. Abbiamo sinora affrontato diversi problemi: avere unʼidentità online, cercare pagine Web, commentare il

Dettagli

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

PROCEDURA 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

Dettagli

CAPITOLO 7 - SCAMBIO DI MESSAGGI

CAPITOLO 7 - SCAMBIO DI MESSAGGI CAPITOLO 7 - SCAMBIO DI MESSAGGI Lo scambio di messaggi è una forma di comunicazione nel quale un processo richiede al sistema operativo di mandare dei dati direttamente ad un altro processo. In alcuni

Dettagli

Come masterizzare dischi con Nero 11

Come masterizzare dischi con Nero 11 Come masterizzare dischi con Nero 11 Non c è dubbio che Nero è diventato un sinonimo di masterizzatore di dischi, data la lunga esperienza sul mercato. Molte persone pensano in questo programma nel momento

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Dettagli

MODELLO 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 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

Dettagli

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche Input/Output n Grande varietà di periferiche gestiscono quantità di dati differenti a velocità diverse in formati diversi n Tutti più lenti della CPU e della RAM n Necessità di avere moduli di I/O Moduli

Dettagli

REGOLAMENTO TENNIS STAR

REGOLAMENTO TENNIS STAR REGOLAMENTO TENNIS STAR Slot machine a 5 rulli e 40 linee Lo scopo del gioco Tennis Star è ottenere una combinazione vincente di simboli dopo la rotazione dei rulli. Per giocare: Il valore del gettone

Dettagli

Architettura di un calcolatore

Architettura di un calcolatore 2009-2010 Ingegneria Aerospaziale Prof. A. Palomba - Elementi di Informatica (E-Z) 7 Architettura di un calcolatore Lez. 7 1 Modello di Von Neumann Il termine modello di Von Neumann (o macchina di Von

Dettagli

Registratori di Cassa

Registratori di Cassa modulo Registratori di Cassa Interfacciamento con Registratore di Cassa RCH Nucleo@light GDO BREVE GUIDA ( su logiche di funzionamento e modalità d uso ) www.impresa24.ilsole24ore.com 1 Sommario Introduzione...

Dettagli

Algoritmi e strutture dati. Codici di Huffman

Algoritmi e strutture dati. Codici di Huffman Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per

Dettagli

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente. Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli 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

Dettagli

L espressione torna invece sempre vera (quindi la soluzione originale) se cambiamo contemporaneamente il verso: 1 < 0.

L espressione torna invece sempre vera (quindi la soluzione originale) se cambiamo contemporaneamente il verso: 1 < 0. EQUAZIONI E DISEQUAZIONI Le uguaglianze fra espressioni numeriche si chiamano equazioni. Cercare le soluzioni dell equazione vuol dire cercare quelle combinazioni delle lettere che vi compaiono che la

Dettagli

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo I Thread 1 Consideriamo due processi che devono lavorare sugli stessi dati. Come possono fare, se ogni processo ha la propria area dati (ossia, gli spazi di indirizzamento dei due processi sono separati)?

Dettagli

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME) Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

CONTROLLO DI GESTIONE DELLO STUDIO

CONTROLLO DI GESTIONE DELLO STUDIO CONTROLLO DI GESTIONE DELLO STUDIO Con il controllo di gestione dello studio il commercialista può meglio controllare le attività svolte dai propri collaboratori dello studio nei confronti dei clienti

Dettagli

Appunti di informatica. Lezione 2 anno accademico 2015-2016 Mario Verdicchio

Appunti di informatica. Lezione 2 anno accademico 2015-2016 Mario Verdicchio Appunti di informatica Lezione 2 anno accademico 2015-2016 Mario Verdicchio Sistema binario e logica C è un legame tra i numeri binari (0,1) e la logica, ossia la disciplina che si occupa del ragionamento

Dettagli

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record 5.3 TABELLE In un sistema di database relazionali le tabelle rappresentano la struttura di partenza, che resta poi fondamentale per tutte le fasi del lavoro di creazione e di gestione del database. 5.3.1

Dettagli

http://www.programmiamo.altervista.org/c/oop/o...

http://www.programmiamo.altervista.org/c/oop/o... PROGRAMMIAMO Programma per la gestione di un conto corrente C++ - Costruttore e distruttore C++ Home Contatti Supponiamo ora di voler scrivere un programma a menu per la gestione di un conto corrente bancario.

Dettagli

Pagina 2 di 14. Indice

Pagina 2 di 14. Indice Manuale d uso per la raccolta: Sicurezza e continuità del servizio di distribuzione gas (comma 28.17 dell'allegato A alla deliberazione 574/2013/R/gas) Pagina 1 di 14 Indice 1. Accesso alla raccolta...

Dettagli

B+Trees. Introduzione

B+Trees. Introduzione B+Trees Introduzione B+Trees Il B+Trees e la variante maggiormente utilizzata dei BTrees BTrees e B+trees fanno parte della famiglia degli alberi di ricerca. Nel B+Trees i dati sono memorizzati solo nelle

Dettagli

Logistica magazzino: Inventari

Logistica magazzino: Inventari Logistica magazzino: Inventari Indice Premessa 2 Scheda rilevazioni 2 Registrazione rilevazioni 3 Filtro 3 Ricerca 3 Cancella 3 Stampa 4 Creazione rettifiche 4 Creazione rettifiche inventario 4 Azzeramento

Dettagli

I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte.

I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte. I TUTORI Indice Del Manuale 1 - Introduzione al Manuale Operativo 2 - Area Tutore o Area Studente? 3 - Come creare tutti insieme i Tutori per ogni alunno? 3.1 - Come creare il secondo tutore per ogni alunno?

Dettagli

La somma. Esempio: Il prodotto. Esempio:

La somma. Esempio: Il prodotto. Esempio: La somma L algoritmo della operazione di somma non cambia qualunque sia la base considerata. Naturalmente, le regole da imparare nel caso di una base b sono relative alle sole b 2 posssibili combinazioni

Dettagli

IL SISTEMA INFORMATIVO

IL SISTEMA INFORMATIVO LEZIONE 15 DAL MODELLO DELLE CONDIZIONI DI EQUILIBRIO AL MODELLO CONTABILE RIPRESA DEL CONCETTO DI SISTEMA AZIENDALE = COMPLESSO DI ELEMENTI MATERIALI E NO CHE DIPENDONO RECIPROCAMENTE GLI UNI DAGLI ALTRI

Dettagli

All interno del computer si possono individuare 5 componenti principali: SCHEDA MADRE. MICROPROCESSORE che contiene la CPU MEMORIA RAM MEMORIA ROM

All interno del computer si possono individuare 5 componenti principali: SCHEDA MADRE. MICROPROCESSORE che contiene la CPU MEMORIA RAM MEMORIA ROM Il computer è un apparecchio elettronico che riceve dati di ingresso (input), li memorizza e gli elabora e fornisce in uscita i risultati (output). Il computer è quindi un sistema per elaborare informazioni

Dettagli

Calcolatori Elettronici. La memoria gerarchica La memoria virtuale

Calcolatori 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

Dettagli

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896 2 Esercizio 2.2 La rappresentazione esadecimale prevede 16 configurazioni corrispondenti a 4 bit. Il contenuto di una parola di 16 bit può essere rappresentato direttamente con 4 digit esadecimali, sostituendo

Dettagli