Gestione della Memoria
|
|
- Gina Motta
- 7 anni fa
- Visualizzazioni
Transcript
1 Gestione della Memoria Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 27 apr, 2016
2 Sommario 1 Tecniche di gestione Progetto della gestione della memoria Tipologie 2 Gestione statica 3 Gestione dinamica Blocchi Record di attivazione Gestione della pila Gestione dinamica con heap 4 Implementazione delle regole di scope Scope statico Puntatore di catena statica Display Scope dinamico Lista di associazioni CRT Gestione della Memoria 27 apr, / 54
3 Agenda 1 Tecniche di gestione Progetto della gestione della memoria Tipologie 2 Gestione statica 3 Gestione dinamica 4 Implementazione delle regole di scope Gestione della Memoria 27 apr, / 54
4 Progetto della gestione della memoria Programmi e dati Allocazione Durata Strutture dati ausiliarie per la gestione Gestione della Memoria 27 apr, / 54
5 Tipologie Macchina astratta di basso livello Gestione statica: dati e programmi in memoria prima dell esecuzione e fino alla fine Macchina astratta di alto livello Gestione dinamica: allocazione e deallocazione decisa durante l esecuzione Ricorsione: il compilatore non può stabilire un numero massimo di sottoprogrammi attivi Uso di una Pila (politica LIFO) Allocazione dinamica esplicita Uso dell Heap Gestione della Memoria 27 apr, / 54
6 Agenda 1 Tecniche di gestione 2 Gestione statica 3 Gestione dinamica 4 Implementazione delle regole di scope Gestione della Memoria 27 apr, / 54
7 Gestione statica Gestione ad opera del compilatore Tutti gli oggetti in una zona fissata Variabili globali Istruzioni del codice oggetto Costanti Tabelle interne prodotte dal compilatore: Gestione nomi Controllo sui tipi Garbage collection Linguaggio senza ricorsione Zona di memoria fissata per ogni sottoprogramma Variabili locali Parametri Indirizzo di ritorno Info di bookkepping Gestione della Memoria 27 apr, / 54
8 Gestione statica [... cont.] sottoprogramma p 2 sottoprogramma p 1 Informazioni di sistema Indirizzo di ritorno Parametri Informazioni di sistema Indirizzo di ritorno Parametri sottoprogramma p n Informazioni di sistema Indirizzo di ritorno Parametri Variabili Locali Variabili Locali Variabili Locali Risultati Intermedi Risultati Intermedi... Risultati Intermedi Gestione della Memoria 27 apr, / 54
9 Gestione statica Problema Osservazioni chiamate successive dello stesso sottoprogramma condividono la stessa area di memoria ricorsione: 1 int fib (int n) { 2 if (n == 0) return 1; 3 else if (n == 1) return 1; 4 else return fib(n-1) + fib(n-2); 5 } il numero di chiamate ricorsive dipende dall argomento n: servono più copie dell area di memoria dedicata ad ogni sottoprogramma (una per chiamata) Gestione della Memoria 27 apr, / 54
10 Agenda 1 Tecniche di gestione 2 Gestione statica 3 Gestione dinamica Blocchi Record di attivazione Gestione della pila Gestione dinamica con heap 4 Implementazione delle regole di scope Gestione della Memoria 27 apr, / 54
11 Gestione dinamica Rinviene dall uso della strutturazione a blocchi dei programmi In-line Corpi di sottoprogrammi Apertura e chiusura politica LIFO Gestione della Memoria 27 apr, / 54
12 Blocchi 1 A: { 2 int a = 1; 3 int b = 0; 4 B: { 5 int c = 3; 6 int b = 3; 7 } 8 b = a+1; 9 } Gestione della Memoria 27 apr, / 54
13 Blocchi [... cont.] b 0 a 1 A b 0 a 1 A b 2 a 1 A b 3 c 3 B Gestione della Memoria 27 apr, / 54
14 Record di attivazione Spazio di memoria allocato su pila (noto anche come frame) per i blocchi in-line per il corpo di sottoprogramma Associato ad ogni attivazione (dinamicamente) e non alla dichiarazione (staticamente) Pila di run-time (o di sistema) Utilizzato anche per linguaggi senza ricorsione per ottimizzare l occupazione della memoria rispetto ad una politica interamente di tipo statico Gestione della Memoria 27 apr, / 54
15 Record di attivazione [... cont.] Un RdA in-line contiene: Risultati intermedi calcoli complessi semplificati dal compilatore Variabili locali dichiarate nel blocco dimensioni note a compile-time Eccezione: dim. array dinamici gestite con (parte fissa, parte variabile) Puntatore catena dinamica ovvero link dinamico o di controllo punta al precedente RdA sulla pila necessario date le diverse dim. dei RdA RdA Blocco Inline Puntatore di catena statica / dinamica Variabili locali Variabili temporanee Gestione della Memoria 27 apr, / 54
16 Record di attivazione [... cont.] Nel RdA di sottoprogramma: Risultati intermedi Variabili locali Punt. di catena dinamica Punt. di catena statica se si adotta tale scope Indirizzo di ritorno prima istruzione da eseguire dopo l uscita Indirizzo del risultato nel RdA del CHIAMANTE per funzioni Parametri Valori dei parametri effettivi usati dal sottoprogramma RdA di Sottoprogramma Puntatore di catena dinamica Puntatore di catena statica Indirizzo di ritorno Indirizzo dei risultati Parametri Variabili locali Risultati intermedi Gestione della Memoria 27 apr, / 54
17 Record di attivazione [... cont.] Osservazioni La disposizione dei campi effettiva dipende dalle implementazioni Si usano offset per individuare i vari campi di norma, non compaiono identificatori di variabili (locali e non): il compilatore calcola gli offset Ottimizzazione Es.: salvataggio di informazioni nei registri anziché nel RdA Gestione della Memoria 27 apr, / 54
18 Gestione della pila Puntatore di RdA (o frame pointer): si riferisce all ambiente corrente Stack pointer dell inizio della memoria libera Operazioni su RdA Inserimento entrata in un blocco chiamata di sottoprogramma eliminazione uscita dal blocco uscita da sottoprogramma Gestione della Memoria 27 apr, / 54
19 Gestione della pila [... cont.] fondo della pila RdA RdA. puntatore RdA RdA cima della pila zona libera Gestione della Memoria 27 apr, / 54
20 Gestione della pila [... cont.] Codice aggiunto dal compilatore nel CHIAMANTE (o blocco esterno): sequenza di chiamata eseguita, in parte, prima della chiamata (entrata) eseguita, in parte, al ritorno dalla chiamata (uscita) nel CHIAMATO (o blocco interno): prologo eseguito subito dopo la chiamata (entrata) epilogo eseguito subito prima del ritorno dalla chiamata (uscita) Gestione della Memoria 27 apr, / 54
21 Azioni chiamata / entrata (seq. di chiamata + prologo): modifica del PC allocazione spazio su pila modifica puntatore RdA passaggio parametri salvataggio registri esecuzione codice inizializzazione Gestione della Memoria 27 apr, / 54
22 Azioni [... cont.] ritorno / uscita (ritorno controllo di chiamata + epilogo): ripristino del PC restituzione dei valori (funzioni) ripristino registri (+modifica puntatore RdA) esecuzione codice finalizzazione deallocazione spazio su pila Gestione della Memoria 27 apr, / 54
23 Gestione dinamica con heap Per linguaggi con allocazione esplicita della memoria C, C++, PASCAL,... non si può seguire una politica LIFO Si utilizza una zona di memoria diversa dallo stack: gestito con blocchi di dim. fissa di dim. variabile HEAP Gestione della Memoria 27 apr, / 54
24 Gestione dinamica con heap [... cont.] 1 int * p, * q; / * p,q puntatori a var. intere; val. NULL * / 2 p = malloc (sizeof (int)); / * alloca var. puntata da p * / 3 q = malloc (sizeof (int)); / * alloca var. puntata da q * / 4 * p = 0; / * dereferenzia ed assegna * / 5 * q = 1; / * dereferenzia ed assegna * / 6 free(p); / * dealloca la var. puntata * / 7 free(q); / * dealloca la var. puntata * / Gestione della Memoria 27 apr, / 54
25 Blocchi di dim. fissa Heap suddiviso in blocchi di dimensioni fisse e limitate collegati in una struttura di lista detta lista libera allocazione deallocazione il primo elemento della lista libera viene rimosso il puntatore a tale elemento viene restituito si aggiorna il puntatore al primo elemento della lista libera all elemento successivo il blocco liberato viene collegato in testa alla lista libera si aggiorna il puntatore all elemento successivo a quello aggiunto Gestione della Memoria 27 apr, / 54
26 Blocchi di dim. fissa [... cont.] inizio lista inizio lista.. Gestione della Memoria 27 apr, / 54
27 Blocchi di dim. variabile Dim. fissa: inadeguata per strutture grandi Esempio grande vettore di dim. variabili Blocchi di dim. variabile: gestione tesa ad ottimizzare (con opportuni compromessi) 1 l occupazione della memoria frammentazione interna porzione di blocco allocato inutilizzato esterna memoria libera sufficiente nel complesso, ma non in un unico blocco necessità di ricompattamento 2 l efficienza dell esecuzione basso numero di operazioni aggiuntive richieste (overhead) Gestione della Memoria 27 apr, / 54
28 Blocchi di dim. variabile [... cont.] LL x fabbisogno y x+y. frammentazione esterna Gestione della Memoria 27 apr, / 54
29 Unica lista libera Inizialmente un blocco pari a tutta la mem. disponibile (heap) richiesta di allocazione soddisfatta usando le prime n parole avanza il puntatore LL analogamente per le successive richieste i blocchi deallocati (non contigui) formano una catena Gestione della Memoria 27 apr, / 54
30 Unica lista libera [... cont.] Quando non c è più spazio sull heap: 1 utilizzo diretto della lista libera si mantiene una lista di blocchi liberi di dim. variabile allocazione: si cerca nella lista un blocco di dim. k n utile al fabbisogno criterio first-fit (migliore efficienza) criterio best fit (migliore occupazione) la porzione di blocco k n non usata resta nella lista libera deallocazione: si ricompatta il blocco eventualmente assieme ai blocchi liberi adiacenti 2 compattazione della mem. libera in caso di esaurimento dello spazio direttamente allocabile: spostamento dei blocchi attivi (solo se rilocabili) compattamento dei blocchi liberi in un estremità della memoria Gestione della Memoria 27 apr, / 54
31 Multiple liste libere Molteplici liste ognuna contenente di blocchi di diverse grandezze per un fabbisogno pari ad n allocazione: selezione della lista con blocchi di dim. k con k n allocazione usando tale lista come nel caso di singola lista libera deallocazione: idem Osservazione frammentazione interna se le dim. sono statiche Gestione della Memoria 27 apr, / 54
32 Multiple liste libere [... cont.] buddy system: dim. dei blocchi potenze di 2 allocazione: sia k tale che blocco di dim. 2 k > n se libero viene allocato altrimenti si considera un blocco della lista 2 k+1 e lo si divide in due parti 1 una viene allocata 2 l altra diventa un blocco libero tra i blocchi 2 k deallocazione: ricerca del compagno (buddy) se libero fusione in un blocco di dim. 2 k+1 heap di Fibonacci: come il precedente la successione di Fibonacci cresce più lentamente Gestione della Memoria 27 apr, / 54
33 Agenda 1 Tecniche di gestione 2 Gestione statica 3 Gestione dinamica 4 Implementazione delle regole di scope Scope statico Scope dinamico Gestione della Memoria 27 apr, / 54
34 Implementazione delle regole di scope Riferimenti nel RdA: nomi locali Nomi non locali? ricerca nei RdA attivi sulla pila ordine dipende dal tipo di scope adottato: statico dinamico Gestione della Memoria 27 apr, / 54
35 Scope statico Ordine di ricerca di riferimenti non-locali diverso da quello dei blocchi sulla pila 1 A:{ int y=0; 2 B:{ int x = 0; 3 void P (int n) { 4 x = n+1; 5 y = n+2; 6 } 7 C:{ int x = 1; 8 P(2); 9 write(x); 10 } 11 } 12 write(y); 13 } dopo la chiamata di P, sulla pila: Gestione della Memoria 27 apr, / 54
36 Scope statico [... cont.] y int 0... A P A B x int 0 P fun... B codice C x int 1... C p. RdA attivo n int 1... P Gestione della Memoria 27 apr, / 54
37 Scope statico [... cont.] RdA di un blocco B collegato mediante puntatore di catena statica al blocco immediatamente esterno che lo contiene nel sorgente B blocco di sottoprogramma: il blocco esterno a B ne contiene la dichiarazione B attivo: anche i blocchi esterni che lo contengono devono essere attivi (RdA sulla pila) vengono mantenute quindi 2 catene (cfr. fig. seguente) gestione tramite codice: sequenza di chiamata, prologo ed epilogo Gestione della Memoria 27 apr, / 54
38 Scope statico [... cont.] Esempio catena statica (e dinamica) per la struttura a destra A B C B D E C A C D E. Gestione della Memoria 27 apr, / 54
39 Calcolo puntatore di catena statica In genere, all ingresso in un blocco: il CHIAMANTE calcola del punt. di catena statica del CHIAMATO e glielo passa 2 casi: 1 CHIAMATO all esterno del CHIAMANTE perché sia visibile, il CHIAMATO deve trovarsi in un blocco esterno che includa anche il CHIAMANTE (quindi il RdA di questo blocco esterno è già sulla pila) numero di livelli di distanza determinabile dal compilatore: k = livello(chiamato) livello(chiamante) si seguono k livelli di catena statica 2 CHIAMATO all interno del CHIAMANTE per la visibilità, il CHIAMATO è dichiarato nel blocco della chiamata per il CHIAMANTE, basta risalire al blocco esterno k = 1 il CHIAMATO (prologo) memorizza il puntatore di catena statica ricevuto nel suo RdA Gestione della Memoria 27 apr, / 54
40 Calcolo puntatore di catena statica [... cont.] il compilatore tiene traccia del liv. di annidamento delle chiamate usando la tavola dei simboli: nome + numero di scope nell es. precedente, per risolvere y in P calcola distanza 2 da A dov è la sua dichiarazione tuttavia non può risolvere tutti i riferimenti; alcuni sono legati al numero di RdA presenti sulla pila a run-time Osservazione svantaggio: per una distanza pari a k, si devono scorrere k livelli di catena statica Gestione della Memoria 27 apr, / 54
41 Scope statico / Display Obiettivo: ridurre ad un numero costante gli accessi display: vettore di dim. pari a numero di livelli di annidamento display[k]: puntatore al RdA di livello k attivo Per ogni riferimento ad un nome non locale: dichiarato in blocco esterno a livello k il puntatore al RdA è nel display nella posizione k Gestione della Memoria 27 apr, / 54
42 Scope statico / Display [... cont.] Gestione semplice ma più costosa: all entrata in nuovo ambiente di livello k, si salva (nel CHIAMATO) il valore precedente di display[k], se presente condivisione del display in toto o in parte col CHIAMANTE si aggiorna display[k] con il puntatore del RdA del CHIAMATO Gestione della Memoria 27 apr, / 54
43 Scope statico / Display [... cont.] Siano n liv. del CHIAMANTE e m liv. del CHIAMATO 1 CHIAMATO all esterno del CHIAMANTE m < n condivisione della str. statica fino al liv. m 1 si aggiorna display[m] per puntare al RdA del CHIAMATO, salvando il contenuto precedente il display è attivo fino alla pos. m; all uscita verrà ripristinato 2 CHIAMATO all interno del CHIAMANTE m > n condivisione del display fino al livello n si incrementa il liv. di profondità del display e inserisci il puntatore al RdA del CHIAMATO in display[n + 1] se si era già arrivati a liv. n + 1, si salva il vecchio contenuto presente Gestione della Memoria 27 apr, / 54
44 Scope statico / Display [... cont.] vantaggio: semplicità ambienti non locali considerati secondo l ordine di chiamata svantaggi: necessità di memorizzare esplicitamente i nomi per la ricerca può essere inefficiente far tutto il lavoro a run-time Gestione della Memoria 27 apr, / 54
45 Scope statico / Display [... cont.] chiamate nell ordine A B C D E C a sinistra della pila puntatori relativi ai vecchi valori nei display nella pos. del CHIAMATO linea tratteggiata p. non attivo A: [ B: [ ], C: [ D: [ ], E: [ ] ] ] Gestione della Memoria 27 apr, / 54
46 Scope dinamico / Lista di associazioni memorizzazione associazioni nome/oggetto nel RdA, oppure in una lista di associazioni (A-list) gestita come una pila entrata/uscita in/da un nuovo ambiente: info: nuove associazioni vengono inserite/eliminate nella/dalla lista locazione tipo altre info necessarie a controlli semantici Gestione della Memoria 27 apr, / 54
47 Scope dinamico / Lista di associazioni [... cont.]... A x y... x y B x v... B C x v w x A C w x D w... D w... p. RdA attivo Gestione della Memoria 27 apr, / 54
48 Scope dinamico / Lista di associazioni [... cont.] / x tipo, locazione,... y x y x x B v v w x A C w D w p. A-List w x Gestione della Memoria 27 apr, / 54
49 Scope dinamico / CRT Si ovvia agli svantaggi di altri metodi a scapito dell efficienza tutti i blocchi in un unica tabella: CRT Central Referencing environment Table tutti i nomi presenti; per ogni nome: flag (associazione attiva sì/no) puntatore alle informazioni associate (locazione, tipo,... ) se tutti i nomi sono noti a compile-time ricerca in tempo costante (ind.tabella + offset) altrimenti: ricerca hash Gestione della Memoria 27 apr, / 54
50 Scope dinamico / CRT [... cont.] Ingresso da A in B: modifica della CRT per un nuovo ambiente locale di A non necessariamente in entry contigue nella tabella salvataggio associazioni disattivate (in una pila) per successivo ripristino all uscita da B Pila esplicita top: associazione attiva altre: associazioni disattivate nascosta (separata dalla CRT) (nome, flag, rif. ad oggetto) non è richiesta ricerca accesso (diretto o hash) alla tabella, che contiene l info Gestione della Memoria 27 apr, / 54
51 Scope dinamico / CRT [... cont.] in C in B in A x info info info / y info / v info / w info info / in D in C chiamate di A, B, C, D Gestione della Memoria 27 apr, / 54
52 Scope dinamico / CRT [... cont.] A AB ABC ABCD x 1 α 1 x 1 β 1 x 1 γ 1 x 1 γ 1 y 1 α 2 y 1 α 2 y 1 α 2 y 1 α 2 v 0 v 1 β 2 v 0 β 2 v 0 β 2 w 0 w 0 w 1 γ 2 w 1 δ 1 stack nascosto x α 1 x α 1 x β 1 x α 1 x β 1 w γ 1 Gestione della Memoria 27 apr, / 54
53 Esercizi Dal libro di testo (2a ed.) Es.1 scrivere in pseudolinguaggio un frammento di codice tale che il n.ro max di RdA sulla pila non sia determinabile staticamente Es.2 scrivere in pseudolinguaggio una funzione ricorsiva tale che il n.ro max di suoi RdA sulla pila sia determinabile staticamente Es.3 Es.4 Es.5 Es.6 è più facile implementare la regola di scope statico o dinamico? Motivare Es.7 Gestione della Memoria 27 apr, / 54
54 Riferimenti Gabbrielli & Martini: Linguaggi di Programmazione, McGraw-Hill 2a edizione. [cap. 7] Gestione della Memoria 27 apr, / 54
Funzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliStrutture dati nel supporto a run time
Strutture dati nel supporto a run time 1 Entità presenti quando un programma va in esecuzione programmi d utente (compilati) routines del supporto interprete I/O, librerie, routines per la gestione delle
DettagliGestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.
DettagliAllocazione dinamica della memoria
Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori
DettagliGestione della memoria
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliUniversità degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Allocazione dinamica di memoria
di Cassino e del Lazio Meridionale Corso di Informatica Allocazione dinamica di memoria Anno Accademico 2015/2016 Francesco Tortorella Allocazione dinamica di memoria Finora abbiamo considerato variabili
DettagliStrutture Dinamiche. Fondamenti di Informatica
Strutture Dinamiche Fondamenti di Informatica 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione Companies, srl 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato));
DettagliAllocazione Dinamica della Memoria
Allocazione Dinamica della Memoria Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Allocazione Dinamica della Memoria 1 / 10 Scelta delle variabili Quando
DettagliLinguaggio C: le funzioni. Visibilità variabili e passaggio parametri
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri
DettagliCalcolatori Elettronici Lezione A4 Programmazione a Moduli
Calcolatori Elettronici Lezione A4 Programmazione a Moduli Ing. Gestionale e delle Telecomunicazioni A.A. 2007/08 Gabriele Cecchetti Sommario Programmazione a moduli Programmi con linguaggi misti Tempo
DettagliAllocazione dinamica della memoria
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Tipi di memoria dati Nella macchina astratta C esistono tre tipi di memoria per allocare
DettagliOgni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
DettagliArgomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili
Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto
DettagliStrutture Dati Dinamiche
Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti
DettagliUnità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.
Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;
DettagliLa Gestione della Memoria. Carla Binucci e Walter Didimo
La Gestione della Memoria Carla Binucci e Walter Didimo Esecuzione di programmi Java L esecuzione di un programma Java richiede: la compilazione del codice Java in bytecode Java (un linguaggio macchina
DettagliOttenere una modifica del parametro attuale
Ottenere una modifica del parametro attuale Le variabili passate come parametri a una funzione, se alterate durante l esecuzione, non cambiano valore all uscita dalla funzione (parametri passati per valore)
DettagliNomi e Ambiente. Nicola Fanizzi. Linguaggi di Programmazione [010194] 20 apr, 2016. Dipartimento di Informatica Università degli Studi di Bari
Nomi e Ambiente Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 20 apr, 2016 Sommario 1 Nomi Definizione Astrazione Elementare Progettazione
DettagliAllocazione Dinamica. Allocazione Statica. malloc() La funzione malloc()
Allocazione Statica Finora abbiamo visto che le variabili sono sempre definite staticamente. Questo è un limite perché la loro esistenza deve essere prevista e dichiarata a priori. In particolare per variabili
DettagliIntroduzione al C. Unità Gestione Dinamica della Memoria
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità Gestione Dinamica della Memoria D. Bloisi, A. Pennisi, S. Peluso, S. Salza Gestione
DettagliTipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.
Array di Tipi di dato utente Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Array di Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione
DettagliPile Le pile: specifiche e realizzazioni attraverso rappresentazioni sequenziali e collegate. Pile e procedure ricorsive
Pile Le pile: specifiche e realizzazioni attraverso rappresentazioni sequenziali e collegate. Pile e procedure ricorsive Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di
DettagliMacchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016
Macchine Astratte Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione 010194 29 feb, 2016 Sommario 1 Introduzione Macchina astratta Interprete Implementazione
DettagliArchitettura dei calcolatori e sistemi operativi. Sottoprogrammi e MIPS. Espressioni algebriche. Capitolo 2 P&H
Architettura dei calcolatori e sistemi operativi Sottoprogrammi e MIPS Espressioni algebriche Capitolo 2 P&H Sottoprogrammi Modello di chiamata Area di attivazione Calcolare un espressione algebrica 2
Dettagli6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it
DettagliScope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano
Scope delle variabili e passaggio parametri Danilo Ardagna Politecnico di Milano 1-4-2014 Introduzione! Con le funzioni è stato introdotto un meccanismo per definire dei piccoli programmi all interno di
DettagliGESTIONE DELLA MEMORIA CENTRALE 6.1 D. - UNICAL
GESTIONE DELLA MEMORIA CENTRALE 6.1 Gestione della Memoria Background Spazio di indirizzi Swapping Allocazione Contigua Paginazione 6.2 Background Per essere eseguito un programma deve trovarsi (almeno
DettagliLinguaggio C: PUNTATORI
Linguaggio C: PUNTATORI I puntatori sono una delle più importanti caratteristiche del linguaggio C. Permettono di lavorare a basso livello, mantenendo flessibilità e praticità. Il C utilizza molto i puntatori
Dettagli7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
DettagliDefinizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Meccanica, Elettrica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011
DettagliParametri Formali di una Funzione e Record di Attivazione
Parametri Formali di una Funzione e Attivazione Un record di attivazione rappresenta il mondo di una funzione, e contiene tutto ciò che ne caratterizza l esistenza, tra cui ad esempio: le variabili locali
DettagliScope, Memoria e Tabella dei Simboli
Scope, Memoria e Tabella dei Simboli La tabella dei simboli è uno strumento fondamentale attraverso il quale interpreti e compilatori implementano la traduzione da un programma scritto in un linguaggio
DettagliProgrammazione (imperativa)
Programmazione (imperativa) Corso di Laurea in Informatica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Lunedì 12.00-13.00 e 14.00-16.00 Mercoledì 14.00-17.00 Laboratorio: Giovedì 12.00-13.00
DettagliAllocazione della memoria. Allocazione dinamica della memoria. Allocazione della memoria. Allocazione automatica
Allocazione dinamica della memoria Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Allocazione della memoria Il termine allocazione viene utilizzato per indicare l assegnazione di un blocco
DettagliFUNZIONI RICORSIVE PROGRAMMAZIONE RICORSIVA: Esempi di problemi ricorsivi:
FUNZIONI RICORSIVE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento (chiamata) a se stessa. Esempio: Esempi di problemi ricorsivi: 1) Somma dei primi
DettagliTempo di vita e scope delle variabili
Tempo di vita e scope delle variabili Richiami sulla struttura di un programma C Un programma C deve essere contenuto in uno o più file (salvo diversa specifica, per ora si assume tutto in un unico file):
Dettagli! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente
! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente!!la loro esistenza deve essere prevista e dichiarata a priori! Questo può rappresentare un problema soprattutto per variabili
DettagliL'allocazione dinamica della memoria
L'allocazione dinamica della memoria Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino I puntatori Le variabili di tipo puntatore permettono di accedere alla memoria
DettagliAllocazione statica della memoria
2015 - Roberta Gerboni 1 2 Allocazione statica della memoria Cosa succede nella memoria del computer quando il un programma vengono dichiarate delle variabili? memoria Ad esempio: int main() 57 { int x=
DettagliCalcolatori Elettronici Parte VIII: linguaggi assemblativi
Anno Accademico 2013/2014 Calcolatori Elettronici Parte VIII: linguaggi assemblativi Prof. Riccardo Torlone Universita di Roma Tre Linguaggi di Programmazione Linguaggi ad alto livello Maggiore espressività
DettagliIntroduzione al linguaggio C Puntatori
Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2016
DettagliArray. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliFondamenti di Informatica II
Università degli studi di Messina Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica e delle Telecomunicazioni Fondamenti di Informatica II Tipi di dati astratti(adt)- seconda parte Coda Struttura
DettagliEsercitazioni di Informatica 3
Esercitazioni di Informatica 3 Part I: Programming Languages Syntax and semantics Laurea in Ingegneria Informatica Politecnico di Milano Polo di Milano Leonardo Esercizio 1: EBNF Utilizzando il linguaggio
DettagliIl C nel C++: Funzioni
Il C nel C++: Funzioni Funzioni (1) il concetto -> spezzare il programma in parti (procedure) una funzione è un parte di programma dotata di un nome che può essere richiamata in altri punti del programma
DettagliSommario. Le strutture dati elementari per implementare sequenze: Vettori Liste
Sequenze Sommario Le strutture dati elementari per implementare sequenze: Vettori Liste Strutture dati elementari Le strutture dati vettore e lista sono fra le strutture dati più usate e semplici Il loro
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 5 Martedì 25-10-2016 Definizione di processo Esiste una distinzione concettuale
DettagliProgrammazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 6 - Liste Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento
DettagliIl linguaggio C Strutture
Il linguaggio C Strutture Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C -- Strutture 2 Ringraziamenti Questi
DettagliAstrazione Dati. Nicola Fanizzi. Linguaggi di Programmazione [010194] 10 mag, Dipartimento di Informatica Università degli Studi di Bari
Astrazione Dati Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 10 mag, 2016 Sommario 1 Astrazione dati Incapsulamento Esempio / ADT pila
DettagliLa gestione della memoria dinamica Heap
Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Prof. Luigi Lamberti 2005 Cenni sui Processi Un Programma è un insieme di Istruzioni memorizzato in un file con le costanti
DettagliLaboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007
Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/03/07 Nota Questi lucidi sono tratti
Dettaglicap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe
cap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe 1 tipi statici e tipi dinamici in generale i LP hanno tipi statici, cioè ogni variabile ha un tipo dichiarato
DettagliVisibilità e tempo di vita delle variabili. (più sintesi di alcuni concetti della prima parte del corso)
Visibilità e tempo di vita delle variabili (più sintesi di alcuni concetti della prima parte del corso) Struttura dei programmi C/C++ Un programma C/C++ deve essere contenuto in uno o più file (per ora
DettagliProgramma di Paradigmi e possibili domande. Capitolo 1
Definizione di macchina astratta Programma di Paradigmi e possibili domande Capitolo 1 Una macchina astratta per il linguaggio L detta ML, è un qualsiasi insieme di algoritmi e strutture dati che permettono
Dettagli4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste
4 Le liste collegate 4.0 Le liste collegate c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 4.0 0 4 Le liste collegate Rappresentazione di liste 4.1
DettagliProf. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1
Operazioni sulle liste Definiamo una serie di procedure e funzioni per operare sulle liste. Usiamo liste di interi per semplicità, ma tutte le operazioni sono realizzabili in modo del tutto analogo su
DettagliI Linguaggi di Programmazione
I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio
DettagliPuntatori. Unità 6. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni
DettagliCapitolo 19. Ricorsione
Capitolo 19 La ricorsione Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a sé stessa Esempio: Funzione fattoriale su interi non negativi: f(n) = n!
DettagliLa struttura dati CODA
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati CODA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una coda (o queue) è una struttura dati astratta
DettagliPuntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata
Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione
DettagliFRAMEWORK PER L'ESECUZIONE DI APPLICAZIONI ASSEMBLY SUL MODELLO VERILOG DI UN SISTEMA DI ELABORAZIONE BASATO SUL PROCESSORE emips-sc
44 FRAMEWORK PER L'ESECUZIONE DI APPLICAZIONI ASSEMBLY SUL MODELLO VERILOG DI UN SISTEMA DI ELABORAZIONE BASATO SUL PROCESSORE emips-sc MODELLO VERILOG DEL PROCESSORE 45 MODELLO VERILOG DEL SISTEMA COMPLETO
DettagliGestione della memoria
Gestione della memoria centrale Gestione della memoria Concetti generali. Swapping. Allocazione contigua di memoria. Paginazione. Segmentazione. Segmentazione con paginazione. Esempio: Pentium Intel Background
DettagliProgrammazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario La ricorsione Metodi ricorsivi Esercizi proposti 16/01/2013 2 La ricorsione In Java ogni metodo può chiamare anche se stesso,
DettagliStrutture dati e loro organizzazione. Gabriella Trucco
Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi
DettagliPuntatori. Unità 6. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
DettagliL Allocazione Dinamica della Memoria
L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario Questo documento
DettagliMacchine astratte, linguaggi, interpretazione, compilazione
Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta
DettagliStrutture dati: tavole o tabelle TABELLA DEI SIMBOLI
TABELLA DEI SIMBOLI Le tabelle dei simboli servono a due scopi: controllano la correttezza semantica (la parte dipendente dal contesto della grammatica) ed aiutano nella generazione del codice. Tutte queste
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
DettagliPILE E CODE. Pile (stack):
PILE E CODE Sono tipi di dato che consentono di rappresentare sequenze di elementi in cui gli inserimenti e le cancellazioni sono eseguiti con particolari modalita` (politiche o discipline). Pile (stack):
DettagliProf.Ing.S.Cavalieri Puntatori e Heap in Linguaggio C. Puntatori e Heap
Puntatori e Heap 1.Cosa Sono i Puntatori? I puntatori sono fondamentalmente delle variabili, come quelle intere, reali e carattere. Tuttavia, l unica differenza consiste nel fatto che essi non contengono
DettagliAllocazione dinamica
Allocazione dinamica Quando non si sa a priori quanto un array debba essere grande allocazione dinamica di array Quando si deve restituire un array come risultato di una funzione (a meno di non barare
DettagliInformatica 3. LEZIONE 2: Sintassi e semantica
Informatica 3 LEZIONE 2: Sintassi e semantica Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4: Routine Convenzioni dei nomi Informatica
DettagliProgrammazione con Java
Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:
DettagliFondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati
Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli Studi di Bologna Anno Accademico 2008/2009 Sommario
DettagliStrutturare il codice: sottoprogrammi
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Motivazioni Alcuni problemi si presentano frequentemente durante lo sviluppo di un programma
DettagliUniversità degli Studi di Cassino Corso di Fondamenti di Informatica Visibilità e tempo di vita delle variabili
Corso di Fondamenti di Informatica Visibilità e tempo di vita delle variabili Anno Accademico Francesco Tortorella Il concetto di visibilità Un programma C++ può assumere una struttura complessa grazie
DettagliIl file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.
Il File System Il file system È quella parte del Sistema Operativo che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria di massa. Realizza i concetti
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
DettagliFondamenti di Informatica T. Linguaggio C: i puntatori
Linguaggio C: i puntatori Il puntatore E` un tipo di dato, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un insieme
DettagliLinguaggio C: puntatori
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: puntatori La presente dispensa e da utilizzarsi ai soli fini didattici previa
DettagliEsercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore
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
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliIntroduzione al C. Tipi derivati
Introduzione al C Tipi derivati 1 Strutture semplici Una struttura è una collezione di una o più variabili, anche di tipi diversi, raggruppate da un nome struct tag{ struttura_elementi } istanza; struct
DettagliUna breve introduzione all implementazione in C di algoritmi su grafo
Una breve introduzione all implementazione in C di algoritmi su grafo A cura di Gianmaria Leo Introduzione La lezione è un introduzione a concetti e strumenti che permettono l implementazione di algoritmi
DettagliIl file È un insieme di informazioni: programmi. Il File System. Il file system
Il File System Il file È un insieme di informazioni: programmi d a t i testi rappresentati come insieme di record logici (bit, byte, linee, record, etc.) Ogni file è individuato da (almeno) un nome simbolico
DettagliUso avanzato dei puntatori Allocazione dinamica della memoria
Uso avanzato dei puntatori Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
Dettagli14 - Metodi e Costruttori
14 - Metodi e Costruttori 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
DettagliLe basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
DettagliSommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...
Sommario PREFAZIONE...XI Aggiornamenti e novità... xi Lo scopo di questo libro... xii Diagramma delle dipendenze... xii La metodologia di insegnamento... xiii Panoramica sul libro... xvi Ringraziamenti...
DettagliInformatica 3. Informatica 3. LEZIONE 2: Sintassi e semantica. Lezione 2- Modulo 1. Le componenti di un linguaggio di programmazione
Informatica 3 Informatica 3 LEZIONE 2: Sintassi e semantica Lezione 2- Modulo 1 Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4:
DettagliAlgoritmi di ordinamento: Array e ricorsione
Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Algoritmi di ordinamento: Array e ricorsione 2 1 Indice Algoritmi di ordinamento: Insertion
DettagliIndice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX
Indice Prefazione Gli Autori Ringraziamenti dell Editore La storia del C XVII XXIX XXXI XXXIII PARTE A Capitolo 1 Computer 1 1.1 Hardware e software 2 1.2 Processore 3 1.3 Memorie 5 1.4 Periferiche di
DettagliLezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22
Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)
DettagliCalcolatori Elettronici
Calcolatori Elettronici Il linguaggio assemblativo MIPS (4) Le function (2) Gestione dei sottoprogrammi $a0 - $a3 - $v1 $ra : 4 registri argomento per il passaggio dei parametri : due registri per la restituzione
Dettagli