RUN TIME ENVIRONMENT
|
|
- Ambrogio Mele
- 8 anni fa
- Visualizzazioni
Transcript
1 RUN TIME ENVIRONMENT MEMORY ORGANIZATION Compiler must do the storage allocation and provide access to variables and data Memory management Stack allocation Heap management Garbage collection 1
2 MEMORY ORGANIZATION hypothesis Run time memory is based on contigued bytes The smaller addressed space is a byte (4 bytes = word) The number of bytes for a date depend on its type The memory structure depend on the target machine The space (in bytes) required for the code is calculated at compile time. Code Static Steak Free memory Heap 3 STATIC VS. DYNAMIC ALLOCATION Static: Compile time, Dynamic: Runtime allocation Many compilers use some combination of following Stack storage: for local variables, parameters and so on Heap storage: Data that may outlive the call to the procedure that created it Stack allocation is a valid allocation for procedures since procedure calls are nested 2
3 STATIC VS. DYNAMIC ALLOCATION Static Compile time Code based Dynamic Run time Code + Data based Strategies Stack allocation Heap allocation 5 STORIA DELL ALLOCAZIONE DELLA MEMORIA Allocazione statica (Static allocation) Una caratteristica del Fortran (fino al Fortran77) Implca che le dimenzioni degli arrays sia conosciuta a compile time no funzioni o sottoprogrammi ricorsivi Nessuna allocazione dinamica di strutture dati Grande Efficienza: l accesso ai dati è di norma diretto Sicurezza Nessuna possibilita di out of memory a runtime 3
4 STORIA DELL ALLOCAZIONE DELLA MEMORIA Stack Allocation Introdotta con Algol58 Il tempo di vita (lifetime) è collegato con l attivazione delle procedure Implementato attraverso l utilizzo dei record di attivazione (stack frame): Differenti invocazioni istanziano differenti versioni delle variabili locali; il valore delle variabili locali non persiste fra successive invocazioni del sottoprogramma La dimenzione delle strutture dati locali può dipendere da un parametro È supportata le ricorsione La dimenzione del valore ritornato da una funzione deve essere nota a compile time Gli oggetti possono essere allocati dinamicamente nello stack ma sono comunque deallocati quando termina la procedure STACK ALLOCATION 4
5 SKETCH OF A QUICKSORT PROGRAM ALLOCAZIONE DELLA MEMORIA STACK Alla chiamata di un sottoprogramma una certa quantità di memoria (per variabili locali etc) viene impilata nello stack Quando il sottoprogramma termina tale memoria viene rimossa dallo stack Cio permette di compilare i sottoprogrammi in modo che l indirizzo relativo delle sue variabili locali sia sempre lo stesso indipendentemente dalla chiamata 10 5
6 ACTIVATION FOR QUICKSORT ALBERO DI ATTIVAZIONE Dato che le chiamate di procedura sono annidate nel tempo possiamo utilizzare una rappresentazione di tale chiamate utilizzando un albero detto albero di attivazione Le attivazioni sono riportate sull albero seguendo da sx a dx l ordine in cui sono state chiamate Un figlio deve terminare prima che possa iniziare l attiviazione alla sua destra La sequenza delle chiamate corrisponde ad una visita in preordine dell albero di attivazione La sequenza dei ritorni corrisponde ad una visita in postordine dell albero delle attivazioni 12 6
7 ACTIVATION TREE REPRESENTING CALLS DURING AN EXECUTION OF QUICKSORT ACTIVATION RECORDS Procedure calls and returns are usaully managed by a run-time stack called the control stack. Each live activation has an activation record (sometimes called a frame) The root of activation tree is at the bottom of the stack The current execution path specifies the content of the stack with the last activation has record in the top of the stack. 7
8 A GENERAL ACTIVATION RECORD Temporary values Local data A saved machine status An access link A control link Space for the return value of the called function The actual parameters used by the calling procedure DOWNWARD-GROWING STACK OF ACTIVATION RECORDS 8
9 DESIGNING CALLING SEQUENCES Values communicated between caller and callee are generally placed at the beginning of callee s activation record Fixed-length items: are generally placed at the middle Items whose size may not be known early enough: are placed at the end of activation record We must locate the top-of-stack pointer judiciously: a common approach is to have it point to the end of fixed length fields. DESIGNING CALLING SEQUENCES The caller evaluates the actual parameters The caller stores a return address and the old value of top-sp into the callee's activation record. The callee saves the register values and other status information. The callee initializes its local data and begins execution. Parameter and return value Control link Stauts Temporaries an local data Parameter and return value Control link Stato salvato Dati temporanei e locali chiamante chiamato 18 9
10 DIMENSION VARIABLE Two pointers are required top_sp e top top_sp top Parametri attuali e valore di ritorrno Control link Stato salvato Puntatore ad a Puntatore ad b Array a Array b Parametri attuali e valore di ritorrno Control link Stato salvato Dati temporanei e locali 19 CORRESPONDING RETURN SEQUENCE The callee places the return value next to the parameters Using information in the machine-status field, the callee restores top-sp and other registers, and then branches to the return address that the caller placed in the status field. Although top-sp has been decremented, the caller knows where the return value is, relative to the current value of top-sp; the caller therefore may use that value. 10
11 ACCESS TO DYNAMICALLY ALLOCATED ARRAYS SEQUENZA DI RITORNO Il chiamato Posiziona il valore di ritorno subito dopo i parametri Ripristina il registro top.sp e gli altri registri quindi passa il controllo all indirizzo di controllo salvato fra informazioni di stato. Recupera il valore dello stack pointer 22 11
12 ACCESSO ALLE VARIABILI NON LOCALI IN ASSENZA DI PROCEDURE ANNIDATE Lo scope in tal caso è costituito dalle variabili locali e dalle variabili globlali Le variabili globali vengono allocate nella parte di memoria riservata ai dati statici Le variabili locali nel record di attivazione del sottoprogramma dove sono definite 23 ACCESSO ALLE VARIABILI NON LOCALI IN PRESENZA DI PROCEDURE ANNIDATE: USO DELL ACCESS LINK La procedura q con livello di annidamento n q richiama la procedura p con livello di annidamento n p n p > n q, in tal caso p deve essere definita all interno di q in tal caso è semplice ad access link di p viene copiato il valore del record di attivazione di q La chiamata è ricorsiva (p=q), in questo caso l access link della nuova attivazione è identico alla precedente n p < n q la procedura q deve essere annidata in r e la definizione di p deve essere immediatamente annidata in r. Il recordi di attivazione più recente di r puo essere localizzato seguento la catena si access link per n p n q + 1 passi
13 ACCESSO ALLO SCOPE TRAMITE DISPLAY È un array di puntatori di dimensione pari al livello di annidamento Ciascun puntatore punta al record di attivazione più in alto nello stack con quel livello di annidamento 25 ALLOCAZIONE DELLA MEMORIA Heap Allocation Lisp (~1960) Gli oggetti sono allocati e deallocati dinamicamente, in qualsiasi ordine, e il lifetimes degli oggetti non sono correlati con la invocazione delle funzioni Permette strutture dati ricorsive (eg alberi) La dimenzione delle strutture dati può variare dinamicamente Oggetti dimenzionati dinamicamente possono esser ritornati come risultato di una funzione Permette ai linguaggi di programmazione di supportare first-class functions (che sono implementate per mezzo di closures) Molti moderni linguaggo forniscono sia stack che heap allocation 26 13
14 MEMORY MANAGER Two basic functions: Allocation Deallocation Properties of memory managers: Space efficiency Program efficiency Low overhead TYPICAL MEMORY HIERARCHY CONFIGURATIONS 14
15 LOCALITY IN PROGRAMS The conventional wisdom is that programs spend 90% of their time executing 10% of the code: Programs often contain many instructions that are never executed. Only a small fraction of the code that could be invoked is actually executed in a typical run of the program. The typical program spends most of its time executing innermost loops and tight recursive cycles in a program. ALLOCAZIONE ESPLICITA SU HEAP Esempi sono C, C++, Pascal dove il programma alloca e dealloca memoria heap per gli oggetti Garbage = dispersione della mamoria Se non ci sono altri puntatori che puntano al primo alemento della lista quando termina la funzione gli oggetti diventano irragiungibili quindi garbage 30 15
16 Allocazione esplicita su Heap Dangling references free( P->next ); 31 Allocazione esplicita su Heap Dangling references which has caused P->next to become a dangling pointer (and a potential delayed effect run-time error) as well as creating some garbage 32 16
17 PERCHÈ GARBAGE COLLECT? Quando eseguiamo list = list->next; // cancella il primo elementoelement Il programma dovrebbe deallocare gli oggetti condivisi? (questo è complesso ma corretto) 33 ALLOCAZIONE/DEALLOCAZIONE ESPLICITA. PROBLEMI? Quale funzione è responsabile della deallocazione di un oggetto quando non è più necessario? Gli oggetti condivisi fra diverse strutture dati rendono complesso conoscere quando viene rimossa l ultimo riferimento Una soluzione comune è aggiungere un reference counts agli oggetti (ma questa soluzione ha alcuni problemi) Un alternativa e duplicare (Cloning) gli oggetti in modo da eliminare il problema della condivisione degli oggetti. Questa soluzione non è efficiente. Memory allocation errors are a major source of problems in C/C++ code (random crashes, memory leaks) Esistono numerosi tool per la localizzazione di errori di memory allocation (Purify, ObjectCenter, Insure++) 34 17
18 GARBAGE COLLECTION 35 THE ESSENCE Programming is easier if the run-time system garbage-collects --- makes space belonging to unusable data available for reuse. Java does it; C does not. But stack allocation in C gets some of the advantage
19 DESIDERATA 1. Speed --- low overhead for garbage collector. 2. Little program interruption. Many collectors shut down the program to hunt for garbage. 3. Locality --- data that is used together is placed together on pages, cache-lines. 37 THE MODEL --- (1) There is a root set of data that is a-priori reachable. Example: In Java, root set = static class variables plus variables on run-time stack. Reachable data : root set plus anything referenced by something reachable
20 THE MODEL --- (2) Things requiring space are objects. Available space is in a heap --- large area managed by the run-time system. Allocator finds space for new objects. Space for an object is a chunk. Garbage collector finds unusable objects, returns their space to the heap, and maybe moves objects around in the heap. 39 GARBAGE COLLECTION Garbage collection (GC) - Il processo di recuperare tali record e renderli disponibili per l'allocazione di nuovi record, non viene eseguito dal compilatore, ma a runtime, dai programmi di supporto collegati al codice compilato (in quanto, ovviamente, i record presenti in memoria dipendono dai dati che sono stati inseriti dall'utente). Per individuare il garbage, l'approccio ideale sarebbe usare la definizione dinamica della liveness. Tuttavia, non essendo questa computabile, ci dobbiamo basare sull'approssimazione conservativa della raggiungibilità del record. Il compilatore dovrà garantire che ogni variabile viva è raggiungibile e, al tempo stesso, minimizzare il numero di variabili raggiungibili che non sono vive
21 ESEMPIO DI GARBAGE class node { int value; node next; } node p, q; p = new node(); q = new node(); q = p; delete p; 41 IL GARBAGE COLLECTOR PERFETTO Nessun impatto visibile sull esecuzione del programma Opera con qualsiasi programma e sulle sue strutture dati: Ad esempio gestisce le strutture dati ciclliche Recupera tutte le celle garbage (e solo quelle garbage) rapidamente Incrementale, può soddisfare requisiti real-time Ha un eccellente gestione della localita spaziale dei riferimenti No eccessivo paging, nessun effetto negativo sulla cache Gestisce l heap efficentemente Soddisfa sempre le richieste di allocazione e non provoca frammentazione della memoria heap
22 COSTO DEL GC I primi sistemi Lisp furono noti per i lunghi stop nel mezzo di sessioni interattive a causa dell esecuzione del gc. Algoritmi migliori e processori più veloci hanno reso il gc un problema molto minore. GC è ancora da evitare per molte applicazioni real-time (dove il tempo di risposta richiesto e inferiore ai millisecondi), Per la maggior parte delle applicazioni. Il problema è: Which is more important:software which is free of memory leaks and memory allocation errors,... or software which is a little faster but less reliable and takes twice as long1 to debug? 43 A HEAP Free List Object 1 Object 2 Object 3 22
23 TAXONOMY Garbage Collectors 45 Reference- Counters Trace- Based REFERENCE COUNTING The simplest (but imperfect) method is to give each object a reference count = number of references to this object. OK if objects have no internal references. Initially, object has one reference. If reference count becomes 0, object is garbage and its space becomes available
24 REFERENCE COUNTING Una tecnica semplice utilizzata in molti sistemi, eg, Unix usa tenere traccia di quando un file può essere cancellato C++ smart pointer (e.g., auto_ptr) usa il e reference counter Il costo del gc è distribuito sull intero programma esecuzione Richiede spazio e tempo per memoriazzare e incrementare (decrementare) il conatore ogni qualvolta un riferimento ad una cella e aggiunto (eliminato) 47 EXAMPLES Integer i = new Integer(10); Integer object is created with RC = 1. j = k; (j, k are Integer references.) Object referenced by j has RC--. Object referenced by k has RC
25 TRANSITIVE EFFECTS If an object reaches RC=0 and is collected, the references within that object disappear. Follow these references and decrement RC in the objects reached. That may result in more objects with RC=0, leading to recursive collection. 49 REFERENCE COUNTING Assieme ad ogni record p, viene memorizzato un numero (reference count) che indica quanti puntatori x.fi a quel record sono presenti. Il compilatore emette istruzioni per far sì che ogni volta che un nuovo x.fi punta a p, il reference count di p viene incrementato, mentre viene decrementato quello di r a cui puntava in precedenza. Se decrementando il reference count di r questo assume il valore zero, r viene inserito nella freelist. Se esistono dei record a cui r puntava, il loro refcount deve essere a sua volta diminuito di uno. Ciò viene fatto non subito, ma al momento (successivo) in cui r verrà rimosso dalla freelist, per i seguenti motivi: 1. viene diviso in più parti il decremento ricorsivo, rendendo più uida l'esecuzione del programma 2. si risparmia spazio: il codice per il decremento ricorsivo è unico (nell'allocatore). Il codice per vericare se refcount ha raggiunto zero, tuttavia, deve comunque essere ripetuto per ogni decremento
26 PSEUDO-CODICE PER REFERENCE COUNTING // chiamatta dal programma per creare // una nuova istanza di un oggetto function New(): if freelist == null then report an error; newcell = allocate(); newcell.rc = 1; return newcell; // chiamata dal programma per // overwrite una variabile // puntatore R with con un // altro valore S procedure Update(var R, S): if S!= null then S.rc += 1; delete(*r); *R = S; // chiamata da New function allocate(): newcell = freelist; freelist = freelist.next; return newcell; // chiamata da Update procedure delete(t): T.rc -= 1; if T.rc == 0 then foreach pointer U held inside object T do delete(*u); free(t); // chiamata da delete procedure free(n): N.next = freelist; freelist = N; 51 rc è il campo reference count dell oggetto REFERENCE COUNTING: EXAMPLE Heap space root set
27 BENEFICI DEL REFERENCE COUNTING overhead incrementale GC overhead è distribuito lungo tutta la computazione ==> tempo di risposta omogeneo nelle situazioni interattive. (Contrasto con stop and collect approach.) Applicazioni real-time Riuso immediato delle celle libere se RC == 0, la cella è aggiunta alla put free list 53 BENEFICI DEL REFERENCE COUNTING Semplicità dell implementazione Può coesistere con la gestione manuale della memoria heap Buona gestione della località spaziale il programma accede alle locazioni di memoria che probabilmente sono sul punto di di essere utilizzare. (In contrasto con una marking phase durante la quale viene scorsa tutta la memoria) la maggioranza degli oggetti hanno una vita breve; il reference counting recupererà e riutilizzera tali oggetti rapidamente. (In contrasto con con uno schema dove gli oggetti morti rimangono inutilizzati per un lungo periodo vino a quando il prossimo gc a rilevato un out of memory.) 54 27
28 REFERENCE COUNTING: PROBLEMI Space overhead 1 word per il contatore Time overhead Ogni volta che un puntatore è aggiornato: aggiornare due reference counters (decrementare il vecchio target, incrementare il sorgente). L accesso in memoria è costoso. Il codice è fragile (se prodotto by hand) È molto facile dimenticare di incrementare o decrementare un reference counter (eg quando si passa un oggetto ad un sottoprogramma) Dimenticare un incremento ==> strange bugs, Dimenticare un decremento ==> memory leaks. 55 REFERENCE COUNTING: CYCLES root set Heap space 1 Memory leak
29 PROBLEMI Non si può rimuovere memoria garbage con riferimenti ciclici: se due record non sono raggiungibili, ma puntano l'uno all'altro vicendevolmente, il loro reference count rimarrà a uno e non potranno essere rimossi. Soluzioni Richiedere esplicitamente che il programmatore elimini tutti i cicli quando ha finito di usare una struttura Combinare Reference Count con qualche Mark&Sweep, per rimuovere i cicli La gestione dei reference count è computazionalmente pesante! Ogni operazione di aggiornamento di un puntatore implica l'incremento di un reference count, il decremento di quello della variabile puntata precedentemente e le operazioni per la verica del raggiungimento di refcount=0. È possibile attuare qualche ottimizzazione tramite analisi dataflow, ma il peso è comunque elevato. 57 REFERENCE COUNTING Strutture dati cicliche La soluzione ovvia e combinare reference counting con gli altri schemi di gc Eseguire gli altri schemi di gc quando La memoria e esaurita Ad intervalli regolari Questo permette di utilizzare meno memoria per i reference counts Per esempio si possono utilizzare campi di 8 bit per il counter. Quando il counter supera il valore massimo, 255, rimane bloccato Quando viene eseguito il gc, recupera gli oggetti cil cui contatore dovrebbe essere zero e resetta i contatori degli altri oggetti
30 TAXONOMY Garbage Collectors 59 Reference- Counters Trace- Based Stop-the-World Short-Pause Mark-and- Sweep Mark-and- Compact Basic MODELLO ASTRATTO Gli algoritmi basati sulla traccia calcolano l insieme degli oggetti raggiungibili e poi prendono il complemento di tali oggetti Processo di riciclo della memoria Il programma mutatore viene eseguito ed effettua richesta di allocazione Il GC determina la raggiungibilità degli oggetti mediante algoritmi basati su traccia Il GC rilascia la memoria degli oggetti non raggiungibili 60 30
31 FOUR STATES OF MEMORY CHUNKS 1. Free = not holding an object; available for allocation. 2. Unreached = Holds an object, but has not yet been reached from the root set. 3. Unscanned = Reached from the root set, but its references not yet followed. 4. Scanned = Reached and references followed. 61 MARKING 1. Assume all objects in Unreached state. 2. Start with the root set. Put them in state Unscanned. 3. while Unscanned objects remain do examine one of these objects; make its state be Scanned; add all referenced objects to Unscanned if they have not been there; end; 62 31
32 SWEEPING Place all objects still in the Unreached state into the Free state. Place all objects in Scanned state into the Unreached state. To prepare for the next mark-and-sweep. 63 MARK-SWEEP GARBAGE COLLECTION Ogni cella ha un bit di mark Le locazioni di memoria garbage rimane non raggiungibile e inutilizzata fino a quando l heap non è piena: quando agisce il GC il programma in esecuzione viene sospeso Fase di Marking Partendo dai roots, aggiorna il mark bit di tutte le celle live Fase di Sweep Inserisce tutte le celle non marcate nella free list Reset il mark bit di tutte le celle marcate 64 32
33 MARK-SWEEP (AKA MARK-SCAN) ALGORITHM Il primo utilizzo sembra essere in Lisp La memorizzazione per i nuovi oggetti è ottenuto da un free-pool Nessuna azione extra è eseguita quando il programma copia o sovrascrive i puntatori Quando il pool di libero è esaurito, il New () invoca il mark-sweep gc per reinserire la memoria occupata da oggetti inaccessibili al free-pool e quindi ricomincia MARK-SWEEP EXAMPLE (1) Heap space 66 root set 33
34 MARK-SWEEP EXAMPLE (2) Heap space 67 root set MARK-SWEEP EXAMPLE (3) Heap space 68 root set 34
35 MARK-SWEEP EXAMPLE (4) root set Heap space Free unmarked cells 69 Viene resettato Il mark bit Delle celle marcate ALGORITMO DI MARK_SWEEP Fase di marcatura Poni il reached bit a 1 e aggiungi alla lista Unscanned ogni oggetto avente un riferimento nel root-set while (Unscanned!= 0){ rimuovi un oggetto o da Unscanned for (ogni oggetto o avente un riferimento in o){ } if (il reached-bit di o ==0) { } poni il reached-bit di o ad 1; aggiungi o alla lista Unscanned } 70 35
36 ALGORITMO DI MARK_SWEEP Fase di pulizia Free = 0; For (ogni blocco di memoria o nell heap){ if (il reached-bit di o ==0) aggiungi o alla lista Free else poni il reached-bit di o ad 0; } La lista Free contiene oggetti disponibili La lista Unscanned contiene oggetti che sappiamo essere raggiungibili che non sono stati analizzati per verificare se fanno riferimento ad altri oggetti 71 COSTO Il tempo di esecuzione dell'algoritmo DFS è proporzionale al numero R di nodi segnati (cioè dei record raggiungibili) ed è proporzionale alla dimensione dello heap H. L'esecuzione di una garbage collection è quindi c1r + c2h. Il costo per unità di spazio libero sullo heap, o costo ammortizzato di raccolta, è dato dal costo di esecuzione diviso per il numero H R di parole di memoria libere, cioè (c1r+c2h)/(h R). Se la memoria è quasi piena (R~ H) il costo è molto elevato. Se la memoria è quasi vuota (H >> R), il costo è molto ridotto. Se al termine del processo di collection R/H è maggiore di 0.5 (o un'altro valore, secondo qualche criterio) il collector dovrebbe chiedere al sistema operativo di fornire maggiore spazio per lo heap del programma
37 TAXONOMY Garbage Collectors 73 Reference- Counters Trace- Based Stop-the-World Short-Pause Mark-and- Sweep Mark-and- Compact Basic Baker s BAKER S ALGORITHM --- (1) Problem: The basic algorithm takes time proportional to the heap size. Because you must visit all objects to see if they are Unreached. Baker s algorithm keeps a list of all allocated chucks of memory, as well as the Free list
38 BAKER S ALGORITHM --- (2) Key change: In the sweep, look only at the list of allocated chunks. Those that are not marked as Scanned are garbage and are moved to the Free list. Those in the Scanned state are put in the Unreached state. For the next collection. 75 STATI Free: zona di memoria disponibile per essere allocata Unreached: blocchi non raggiungibili, tutti i blocchi inizialmente sono considerati non raggiungibili e vengono riposti nello stato unreached dopo il completamento del gc I blocchi raggiungibili possono essere Scanned UnScanned 76 38
39 ALGORITMO DI BAKER Fase di marcatura Scanned = 0 UnScanned = insieme degli oggetti raggiungibile dall insieme radice while (Unscanned!= 0){ } sposta un oggetto o da Unscanned a Scanned for (ogni oggetto o avente un riferimento in o){ if (o appartiend a lista UnReached) sposta o da UnReached a Unscanned 77 ALGORITMO DI MARK_SWEEP Fase di pulizia Free = Free UnReached; UnReached = UnScanned 78 39
40 OTTIMIZZAZIONI: STACK ESPLICITO Se si usa un algoritmo DFS standard (ricorsivo), si potrebbe arrivare ad avere H ricorsioni, e quindi H frame sulla pila dei record di attivazione, ossia il garbage collector occuperebbe più memoria dello HEAP stesso. Ciò è decisamente da evitare, perciò si preferisce utilizzare un algoritmo iterativo in cui si gestisce esplicitamente una struttura a pila su cui salvare i record marcati. In tal modo, si otterrà ugualmente una pila di H elementi, ma saranno singole word invece che record di attivazione. 79 OTTIMIZZAZIONI: INVERSIONE DEI PUNTATORI (POINTER REVERSAL) Per ridurre ulteriormente lo spazio occupato, si può osservare che, dopo che il contenuto di un campo x.fi di un record x è stato salvato sullo stack, è possibile riutilizzare lo spazio x.fi. In particolare, è possibile utilizzarlo per salvare il puntatore al record a partire dal quale x era stato raggiunto. Secondo questo ragionamento, è quindi possibile utilizzare lo stesso grafo dei puntatori per salvare anche lo stack, facendo sì che, mentre si stanno esaminando i campi di un record (e i campi dei record a cui questi, a loro volta, puntano), ogni record che si sta esaminando punti al proprio predecessore (cioè al record da cui è puntato) invece che al proprio successore (il record a cui punta normalmente). Ogni volta che tutti i campi di un record sono stati esaminati, i suoi puntatori vengono ripristinati, ricostruendo il grafo originale
41 function DFS(x) if (x è un puntatore e il record a cui punta non è marcato) imposta root come predecessore (t) marca x while true if (c'è ancora un campo x.fi (contenente il valore y) da esaminare nel record x) if (y è un puntatore e il record puntato da y non è marcato) x.f i t //fai puntare il campo al suo predecessore (pointer reversal) t x //x è il predecessore del record che stiamo esaminando x y //il record corrente è quello puntato da y marca il record corrente x else y x //salva in y l'indirizzo del record che stavamo esaminando x t //torna ad esaminare il predecessore if (x=root) tutto il grafo è stato visitato. Fine. t x.fi //il nuovo predecessore è quello il cui valore era stato salvato dall'inversione x.fi y //ripristino del puntatore originale (fine del pointer reversal) 81 OTTIMIZZAZIONE: ARRAY DI FREELIST Per ridurre la frammentazione della memoria libera si può utilizzare, invece di un'unica freelist, un array di freelist, ognuna delle quali corrisponde ad una certa dimensione dei record ivi contenuti. In tal modo, sarà possibile utilizzare il blocco di memoria più piccolo di dimensioni sufficienti a contenere la variabile da allocare. Se non ci sono blocchi suffientemente piccoli, è possibile usare il più piccolo disponibile e sprecare una parte dello spazio (se si vuole mantenere la dimensione dei blocchi), oppure suddividerlo e reimmettere nell'opportuna freelist la parte di spazio non utilizzata. La creazione delle diverse freelist è demandata alla fase sweep dell'algoritmo. L'uso di array di freelist rende anche più veloce anche l'allocazione di nuove variabili nello heap, perchè l'allocatore non dovrà cercare sequenzialmente in tutta la freelist un blocco di dimensioni sucienti, ma potrà direttamente andarlo a richiedere alle freelist di dimensioni opportune. 1. Frammentazione esterna: sono presenti tanti piccoli record liberi di dimensione insufficiente per l'allocazione che si vuole eseguire. Frammentazione interna: non è possibile trovare spazio libero a sucienza perchè questo è presente, inutilizzato, all'interno di record troppo grandi già allocati
42 MARK-SWEEP COSTS AND BENEFITS Vantaggi Gestisce le strutture cicliche Nessun space overhead 1 bit utilizzato per marcarre le celle Svantaggi L esecuzione del programma viene sospesa Può influenza la gestione della memoria virtuale Può causare un paging eccessivo se la dimenzione del working-set size è piccola e l heap non è tutta nella memoria fisica L heap può essere frammentata 83 TAXONOMY Garbage Collectors 84 Reference- Counters Trace- Based Stop-the-World Short-Pause Mark-and- Sweep Mark-and- Compact Basic Baker s Basic 42
43 ISSUE: WHY COMPACT? Compact = move reachable objects to contiguous memory. Locality --- fewer pages or cache-lines needed to hold the active data. Fragmentation --- available space must be managed so there is space to store large objects. 85 MARK-AND-COMPACT 1. Mark reachable objects as before. 2. Maintain a table (hash?) from reached chunks to new locations for the objects in those chunks. Scan chunks from low end of heap. Maintain pointer free that counts how much space is used by reached objects so far
44 MARK-AND-COMPACT --- (2) 3. Move all reached objects to their new locations, and also retarget all references in those objects to the new locations. Use the table of new locations. 4. Retarget root references. 87 EXAMPLE: MARK-AND-COMPACT 88 free 44
45 EXAMPLE: MARK-AND-COMPACT 89 free EXAMPLE: MARK-AND-COMPACT 90 free 45
46 EXAMPLE: MARK-AND-COMPACT 91 free EXAMPLE: MARK-AND-COMPACT 92 free 46
47 EXAMPLE: MARK-AND-COMPACT 93 free EXAMPLE: MARK-AND-COMPACT 94 free 47
48 EXAMPLE: MARK-AND-COMPACT 95 free EXAMPLE: MARK-AND-COMPACT 96 free 48
49 MARK AND COMPACT Una volta effettuata la marcatura invece di procedere alla rimozione è conveniente ricopiare tutti gli oggetti raggiungibili verso uno dei due estremi dell heap 97 ALGORITMO DI MARK_COMPACT Fase di marcatura UnScanned insieme degli oggetti raggiungibili dall insieme radice while (Unscanned!= 0){ rimuovi un oggetto o da Unscanned for (ogni oggetto o avente un riferimento in o){ } if (o non è stato ragiunto) { } marca o come ragiunto aggiungi o alla lista Unscanned } 98 49
50 ALGORITMO DI MARK_COMPACT Calcolo delle nuove locazioni For (ogni blocco di memoria o nell heap a partire dal basso){ if (o è ragiunto) { for (ofni riferimento o.r in o new Location(0) = free; free = free + sizeof(o) } 99 ALGORITMO DI MARK_COMPACT Fase di aggiornamento dei riferimenti For (ogni blocco di memoria o nell heap a partire dal basso){ } if (o è ragiuunto) { for (ogni ogni riferimento 0.r in o) } o.r = new Location(o,r) = free; for (ogni riferimento r nell insieme radice) r = new Location (r);
Allocazione 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
DettagliGestione 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
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,
DettagliFONDAMENTI di INFORMATICA L. Mezzalira
FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software
DettagliIl memory manager. Gestione della memoria centrale
Il memory manager Gestione della memoria centrale La memoria La memoria RAM è un vettore molto grande di WORD cioè celle elementari a 16bit, 32bit, 64bit (2Byte, 4Byte, 8Byte) o altre misure a seconda
DettagliB+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
DettagliLe operazioni di allocazione e deallocazione sono a carico del sistema.
Allocazione della memoria In C++ è possibile creare (allocare) variabili in maniera statica o dinamica. Nell allocazione statica una variabile esiste ed è utilizzabile dal momento della sua dichiarazione
DettagliSistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory
FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File
DettagliGestione della Memoria
Gestione della Memoria Idealmente la memoria dovrebbe essere grande veloce non volatile Gerarchia di memorie Disco: capiente, lento, non volatile ed economico Memoria principale: volatile, mediamente grande,
DettagliINFORMATICA 1 L. Mezzalira
INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello
DettagliSistemi Operativi. 5 Gestione della memoria
Gestione della memoria Compiti del gestore della memoria: Tenere traccia di quali parti della memoria sono libere e quali occupate. Allocare memoria ai processi che ne hanno bisogno. Deallocare la memoria
DettagliGESTIONE INFORMATICA DEI DATI AZIENDALI
GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming
DettagliSistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1
IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza
DettagliLa Gestione delle risorse Renato Agati
Renato Agati delle risorse La Gestione Schedulazione dei processi Gestione delle periferiche File system Schedulazione dei processi Mono programmazione Multi programmazione Gestione delle periferiche File
DettagliUn sistema operativo è un insieme di programmi che consentono ad un utente di
INTRODUZIONE AI SISTEMI OPERATIVI 1 Alcune definizioni 1 Sistema dedicato: 1 Sistema batch o a lotti: 2 Sistemi time sharing: 2 Sistema multiprogrammato: 3 Processo e programma 3 Risorse: 3 Spazio degli
DettagliI 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)?
DettagliSistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione
IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza
Dettagli12. Implementazione di un File System. 12.1.1 Struttura a livelli. 12.2.1 Allocazione contigua
12. Implementazione di un File System 1 Struttura del file system Metodi di allocazione Gestione dello spazio libero Implementazione delle directory Prestazioni ed efficienza 2 Utente 12.1.1 Struttura
DettagliApproccio stratificato
Approccio stratificato Il sistema operativo è suddiviso in strati (livelli), ciascuno costruito sopra quelli inferiori. Il livello più basso (strato 0) è l hardware, il più alto (strato N) è l interfaccia
DettagliCapitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2.
Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2
DettagliCapitolo 11 -- Silberschatz
Implementazione del File System Capitolo 11 -- Silberschatz Implementazione del File System File system: Definizione dell aspetto del sistema agli occhi dell utente Algoritmi e strutture dati che permettono
DettagliSistemi Operativi (modulo di Informatica II) I processi
Sistemi Operativi (modulo di Informatica II) I processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2009-10 Sommario Il concetto di processo Schedulazione dei processi e cambio di contesto
DettagliMemoria Virtuale. Lezione 29 Sistemi Operativi
Memoria Virtuale Lezione 29 Sistemi Operativi I Principi Abbiamo sinora assunto che durante l esecuzione di un programma, lo stesso debba risiedere completamente in MC Intorno alla metà degli anni 70 viene
DettagliOggetti Lezione 3. aspetti generali e definizione di classi I
Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione
DettagliSistema operativo: Gestione della memoria
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e
DettagliTipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
DettagliIl Sistema Operativo. C. Marrocco. Università degli Studi di Cassino
Il Sistema Operativo Il Sistema Operativo è uno strato software che: opera direttamente sull hardware; isola dai dettagli dell architettura hardware; fornisce un insieme di funzionalità di alto livello.
DettagliLa memoria - generalità
Calcolatori Elettronici La memoria gerarchica Introduzione La memoria - generalità n Funzioni: Supporto alla CPU: deve fornire dati ed istruzioni il più rapidamente possibile Archiviazione: deve consentire
DettagliSistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1
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
DettagliGes$one della memoria
GARBAGE COLLECTION Ges$one della memoria! Sta$c area o Dimensione fissa, contenu$ determina$ e alloca$ a compilazione,! Run- $me stack o Dimensione variabile (record a=vazione) o Ges$one so?oprogrammi!
DettagliA 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
Dettaglistrutturare dati e codice
Puntatori e passaggio parametri strutturare dati e codice Tipo di dati int * Pi ; Op. dereferenziazione j = *Pi ; Op. indirizzo Pi = &i ; By value int f(int i) ; a = f(b) ; By address int f(int * Pi) ;
DettagliFunzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
DettagliCalcolatori Elettronici. La memoria gerarchica La memoria virtuale
Calcolatori Elettronici La memoria gerarchica La memoria virtuale Come usare la memoria secondaria oltre che per conservare permanentemente dati e programmi Idea Tenere parte del codice in mem princ e
DettagliGestione della memoria. Paginazione Segmentazione Segmentazione con paginazione
Gestione della memoria Paginazione Segmentazione Segmentazione con paginazione Modello di paginazione Il numero di pagina serve come indice per la tabella delle pagine. Questa contiene l indirizzo di base
DettagliSistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1
GESTIONE DELLA MEMORIA SECONDARIA 11.1 Memoria Secondaria Struttura del disco Scheduling del disco Gestione del disco Gestione dello spazio di swap Struttura RAID Affidabilità Implementazione della memoria
DettagliSistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco
GESTIONE DELLA MEMORIA SECONDARIA 11.1 Memoria Secondaria Struttura del disco Scheduling del disco Gestione del disco Gestione dello spazio di swap Struttura RAID Affidabilità Implementazione della memoria
DettagliAlgoritmi 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
DettagliAppunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio
Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio 1-La memoria dinamica La scrittura di un programma (indipendentemente dal linguaggio adottato) deve sempre tener conto
DettagliProtezione. Protezione. Protezione. Obiettivi della protezione
Protezione Protezione La protezione riguarda i meccanismi per il controllo dell accesso alle risorse in un sistema di calcolo da parte degli utenti e dei processi. Meccanismi di imposizione fissati in
DettagliLa struttura dati ad albero binario
La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,
DettagliArchitettura hardware
Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione
DettagliIl software. la parte contro cui si può solo imprecare. Funzioni principali del sistema operativo. (continua) Gestione della memoria principale
Funzioni principali del sistema operativo Il software la parte contro cui si può solo imprecare Avvio dell elaboratore Gestione del processore e dei processi in Gestione della memoria principale Gestione
DettagliSistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1
MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati
DettagliMECCANISMI E POLITICHE DI PROTEZIONE 13.1
MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati
DettagliDatabase. Si ringrazia Marco Bertini per le slides
Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida
DettagliLaboratorio di Informatica
per chimica industriale e chimica applicata e ambientale LEZIONE 4 - parte II La memoria 1 La memoriaparametri di caratterizzazione Un dato dispositivo di memoria è caratterizzato da : velocità di accesso,
DettagliEsercizi Capitolo 6 - Alberi binari di ricerca
Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 23 settembre 200 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile
DettagliTricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002
Tricks & Tips [Access] - Michele de Nittis - Tutorial - ActiveX - Controllo Tree View Versione: 1 Data Versione: venerdì 30 agosto 2002 1 SOMMARIO PREMESSA...3 INSERIMENTO DEL CONTROLLO...3 AGGIUNTA DELLE
DettagliSoluzione dell esercizio del 2 Febbraio 2004
Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo
DettagliL ANALISI ABC PER LA GESTIONE DEL MAGAZZINO
L ANALISI ABC PER LA GESTIONE DEL MAGAZZINO È noto che la gestione del magazzino è uno dei costi nascosti più difficili da analizzare e, soprattutto, da contenere. Le nuove tecniche hanno, però, permesso
DettagliNovità di Access 2010
2 Novità di Access 2010 In questo capitolo: Gestire le impostazioni e i file di Access nella visualizzazione Backstage Personalizzare l interfaccia utente di Access 2010 Creare database utilizzando modelli
DettagliAlgoritmi di scheduling
Capitolo 3 Algoritmi di scheduling Come caso particolare di studio, di seguito è discussa in dettaglio la politica di scheduling del sistema operativo LINUX (kernel precedente alla versione 2.6). Sono
DettagliCluster. Vicino alla temperatura critica gli spin formano grandi gruppi (cluster)
Cluster Vicino alla temperatura critica gli spin formano grandi gruppi (cluster) all interno di ogni gruppo è molto improbabile riuscire a flippare uno spin perché ci sarebbe una grande perdita di energia,
DettagliTipi classici di memoria. Obiettivo. Principi di localita. Gerarchia di memoria. Fornire illimitata memoria veloce. Static RAM. Problemi: Dynamic RAM
Obiettivo Tipi classici di memoria Fornire illimitata memoria veloce Problemi: costo tecnologia Soluzioni: utilizzare diversi tipi di memoria... Static RAM access times are 2-25ns at cost of $100 to $250
DettagliLa gestione della memoria
La gestione della memoria DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII.UNISI.IT HTTP://WWW.DII.UNISI.IT/~RIGUTINI/
DettagliPROGRAMMAZIONE Gestione della Memoria e Garbage Collection
PROGRAMMAZIONE 2 23. Gestione della Memoria e Garbage Collection 1 Gestione della memoria Static area dimensione fissa, contenuti determinati e allocati a tempo di compilazione Runtime stack dimensione
DettagliGESTIONE DEI PROCESSI
Sistemi Operativi GESTIONE DEI PROCESSI Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in Java Concetto
DettagliPlate Locator Riconoscimento Automatico di Targhe
Progetto per Laboratorio di Informatica 3 - Rimotti Daniele, Santinelli Gabriele Plate Locator Riconoscimento Automatico di Targhe Il programma plate_locator.m prende come input: l immagine della targa
DettagliLe virtual machine e la memoria virtuale
Le virtual machine e la memoria virtuale Prof. Alberto Borghese Dipartimento di Scienze dell Informazione alberto.borghese@unimi.it Università degli Studi di Milano Riferimento Patterson 5: 5.6, 5.7. 1/29
DettagliCorso di Sistemi di Elaborazione delle informazioni
Corso di Sistemi di Elaborazione delle informazioni Sistemi Operativi Francesco Fontanella Complessità del Software Software applicativo Software di sistema Sistema Operativo Hardware 2 La struttura del
DettagliUniversità di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record
Dettaglidall argomento argomento della malloc()
Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È
DettagliIl File System. Il file system
Il File System Il file system Parte di SO che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria di massa Realizza i concetti astratti di file:
DettagliAutomatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione
Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento
DettagliVARIABILI LOCALI E GLOBALI (ESTERNE)
VARIABILI LOCALI E GLOBALI (ESTERNE) Le variabili locali sono definite (ed il loro uso dichiarato) nella funzione (o nel blocco) che le usa; nascono quando la funzione entra in esecuzione e muoiono al
DettagliJava: Compilatore e Interprete
Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT
DettagliCPU. Maurizio Palesi
CPU Central Processing Unit 1 Organizzazione Tipica CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 2 L'Esecutore
DettagliFile system II. Sistemi Operativi Lez. 20
File system II Sistemi Operativi Lez. 20 Gestione spazi su disco Esiste un trade-off,tra spreco dello spazio e velocità di trasferimento in base alla dimensione del blocco fisico Gestione spazio su disco
DettagliStrutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)
Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi
DettagliAPI e socket per lo sviluppo di applicazioni Web Based
API e socket per lo sviluppo di applicazioni Web Based Cosa sono le API? Consideriamo il problema di un programmatore che voglia sviluppare un applicativo che faccia uso dei servizi messi a disposizione
DettagliBanca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste
Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste versione 2.1 24/09/2015 aggiornamenti: 23-set-2015; 24-set-2015 Autore: Francesco Brunetta (http://www.francescobrunetta.it/)
Dettagli4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0
Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice
DettagliStrutturazione 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
DettagliConcetto 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
DettagliArduino: Programmazione
Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite
DettagliEsercizi su. Funzioni
Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità
DettagliSistemi Operativi Kernel
Approfondimento Sistemi Operativi Kernel Kernel del Sistema Operativo Kernel (nocciolo, nucleo) Contiene i programmi per la gestione delle funzioni base del calcolatore Kernel suddiviso in moduli. Ogni
DettagliLa memoria centrale (RAM)
La memoria centrale (RAM) Mantiene al proprio interno i dati e le istruzioni dei programmi in esecuzione Memoria ad accesso casuale Tecnologia elettronica: Veloce ma volatile e costosa Due eccezioni R.O.M.
DettagliSOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE
SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software
DettagliIl file system. meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate. in memoria di massa
Il File System 1 Il file system E quella componente del SO che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria di massa Realizza i concetti astratti
DettagliGUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL
GUIDA RAPIDA BOZZA 23/07/2008 INDICE 1. PERCHÉ UNA NUOVA VERSIONE DEI MODULI DI RACCOLTA DATI... 3 2. INDICAZIONI GENERALI... 4 2.1. Non modificare la struttura dei fogli di lavoro... 4 2.2. Cosa significano
DettagliManuale Utente Albo Pretorio GA
Manuale Utente Albo Pretorio GA IDENTIFICATIVO DOCUMENTO MU_ALBOPRETORIO-GA_1.4 Versione 1.4 Data edizione 04.04.2013 1 TABELLA DELLE VERSIONI Versione Data Paragrafo Descrizione delle modifiche apportate
DettagliI file di dati. Unità didattica D1 1
I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità
DettagliCONTENT MANAGEMENT SY STEM
CONTENT MANAGEMENT SY STEM I NDI CE I NTRODUZI ONE Accesso al CMS 1) CONTENUTI 1.1 I nserimento, modifica e cancellazione dei contenuti 1.2 Sezioni, categorie e sottocategorie 2) UTENTI 3) UP LOAD FILES
DettagliSistemi Operativi 1. Mattia Monga. a.a. 2008/09. Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.
1 Mattia Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it a.a. 2008/09 1 c 2009 M.. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia
DettagliJ. Assfalg Appunti di Sistemi Operativi
Lo scheduler di Linux (kernel 2.4) La politica di scheduling di Linux si propone il raggiungimento dei seguenti obiettivi (molti dei quali sono in contrasto): timesharing gestione di priorità dinamiche
DettagliMemoria secondaria. Struttura del disco. Scheduling del disco. Gestione dell unità a disco. Affidabilità dei dischi: RAID
Memoria secondaria Struttura del disco Scheduling del disco Gestione dell unità a disco Affidabilità dei dischi: RAID Sistemi Operativi 13.1 Struttura del disco I dischi vengono indirizzati come grandi
DettagliLa microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico 2006 2007 pagina 1
La microarchitettura. anno accademico 2006 2007 pagina 1 Integer Java virtual machine Ogni microprocessore può avere una microarchitettura diversa, ma la modalità di funzionamento per certi aspetti è generale.
DettagliSistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo
Sistema Operativo Fondamenti di Informatica 1 Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al
DettagliIl 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
DettagliSISTEMI OPERATIVI. Gestione della memoria Domande di verifica. Luca Orrù Centro Multimediale Montiferru 18/06/2007
2007 SISTEMI OPERATIVI Gestione della memoria Domande di verifica Luca Orrù Centro Multimediale Montiferru 18/06/2007 Gestione della memoria 1. Si descriva il concetto di memoria virtuale (esame del 19-06-2006)
Dettagli12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)
12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,
DettagliNote su quicksort per ASD 2010-11 (DRAFT)
Note su quicksort per ASD 010-11 (DRAFT) Nicola Rebagliati 7 dicembre 010 1 Quicksort L algoritmo di quicksort è uno degli algoritmi più veloci in pratica per il riordinamento basato su confronti. L idea
DettagliGESTIONE DELLA MEMORIA CENTRALE
GESTIONE DELLA MEMORIA CENTRALE E MEMORIA VIRTUALE 7.1 Gestione della memoria Segmentazione Segmentazione con paginazione Memoria Virtuale Paginazione su richiesta Sostituzione delle pagine Trashing Esempi:
DettagliProgrammazione dinamica
Capitolo 6 Programmazione dinamica 6.4 Il problema della distanza di edit tra due stringhe x e y chiede di calcolare il minimo numero di operazioni su singoli caratteri (inserimento, cancellazione e sostituzione)
DettagliDMA 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
Dettagli11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0
11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0 PAG. 2 DI 38 INDICE 1. PREMESSA 3 2. SCARICO DEL SOFTWARE 4 2.1 AMBIENTE WINDOWS 5 2.2 AMBIENTE MACINTOSH 6 2.3 AMBIENTE
DettagliInformatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing
Informatica 3 LEZIONE 21: Ricerca su liste e tecniche di hashing Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing Informatica 3 Lezione 21 - Modulo 1 Algoritmi sequenziali e basati su
Dettagli13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti
13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
Dettagli