Lezione E12. Sistemi operativi open-source, embedded e real-time
|
|
|
- Brigida Viviani
- 9 anni fa
- Visualizzazioni
Transcript
1 Lezione E12 Sistemi operativi open-source, embedded e real-time 17 dicembre 2013 Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata SOSERT 13 E12.1
2 Di cosa parliamo in questa lezione? In questa lezione scriviamo il codice dello scheduler per job 1 Il cambio di contesto 2 Creazione di un nuovo task 3 Scheduler (prima versione) 4 Modifiche alla funzione 5 La funzione 6 La funzione 7 Scheduler (seconda versione) SOSERT 13 E12.2
3 Contesto prima dell esecuzione di _bsp_irq( ) La CPU è in modalità SYSTEM I registri AACS-clobbered del flusso di esecuzione interrotto salvati sullo stack sono r0 r3, r12, r14 (=lr) Nel registro r12 è caricato l indirizzo del gestore di medio livello dell interruzione _bsp_irq( ) sp lr pc r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10r11r12r13r14r15cpsrspsr SYS N-32 # //// N-32 Q C D E F G H I J K L Ω # * IRQ A B Q STK A B C D M O P+4 Q X Y Z SOSERT 13 E12.3
4 Contesto dopo la terminazione di _bsp_irq( ) La CPU è in modalità SYSTEM In cima allo stack vi sono i valori di alcuni registri del flusso di esecuzione da recuperare: Registri AACS-clobbered r0 r3, r12, r14 (=lr) Registro r15 (=pc), ossia l indirizzo dell istruzione successiva del flusso di esecuzione da recuperare Registro cpsr sp lr pc r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10r11r12r13r14r15cpsrspsr SYS N-32? ////???? E F G H I J K L? # * IRQ??? STK A B C D M O P+4 Q X Y Z SOSERT 13 E12.4
5 Ogni job ha un proprio stack I valori dei registri r0 r3, r12, r14, r15 e cpsr sono salvati sul proprio stack È necessario salvare altrove i valori dei registri r4 r11 e r13 (=sp) Salvataggio nel descrittore del task! Effettuare il cambio di contesto significa modificare sp in modo che faccia riferimento allo stack di un task differente Il cambio di contesto viene effettuato subito dopo la terminazione di _bsp_irq( ) Le istruzioni macchina seguenti in recuperano il contesto di un flusso di esecuzione (job) diverso da quello interrotto Il cambio di contesto avviene solo se si sta per tornare all esecuzione di un job (attenzione alle interruzioni annidate) SOSERT 13 E12.5
6 Stack specifico per ogni task Gli stack sono allocati nella sezione.bss in un unico vettore Ogni stack ha lunghezza predefinita Ogni stack è allineato a pagine di memoria Gli stack crescono per indirizzi decrescenti #define STACK_SIZE 4096 char stacks[max_num_tasks*stack_size] attribute ((aligned (STACK_SIZE))); const char *stack0_top = stacks + MAX_NUM_TASKS*STACK_SIZE; SOSERT 13 E12.6
7 Il descrittore del task struct task { int valid; unsigned long releasetime; int released; int period; int priority; job_t job; void *arg; const char *name; unsigned long sp; unsigned long regs[8]; }; La variabile current contiene l indirizzo del task in esecuzione Se nessun job è eseguibile, current punta al descrittore del task con TID 0 (idle task) SOSERT 13 E12.7
8 La funzione _switch_to( ) void _switch_to(struct task *) attribute ((naked)); void _switch_to(struct task *to) { irq_disable(); save_regs(current->regs); load_regs(to->regs); switch_tasks(current, to); current = to; irq_enable(); naked_return(); } SOSERT 13 E12.8
9 Funzioni naked L attributo naked è una estensione del compilatore gcc per l architettura ARM Forza il compilatore a non emettere codice per il prologo e l epilogo della funzione Nessuna istruzione generata automaticamente per salvare il contenuto di registri sullo stack Tuttavia non viene nemmeno emessa l istruzione di return per terminare la funzione È necessario generare esplicitamente l istruzione di return #define naked_return() \ asm volatile ( bx lr ); SOSERT 13 E12.9
10 Salvataggio e ripristino dei registri r4 r11 Per salvare il contenuto dei registri r4 r11: #define save_regs(regs) \ asm volatile ( stmia %0,{r4-r11} \ : : r (regs) : memory ); Per ripristinare il contenuto degli stessi registri: #define load_regs(regs) \ asm volatile ( ldmia %0,{r4-r11} \ : : r (regs) : r4, r5, r6, \ r7, r8, r9, r10, r11, memory ); SOSERT 13 E12.10
11 La macro switch_task La macro switch_task salva e ripristina il contenuto del registro r13 (=sp) #define switch_task(from, to) \ asm volatile ( str sp,%0\n\t \ ldr sp,%1\n\t \ : m ((from)->sp), m ((to)->sp) \ sp, memory ); SOSERT 13 E12.11
12 Inizializzazione del contesto di un nuovo task Determinare la posizione dello stack del task Definire l entry point del job Non coincide con la funzione da eseguire nel job Inizializzare il contesto salvato nel descrittore del task Inizializzare lo stack del task Deve avere la stessa struttura dello stack di un job interrotto da una interruzione STK r0 r1 r2 r3 r12 lr pc spsr N SOSERT 13 E12.12
13 La funzione init_task_context( ) void init_task_context(struct task *t, int ntask) { int i; unsigned long *sp = (unsigned long *) (stack0_top-ntask*stack_size); /*spsr*/ *(--sp) = 0UL; /* pc */ *(--sp) = (unsigned long) task_entry_point; lr */ *(--sp) = 0UL; /*r12 */ *(--sp) = 0UL; /* r3 */ *(--sp) = 0UL; /* r2 */ *(--sp) = 0UL; /* r1 */ *(--sp) = 0UL; /* r0 */ *(--sp) = (unsigned long) t; t->sp = (unsigned long) sp; for (i = 0; i < 8; ++i) t->regs[i] = 0UL; /*r4-r11*/ } SOSERT 13 E12.13
14 La funzione task_entry_point( ) task_entry_point( ) è il punto di ingresso di ogni task L argomento (in r0) è l indirizzo del descrittore di task void task_entry_point(struct task *) attribute ((naked)); void task_entry_point(struct task *t) { for (;;) { if (!t->valid!t->released) _panic(); irq_enable(); t->job(t->arg); irq_disable(); --t->released; _sys_schedule(); } } SOSERT 13 E12.14
15 La funzione task_entry_point( ) (2) Esegue un ciclo senza fine Una iterazione per ciascun rilascio di un job del task La funzione del job è eseguita con interruzioni abilitate Per il resto il ciclo è eseguito con interruzioni disabilitate Quando un job termina si decrementa t->released È il numero di job del task rilasciati e non completati La funzione seleziona un nuovo task da eseguire quando un job del task termina È eseguita in modalità SYSTEM La funzione ritornerà solo quando questo task verrà nuovamente selezionato dallo scheduler per l esecuzione SOSERT 13 E12.15
16 La funzione create_task( ) create_task( ) deve saltare il task 0 (idle task) int create_task(job_t job, void *arg, int period, int delay, int priority, const char *name) { int i; struct task *t; for (i=1 ;i<max_num_tasks; ++i) if (!taskset[i].valid) break; [...] ++num_tasks; init_task_context(t, i); memory_barrier(); t->valid = 1; [...] } SOSERT 13 E12.16
17 Lo scheduler dei job Costituito da diverse procedure: La funzione check_periodic_tasks( ) Eseguita ad ogni tick in modalità IRQ Controlla i rilasci dei job dei task periodici La funzione schedule( ): Eseguita in modalità SYSTEM Scansiona il vettore di task per selezionare il job rilasciato di priorità massima Chi invoca lo scheduler: La funzione Assembly : Alla conclusione della gestione dell interruzione, esegue se necessario schedule( ) La funzione Assembly : Invoca schedule( ) dalla modalità SYSTEM Necessaria per gestire la terminazione di un job SOSERT 13 E12.17
18 La funzione check_periodic_tasks( ) void check_periodic_tasks(void) { unsigned long now = ticks; struct task *f; int i; for (i=0,f=taskset+1;i<num_tasks;++f) { if (f - taskset > MAX_NUM_TASKS) _panic(); if (!f->valid) continue; if(time_after_eq(now,f->releasetime)){ ++f->released; f->releasetime += f->period; trigger_schedule = 1; ++globalreleases; } ++i; } } SOSERT 13 E12.18
19 La funzione schedule( ) 1 a versione schedule( ) restituisce l indirizzo del descrittore del task da eseguire, oppure NULL se il task corrente è già il migliore struct task *schedule(void) { struct task *best; unsigned long oldreleases; do { oldreleases = globalreleases; irq_enable(); best = select_best_task(); irq_disable(); } while (oldreleases!=globalreleases); trigger_schedule = 0; best = (best!=current? best : NULL); irq_enable(); return best; } SOSERT 13 E12.19
20 La funzione select_best_task( ) static inline struct task *select_best_task(void) { int maxprio, i; struct task *best, *f; maxprio = MININT; best = &taskset[0]; for (i=0,f=taskset+1;i<num_tasks;++f) { if (f - taskset > MAX_NUM_TASKS) _panic(); if (!f->valid) continue; ++i; if (f->released > 0 && f->priority > maxprio) maxprio = f->priority, best = f; } return best; } SOSERT 13 E12.20
21 Modifica alla funzione (1) deve consentire di invocare schedule( ) se necessario [...] bx r12 /* call to _bsp_irq() */ msr cpsr_c,#(sys_mode NO_INT) mov r0,sp add sp,sp,#(8*4) msr cpsr_c,#(irq_mode NO_INT) mov sp,r0 ldr r0,[sp,#(7*4)] msr spsr_cxsf,r0.. Nuove istruzioni.. ldmfd sp,{r0-r3,r12,lr}^ nop ldr lr,[sp,#(6*4)] movs pc,lr SOSERT 13 E12.21
22 Modifica alla funzione (2) Non si deve invocare schedule( ) se il flusso interrotto non è in modalità SYSTEM trigger_schedule è uguale a zero msr spsr_cxsf,r0 and r0,r0,#sys_mode teq r0,#sys_mode bne.lnosched ldr r0,=trigger_schedule ldr r0,[r0] tst r0,r0 beq.lnosched [...].Lnosched: ldmfd sp,r0-r3,r12,lrˆ SOSERT 13 E12.22
23 Modifica alla funzione (3) Per invocare schedule( ) in modalità SYSTEM si termina l esecuzione della interruzione forzando l indirizzo di una procedura alternativa nel link register lr msr spsr_cxsf,r0 and r0,r0,#sys_mode teq r0,#sys_mode bne.lnosched ldr r0,=trigger_schedule ldr r0,[r0] tst r0,r0 beq.lnosched ldr lr,=_irq_schedule movs pc,lr.lnosched: ldmfd sp,r0-r3,r12,lrˆ SOSERT 13 E12.23
24 Contesto prima della esecuzione di La CPU è in modalità SYSTEM Sopra la cima dello stack sono presenti valori del contesto di esecuzione da preservare La funzione schedule( ) usa lo stack, quindi sovrascriverebbe questi valori È sufficiente sottrarre 32 al contenuto di sp prima di invocare schedule( ) sp lr pc r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10r11r12r13r14r15cpsrspsr SYS N? ////???? E F G H I J K L? # * IRQ??? STK A B C D M O P+4 Q X Y Z SOSERT 13 E12.24
25 La funzione (1) Il valore restituito da schedule( ) è nel registro r0 Se r0 è nullo non occorre effettuare un cambio di contesto _irq_schedule: sub sp,sp,#32 ldr r12,=schedule mov lr,pc bx r12 tst r0,r0 beq.lnoswitch ldr r12,=_switch_to mov lr,pc bx r12.lnoswitch: [...] Al termine di _switch_to lo stack è stato cambiato: sp punta ora alla cima dello stack del task che deve essere eseguito SOSERT 13 E12.25
26 La funzione (2) Legge dallo stack il valore corrispondente al registro spsr Lo scrive direttamente entro cpsr Le istruzioni successive non modificano cpsr Ripristina i valori dei registri r0 r3, r12 e lr Contemporaneamente aggiunge 32 al valore di sp [...].Lnoswitch: ldr r0,[sp, #(7*4)] msr cpsr_f,r0 ldmfd sp!,{r0-r3,r12,lr} [...] SOSERT 13 E12.26
27 La funzione (3) La situazione del contesto dopo ldmfd: sp lr pc r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10r11r12r13r14r15cpsrspsr SYS A B C D E F G H I J K L M N-8 O # Q //// IRQ STK P+4 Q X Y Z??? È necessario: Saltare all indirizzo P+4 memorizzato in cima allo stack Bilanciare lo stack aggiungendo 8 al registro sp Evitare la modifica di altri registri oltre sp e pc [...] ldmfd sp!,r0-r3,r12,lr ldr pc,[sp],#(4*2) SOSERT 13 E12.27
28 La funzione (1) Invocata in modalità SYSTEM Lo stack non contiene i valori salvati da È necessario salvare i registri AACS-clobbered sullo stack... ma non è possibile utilizzare i registri della modalità IRQ _sys_schedule: str lr,[sp,#-(4*2)]! mrs lr,cpsr str lr,[sp,#4] ldr lr,[sp] [...] Il valore di ritorno in lr viene salvato sullo stack Punta all interno del ciclo in task_entry_point( ) sp viene aggiornato in modo da lasciare una posizione libera sotto la cima cpsr viene salvato sullo stack nella posizione libera lr viene recuperato dallo stack (la cima non è modificata) SOSERT 13 E12.28
29 La funzione (2) Si salvano sullo stack i registri r0 r3, r12 e lr Dopo il salvataggio la struttura dei valori sullo stack è esattamente identica a quella che si ha in seguito ad una interruzione La procedura termina eseguendo un salto entro la funzione [...] ldr stmfd b lr,[sp] sp!,{r0-r3,r12,lr}.lnosub32 _irq_schedule: sub sp,sp,#32.lnosub32: ldr r12,=schedule [...] SOSERT 13 E12.29
30 Race condition in schedule( ) Problema: la funzione schedule( ) è rientrante Ad esempio: quando un job termina viene invocata Durante la sua esecuzione avviene una interruzione di tick Disabilitare le interruzioni durante la scansione del vettore di task porterebbe a tempi di blocco eccessivi Utilizziamo come meccanismo di sincronizzazione una variabile sentinella do_not_enter SOSERT 13 E12.30
31 La funzione schedule( ) versione finale struct task *schedule(void) { static int do_not_enter = 0; struct task *best; unsigned long oldreleases; irq_disable(); if (do_not_enter!= 0) { irq_enable(); return NULL; } do_not_enter = 1; do { [...] } while (oldreleases!=globalreleases); trigger_schedule = 0; do_not_enter = 0; best = (best!=current? best : NULL); irq_enable(); return best; } SOSERT 13 E12.31
Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
Gestione dei processi. Marco Cesati. Schema della lezione. Blocco di controllo 2. Sezioni e segmenti. Gestione dei processi. Job.
Di cosa parliamo in questa lezione? Lezione 4 Cosa è un processo e come viene gestito dal SO 1 e job 2 Il blocco di controllo Sistemi operativi 3 Struttura di un file eseguibile 4 La schedulazione dei
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
Introduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
costruttori e distruttori
costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,
Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005 Si noti che le soluzioni ai quesiti saranno considerate
Algoritmi 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
Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino
Il Sistema Operativo Il Sistema Operativo è uno strato software che: opera direttamente sull hardware; isola dai dettagli dell architettura hardware; fornisce un insieme di funzionalità di alto livello.
Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.
Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell
Compito di Fondamenti di Informatica
Compito di Fondamenti di Informatica In un magazzino viene utilizzato un archivio informatico, nel quale vengono memorizzate le informazioni relative ai prodotti contenuti nel magazzino e che ne permette
Architettura di un sistema di calcolo
Richiami sulla struttura dei sistemi di calcolo Gestione delle Interruzioni Gestione della comunicazione fra processore e dispositivi periferici Gerarchia di memoria Protezione. 2.1 Architettura di un
Esercizi. Assembly. Alessandro A. Nacci [email protected] ACSO 2014/2014
Esercizi Assembly Alessandro A. Nacci [email protected] ACSO 2014/2014 1 RIPASSO Architettura dei registri del 68K Di (0 i 7): registri di dato a 8, 16, 32 bit Ai (0 i 7): resgistri di a 16, 32
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,
Tecniche di traduzione da C ad assembly 68000. Note generali
Tecniche di traduzione da C ad assembly 68000 Note generali Schema di compilazione da C ad assembly 68K Ispirato a GCC Fa uso di: banco di registri classi d istruzioni modi d indirizzamento e organizzazione
dall 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 È
Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011
Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.
Sistema 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
Dynamic Linking. Introduzione Creazione di una libreria dinamica Uso di una libreria dinamica
Dynamic Linking Introduzione Creazione di una libreria dinamica Uso di una libreria dinamica Dynamic Linking Il linking tra i moduli di un programma e le librerie da esso utilizzate può essere Statico
Funzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati
Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad
Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli
CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 10 Strutture collegate - 2 A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Strutture collegate - 2 1 Contenuti!Strutture
Corso di Sistemi di Elaborazione delle informazioni
Corso di Sistemi di Elaborazione delle informazioni Sistemi Operativi Francesco Fontanella Complessità del Software Software applicativo Software di sistema Sistema Operativo Hardware 2 La struttura del
Inizializzazione, Assegnamento e Distruzione di Classi
Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della
Sistema operativo: Gestione dei processi
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica - ICA Prof. Pierluigi Plebani A.A. 2011/2012 Sistema operativo: Gestione dei processi La presente dispensa e da utilizzarsi
Arduino: Programmazione
Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite
I puntatori e l allocazione dinamica di memoria
I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in
Multithreading in Java. Fondamenti di Sistemi Informativi 2014-2015
Multithreading in Java Fondamenti di Sistemi Informativi 2014-2015 Multithreading La programmazione concorrente consente di eseguire più processi o thread nello stesso momento. Nel secondo caso si parla
Appunti 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
3. La sintassi di Java
pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer
Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Si noti che le soluzioni ai quesiti saranno considerate
J. 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
Laboratorio di Ingegneria del software Sistema di controllo di un ascensore Requisiti preliminari
Laboratorio di Ingegneria del software Sistema di controllo di un ascensore Requisiti preliminari A.A. 2013 2014 1 Introduzione Questo documento raccoglie i requisiti preliminari per il software di controllo
Concetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
MODELLI DI MEMORIA e CALL
Corso di Archite?ura degli Elaboratori Modulo di Assembly MODELLI DI MEMORIA e CALL Bruno Iafelice University of Bologna iafelice at cs(dot)unibo(dot)it 1 ArgomenC Modelli di memoria per 8088 Chiamata
STACK, istruzioni PUSH e POP; PROCEDURE, istruzioni CALL e RET
Lo stack STACK, istruzioni PUSH e POP; PROCEDURE, istruzioni CALL e RET Lo stack (tradotto talvolta in italiano con pila o catasta) è un'area di memoria privilegiata, dove il microprocessore può salvare
RTAI e scheduling. Andrea Sambi
RTAI e scheduling Andrea Sambi Scheduling Linux Due politiche di scheduling priority-driven possibili. FIFO priorità uguali Processo 1 iniziato Processo 1: iterazione 1 Processo 1: iterazione 2 Processo
Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine.
Quinto Homework 1) Si vuole progettare una cache a mappatura diretta per un sistema a 32 bit per una memoria da 2 GB (quindi sono solo 31 i bit utili per gli indirizzi) e blocchi di 64 byte. Rispondere
Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.
Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni
10 - Programmare con gli Array
10 - Programmare con gli Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
Università 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
Le 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
Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica
Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,
Visibilità dei Membri di una Classe
Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce
Laboratorio di Ingegneria del software Sistema di controllo di un ascensore Requisisti preliminari
Laboratorio di Ingegneria del software Sistema di controllo di un ascensore Requisisti preliminari A.A. 2012 2013 1 Introduzione Questo documento raccoglie i requisiti preliminari per il software di controllo
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E08 Soluzione Esercizi F. Gasparetti, C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf1/ Soluzione Esercizi
CAP. 4: Aspetti generali del Sistema Operativo Linux. l http://home.dei.polimi.it/silvano/acso.htm
Struttura interna del sistema Operativo Linux CAP. 4: Aspetti generali del Sistema Operativo Linux CAP. 5: Funzionalità del calcolatore l http://home.dei.polimi.it/silvano/acso.htm Funzionalità del Sistema
FONDAMENTI 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
Sistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 16 luglio 2015 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare
Variabili e tipi di dato
Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per
PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)
PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) (Da effettuare non prima del 01/01/2011) Le istruzioni si basano su un azienda che ha circa 1000 articoli, che utilizza l ultimo
I thread nel sistema operativo LINUX: Linuxthreads
I thread nel sistema operativo LINUX: Linuxthreads LinuxThreads: Caratteristiche Processi leggeri realizzati a livello kernel System call clone: int clone(int (*fn) (void *arg), void *child_stack, int
Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono
I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo
I Thread 1 Consideriamo due processi che devono lavorare sugli stessi dati. Come possono fare, se ogni processo ha la propria area dati (ossia, gli spazi di indirizzamento dei due processi sono separati)?
Architettura di un calcolatore: introduzione
Corso di Calcolatori Elettronici I Architettura di un calcolatore: introduzione Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie
http://www.programmiamo.altervista.org/c/oop/o...
PROGRAMMIAMO Programma per la gestione di un conto corrente C++ - Costruttore e distruttore C++ Home Contatti Supponiamo ora di voler scrivere un programma a menu per la gestione di un conto corrente bancario.
Elementi di Architettura e Sistemi Operativi. problema punti massimi i tuoi punti problema 1 6 problema 2 7 problema 3 7 problema 4 10 totale 30
Elementi di Architettura e Sistemi Operativi Bioinformatica - Tiziano Villa 22 Giugno 2012 Nome e Cognome: Matricola: Posta elettronica: problema punti massimi i tuoi punti problema 1 6 problema 2 7 problema
CAP. 6: Nucleo del sistema operativo (La gestione dei processi)
Struttura interna del sistema operativo Linux CAP. 6: Nucleo del sistema operativo (La gestione dei processi) Architettura del sistema operativo shell Programmi utente Modo utente Interfaccia delle chiamate
Il 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
Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P 1 2 0 0 P 1 1 2 2 3 3 2 P 2 3 0 2 P 2 6 0 0 P 3 2 1 1 P 3 0 1 1 < P 1, >
Algoritmo del banchiere Permette di gestire istanze multiple di una risorsa (a differenza dell algoritmo con grafo di allocazione risorse). Ciascun processo deve dichiarare a priori il massimo impiego
Esempio di moltiplicazione come somma e spostamento
Esempio di moltiplicazione come somma e spostamento Implementare una moltiplicazione coinvolge algoritmi di shift e somma Istruzioni di Shift:movimento di bit: ROL Rd ROR Rd LSL Rd LSR ASR Rd Rd 22 x 35
Monitor. Introduzione. Struttura di un TDA Monitor
Monitor Domenico Cotroneo Dipartimento di Informatica e Sistemistica Introduzione E stato introdotto per facilitare la programmazione strutturata di problemi in cui è necessario controllare l assegnazione
SOMMARIO 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
Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori
Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine
Automatizzare 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
Pronto Esecuzione Attesa Terminazione
Definizione Con il termine processo si indica una sequenza di azioni che il processore esegue Il programma invece, è una sequenza di azioni che il processore dovrà eseguire Il processo è quindi un programma
Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'
Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit5.zip contenente i file necessari (solution di VS2008 e progetto compresi). Avvertenze per la consegna: apporre all inizio di
Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti
Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del
STRUTTURE DEI SISTEMI DI CALCOLO
STRUTTURE DEI SISTEMI DI CALCOLO 2.1 Strutture dei sistemi di calcolo Funzionamento Struttura dell I/O Struttura della memoria Gerarchia delle memorie Protezione Hardware Architettura di un generico sistema
Oggetti 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
Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.
Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito
GESTIONE INFORMATICA DEI DATI AZIENDALI
GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy [email protected] Rudimenti di programmazione Programming
Laboratorio di programmazione
Laboratorio di programmazione Lezione VI Tatiana Zolo [email protected] 1 LE STRUCT Tipo definito dall utente i cui elementi possono essere eterogenei (di tipo diverso). Introduce un nuovo tipo di
L Assembler 8086. Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica
L Assembler 8086 M. Rebaudengo - M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica 1 M. Rebaudengo, M. Sonza Reorda Si suddividono in: istruzioni per il calcolo binario istruzioni
Sistemi 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
Il simulatore SPIM SPIM
Il simulatore SPIM Architetture dei Calcolatori (lettere A-I) SPIM SPIM: un simulatore per eseguire programmi assembler scritti per processori MIPS32 Download e materiale relativo alla pagina Web http://www.cs.wisc.edu/~larus/spim.html
Gestione dei File in C
Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania [email protected] http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte
Thread: sincronizzazione Esercitazioni del 09 Ottobre 2009
Thread: sincronizzazione Esercitazioni del 09 Ottobre 2009 Luca Fossati, Fabrizio Castro, Vittorio Zaccaria October 10, 2009 Sincronizzazione - 1 1 Esercizio 1: Sincronizzazione - 1 Qual è il problema
Strutture. 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
Alfabeto ed elementi lessicali del linguaggio C
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2015-2016 Alfabeto ed elementi lessicali del linguaggio C Pietro Di Lena - [email protected] s t a t i c s h o r t l e g s ; i n
Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente.
Ricorsione Funzioni ricorsive Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente. Un esempio di funzione ricorsiva
Esame di INFORMATICA
Università di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA Lezione 4 MACCHINA DI VON NEUMANN Anni 40 i dati e i programmi che descrivono come elaborare i dati possono essere codificati nello
Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica
Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,
Java: 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
CPU. Maurizio Palesi
CPU Central Processing Unit 1 Organizzazione Tipica CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 2 L'Esecutore
3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
3 - Variabili 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 Corso di
Linguaggio C - Stringhe
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - Stringhe La presente dispensa e da utilizzarsi ai
Linguaggio C. Fondamenti. Struttura di un programma.
Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C La nascita del linguaggio C fu dovuta all esigenza di disporre di un Linguaggio ad alto livello adatto alla realizzazione
Sistemi 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
ESERCIZIO 1 (b) Dove è memorizzato il numero del primo blocco del file? Insieme agli altri attributi del file, nella cartella che contiene il file.
ESERCIZIO 1 Si consideri un hard disk formattato la cui memoria è suddivisa in 16 blocchi (numerati da 0 a 15). Si supponga che sull hard disk sia memorizzato un unico file, contenuto, nell ordine, nei
Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013
Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il primo
ToolChain: Come Generare Applicazioni in Linguaggio Macchina
ToolChain: Come Generare Applicazioni in Linguaggio Macchina Luca Abeni e Luigi Palopoli March 30, 2015 La Lingua della CPU Una CPU capisce e riesce ad eseguire solo il linguaggio macchina Linguaggio di
ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++
ISTITUTO TECNICO INDUSTRIALE STATALE G A L I L E O F E R R A R I S DIISPENSA DII IINFORMATIICA E SIISTEMII AUTOMATIICII LA GESTIONE DEI FILE DI TESTO IN C++ Le classi per la gestione dei file. Il C++ è
