Struttura di timekeeping. Francesco Famulari
|
|
- Jacopo Giusti
- 5 anni fa
- Visualizzazioni
Transcript
1 Struttura di timekeeping Francesco Famulari
2 Argomenti Tutto il codice esaminato si riferisce al kernel vanilla Linux Gli argomenti presentati sono: Passaggio alla nuova architettura del time system Building blocks fondamentali dell'architettura del time system Architettura di time keeping Device che tengono traccia del passare del tempo Alcune strutture e funzioni dell'architettura di time keeping Preferenza di un device rispetto agli altri Modulo la13_module_time
3 Passaggio alla nuova architettura del time system Vecchio sistema del tempo
4 Passaggio alla nuova architettura del time system Infrastruttura base degli hrtimer incorporata nel kernel
5 Passaggio alla nuova architettura del time system John Stultz's GTOD (generic time of day) patch incorporata nel kernel
6 Passaggio alla nuova architettura del time system Clock event management
7 Passaggio alla nuova architettura del time system High resolution timer functionality
8 Building blocks fondamentali dell'architettura del time system hrtimer base infrastructure timeofday and clock source management clock event management high resolution timer functionality dynamic ticks
9 Architettura di time keeping L'architettura di timekeeping di Linux è l'insime delle strutture dati e funzioni del kernel relative al flusso del tempo. Attività periodiche del kernel: aggiornamento del tempo dall'avvio del sistema aggiornamento del tempo e della data determinare il tempo di esecuzione del processo corrente per ogni cpu e interromperlo se ha superato il tempo assegnatogli aggiornamento delle statistiche di uso delle risorse controllo se il tempo associato a ogni timer software è trascorso
10 Architettura di time keeping In Linux possiamo definire 2 concetti di tempo: Wall time (o time of day o real time): è un valore che rappresenta il tempo umano del giorno, proprio come quello osservabile su un orologio a muro o un orologio da polso. Tempo di sistema: è un valore monotonicamente crescente che rappresenta la quantità di tempo durante il quale il sistema sta funzionando.
11 Architettura di time keeping Un sistema Linux attualmente ha 2 clock che si riferiscono ai 2 tipi di tempo appena visti: uno è quello che riceve energia dalla batteria ed è chiamato "Real Time Clock" o "RTC" o "CMOS clock" o "Hardware clock" o "persistent clock"; esso tiene traccia del tempo quando il sistema è spento ma non viene usato quando il sistema è in funzione. L'altro è il "System clock", anche detto "Kernel clock" o "Software clock"; esso è un contatore software basato su timer interrupt. Esso non esiste quando il sistema non sta funzionando e così deve essere inizializzato dall'rtc quando il sistema viene avviato. Può anche essere inizializzato da qualche altra sorgente di tempo ad esempio tramite NTP.
12 Device che tengono traccia del passare del tempo 1) Real Time Clock (RTC) 2) Time Stamp Counter (TSC) 3) Programmable Interval Timer (PIT) 4) CPU Local Timer (local APIC) 5) High Precision Event Timer (HPET) 6) ACPI Power Management Timer (ACPI PMT)
13 Real Time Clock (RTC) Motorola chip Hz Acceduto dal kernel tramite le porte 0x70, 0x71 Programmabile grazie a /dev/rtc
14 Time Stamp Counter (TSC) La cpu aggiorna un suo registro detto TSC alla ricezione del segnale di clock tramite uno dei suoi pin da parte di un oscillatore esterno. Misure più accurate del PIT
15 PIT Il "vecchio" PIT è un chip da sempre presente sui PC IBM CMOS chip porte di I/O 0x40 0x Hz adjustable Emette un timer interrupt allo scadere di uno o più timer. Oggi non costituisce più un chip a sè stante incluso nel PC, ma la sua funzionalità è stata integrata nel southbridge chipset.
16 CPU Local Timer local APIC Ha un contatore a 32 bit versus 16 bit del PIT L'interrupt è mandato dal local APIC solo al suo processore Decrementa un contatore ogni 1, 2, 4, 8, 16, 32, 64, 128 segnali di clock del bus
17 High Precision Event Timer (HPET) Fornisce diversi (max 8) contatori monotoni crescenti a 64 bit (o a 32 bit). Fornisce diversi timer hardware sfruttabili dal kernel. Ogni contatore ha fino a 32 timer. timer := comparator + match register Il comparator compara il valore nel counter con quello nel match register. Programmabile attraverso registri mappati nello spazio di memoria. Ogni contatore ha un proprio segnale di clock di almeno 10 MHz
18 ACPI Power Management Timer (ACPI PMT) L'ACPI PMT ha un segnale di clock di circa 3.58 MHz. Accessibile tramite I/O port E' indipendente dalla regolazione dinamica del voltaggio e della frequenza da parte del BIOS o del sistema operativo e per questo è preferibile in tali situazioni al TSC che comunque ha una maggiore frequenza
19 Alcune strutture e funzioni dell'architettura di time keeping Nel file: include/linux/timekeeper_internal.h troviamo la definizione della struttura: struct timekeeper alcuni dei cui campi sono: struct clocksource *clock; u64 xtime_sec; u64 xtime_nsec; seqlock_t lock;
20 Alcune strutture e funzioni dell'architettura di time keeping Nel file: include/linux/clocksource.h troviamo: struct clocksource alcuni campi della quale sono: const char *name; struct list_head list; int rating; cycle_t (*read)(struct clocksource *cs); void (*suspend)(struct clocksource *cs); void (*resume)(struct clocksource *cs); cycle_t cycle_last; cycle_t mask; La struct clocksource è usata per il tempo di sistema, ad es.: static inline s64 clocksource_cyc2ns(cycle_t cycles, u32 mult, u32 shift)
21 Alcune strutture e funzioni dell'architettura di time keeping Nel file: /usr/src/linux x.y.z/kernel/time/clocksource.c troviamo: static struct clocksource *curr_clocksource; static LIST_HEAD(clocksource_list); static DEFINE_MUTEX(clocksource_mutex); static char override_name[32]; e troviamo inoltre funzioni varie per lavorare con i timecounter e i clocksource.
22 Chiamate di sistema relative al tempo Le chiamate di sistema relative al tempo sono: time stime gettimeofday settimeofday adjtimex
23 sys_gettimeofday La sys_gettimeofday in kernel/time.c rimanda alla getnstimeofday in kernel/time/timekeeping.c; questa restituisce il time of day in una timespec passata come parametro. struct timespec { kernel_time_t tv_sec; /* seconds */ long tv_nsec; /* nanoseconds */ }; kernel_time_t è kernel_long_t che attualmente è un long Nelle prossime slide vengono riportati i pezzi di codice che si ottengono seguendo tramite i tags la sys_gettimeofday fino alla getnstimeofday.
24 sys_gettimeofday SYSCALL_DEFINE2(gettimeofday, struct timeval user *, tv, struct timezone user *, tz) { if (likely(tv!= NULL)) { struct timeval ktv; do_gettimeofday(&ktv); if (copy_to_user(tv, &ktv, sizeof(ktv))) return EFAULT; } if (unlikely(tz!= NULL)) { if (copy_to_user(tz, &sys_tz, sizeof(sys_tz))) return EFAULT; } return 0; }
25 sys_gettimeofday void do_gettimeofday(struct timeval *tv) { struct timespec now; getnstimeofday(&now); tv >tv_sec = now.tv_sec; tv >tv_usec = now.tv_nsec/1000; } EXPORT_SYMBOL(do_gettimeofday); dove si ha che la struct timeval è: struct timeval { kernel_time_t tv_sec; /* seconds */ kernel_suseconds_t tv_usec; /* microseconds */ };
26 sys_gettimeofday void getnstimeofday(struct timespec *ts) { WARN_ON( getnstimeofday(ts)); } EXPORT_SYMBOL(getnstimeofday); int getnstimeofday(struct timespec *ts) { struct timekeeper *tk = &timekeeper; unsigned long seq; s64 nsecs = 0;
27 sys_gettimeofday do { seq = read_seqbegin(&tk >lock); ts >tv_sec = tk >xtime_sec; nsecs = timekeeping_get_ns(tk); } while (read_seqretry(&tk >lock, seq)); ts >tv_nsec = 0; timespec_add_ns(ts, nsecs);
28 sys_gettimeofday /* * Do not bail out early, in case there were callers still using * the value, even in the face of the WARN_ON. */ if (unlikely(timekeeping_suspended)) return EAGAIN; return 0; } EXPORT_SYMBOL( getnstimeofday); EAGAIN è un errore che può capitare quando si fanno operazioni di I/O non bloccanti e significa che ora non ci sono dati disponibili e quindi bisogna riprovare in seguito.
29 Scelta del miglior device In arch/x86/kernel/hpet.c si trova: static struct clocksource clocksource_hpet = {.name = "hpet",.rating = 250,.read = read_hpet,.mask = HPET_MASK,.flags = CLOCK_SOURCE_IS_CONTINUOUS,.resume = hpet_resume_counter, #ifdef CONFIG_X86_64.archdata = {.vclock_mode = VCLOCK_HPET }, #endif }; In questo esempio vediamo come un rating di 250 è "hardwired" per l'hpet.
30 Scelta del miglior device Seguiamo i vari passi dalla registrazione di un nuovo device alla scelta del miglior device per il sistema. In arch/x86/kernel/time/clocksource.c si trova la funzione: int clocksource_register(struct clocksource *cs) Serve a registrare un clocksource, cosa indispensabile prima che il clock source possa essere usato. Le ultime 3 istruzioni della funzione invocano in sequenza: clocksource_enqueue(cs); clocksource_enqueue_watchdog(cs); clocksource_select(); Esaminiamo la clocksource_enqueue() e poi vediamo la clocksource_select:
31 Scelta del miglior device static void clocksource_enqueue(struct clocksource *cs) { struct list_head *entry = &clocksource_list; struct clocksource *tmp; } list_for_each_entry(tmp, &clocksource_list, list) /* Keep track of the place, where to insert */ if (tmp >rating >= cs >rating) entry = &tmp >list; list_add(&cs >list, entry);
32 Scelta del miglior device In arch/x86/kernel/time/clocksource.c si trova: static void clocksource_select(void) Tale funzione deve essere invocata possedendo il clocksource_mutex. Come ultima istruzione tale funzione invoca la funzione (che si trova in timekeeping.c): void timekeeping_notify(struct clocksource *clock) che a sua volta invocherà stop_machine(change_clocksource, clock, NULL); a cui passa il puntatore alla funzione static int change_clocksource(void *data)
33 Scelta del miglior device La change clock_clocksource infine, dopo aver eseguito write_seqlock_irqsave(&tk >lock, flags); invocherà le 2 funzioni tk_setup_internals(tk, new); timekeeping_update(tk, true);
34 Clocksource nel sysfs E' possibile avere informazioni sui clocksource del sistema leggendo i seguenti file in /sys/ cat /sys/devices/system/clocksource/clocksource0/current_clock source cat /sys/devices/system/clocksource/clocksource0/available_clo cksource
35 Modulo per reperire alcune informazioni di timekeeping Il modulo la13_module_time stampa alcune informazioni di timekeeping. Per reperire le informazioni necessarie sui clocksource si è pensato inizialmente di usare la funzione clocksource_get_next() ma si è scoperto che è stata rimossa; tuttavia nel kernel ne rimane una sola traccia, nello specifico una dichiarazione extern nel file: include/linux/clocksource.h extern struct clocksource* clocksource_get_next(void); Allora si è aggiunta una riga al codice del kernel per esportare la variabile "timekeeper"; il file per effettuare la modifica e la modifica stessa sono: kernel/time/timekeeping.c EXPORT_SYMBOL_GPL(timekeeper); In questa maniera si ha accesso alla variabile del kernel: struct timekeeper timekeeper;
IL TEMPO
IL TEMPO LORENZO.BRACCIALE@UNIROMA2.IT DOVE STUDIARE Gapil http://users.lilik.it/~mirko/gapil/gapilse26.html#gapilsu125.html Linux http://www.linuxsa.org.au/tips/time.html IL FUSO ORARIO In Italia: GMT
DettagliFunzioni, puntatori, strutture. Lab. Calc. AA 2006/07
Funzioni, puntatori, strutture sommario In questa lezione integriamo le informazioni fornite su puntatori e funzioni approfondendo i seguenti punti Puntatori a puntatori Puntatori e array come parametri
DettagliInformatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)
DettagliGestione periferiche I/O
Gestione periferiche I/O Compiti del sottosistema IO Nascondere al programmatore i dettagli delle interfacce hw e dei dispositivi (utilizzo di controllori) Omogeneizzare la gestione di dispositivi diversi
DettagliSchedulazione in RTAI
Schedulazione in RTAI RTAI: modulo kernel rt_hello_km.c #include #include Thread real-time... Ciclo infinito RT_TASK task; Periodico... void task_routine() { while(1) { /* Codice
DettagliProcessi. Franco Maria Nardini
Processi Franco Maria Nardini La funzione main il kernel gestisce l avvio del vostro codice C (attraverso una funzione exec) routine speciale di start-up che prepara l ambiente di esecuzione per il main
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliIl linguaggio C. Istruzioni, funzioni, dati strutturati
Il linguaggio C Istruzioni, funzioni, dati strutturati Istruzioni Servono a dirigere il flusso di esecuzione di un programma controllano l ordine di esecuzione delle espressioni, quindi dei loro side effects
DettagliMISURA DEL TEMPO. Si possono distinguere due tipi principali di misura del tempo effettuate dal kernel:
MISURA DEL TEMPO Moltissime attività del computer, spesso in background, sono regolate dalla misura del tempo. Ad esempio, se il monitor si spegne automaticamente dopo aver terminato le attività alla console,
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
DettagliLezione R12. Sistemi operativi real-time I. Sistemi embedded e real-time
Lezione R12 I Sistemi embedded e 8 gennaio 2013 Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata SERT 13 R12.1 Di cosa parliamo in questa lezione? In
DettagliMarco Cesati Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata
Lezione R12 I Sistemi embedded e 8 gennaio 2013 Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata SERT 13 R12.1 Di cosa parliamo in questa lezione? In
DettagliCorso di Reti di Calcolatori T
Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 0 (proposta) Lettura e Scrittura File in Java e C Luca Foschini Michele Solimando, Giuseppe Martuscelli
DettagliSpinlock, read-write spinlock, seqlock
Spinlock, read-write spinlock, seqlock Università di Roma Tor Vergata Corso di Linux Avanzato Giugno 2013 Studente Innarella Rosy Professore Cesati Marco 1 tecnica descrizione Variabili specifiche per
DettagliVariabili e Funzioni. Informatica 1 / 19
Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 19 luglio 2013 (turno 1) Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare
DettagliArchitettura dei calcolatori e sistemi operativi. M2 Organizzazione della memoria virtuale Struttura dello spazio virtuale kernel e utente
Architettura dei calcolatori e sistemi operativi M2 Organizzazione della memoria virtuale Struttura dello spazio virtuale kernel e utente 18.01.2015 Architettura Intel x64 Lo spazio di indirizzamento virtuale
DettagliDavide Gennaretti, Matteo Nicolini
Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II Facoltà di Ingegneria Elettronica Cesena Cosa sono i microcontrollori? Piccoli computer concentrati in un chip Un Datapath
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
DettagliLa sintassi del C APPENDICE H
APPENDICE H La sintassi del C Nella notazione della sintassi utilizzata, le categorie sintattiche (non terminali) sono state indicate da uno stile tipografico in corsivo, mentre le parole letterali e i
DettagliQualsiasi programma in C++ segue lo schema:
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
DettagliSincronizzazione. Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino
Sincronizzazione Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Soluzioni hardware Le soluzioni hardware al problema della SC possono essere classificate
DettagliSistemi operativi Modulo II I semafori 2 Select
Il sistema operativo LINUX Semafori 2 Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica La system call read è bloccante Non
DettagliCALCOLATORI ELETTRONICI II
CALCOLATORI ELETTRONICI II L INTERFACCIA PARALLELA Argomenti della lezione Le interfacce parallele Il dispositivo Intel 855 Architettura Funzionamento Le interfacce parallele Esempio Le interfacce parallele
DettagliSistemi di Elaborazione delle Informazioni
SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2016/2017 1 Programma del corso Informatica di
DettagliIl registratore digitale
Il registratore digitale Nella pratica di laboratorio capita spesso di dover registrare segnali lentamente variabili per intervalli di tempo lunghi. Lo scopo della seconda esperienza è quello di realizzare
DettagliSistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1
SISTEMI DI INPUT/OUTPUT 10.1 Sistemi I/O Hardware di I/O Interfaccia di I/O per le applicazioni Sottosistema per l I/O del kernel Trasformazione delle richieste di I/O Stream Prestazioni 10.2 I/O Hardware
DettagliCorso di programmazione Arduino DI MALVEZZI DAVIDE
Corso di programmazione Arduino DI MALVEZZI DAVIDE Argomenti Pin digitali e pin analogici Gestione di timer e bottoni Utilizzo della porta seriale Oggetto String Controllo di schermi LCD Utilizzo dell
Dettaglimemoria virtuale protezione
Memoria Virtuale Le memorie cache forniscono un accesso veloce ai blocchi di memoria usati più di recente La memoria virtuale fornisce un accesso veloce ai dati sulle memorie di massa usati più di recente.
DettagliLe funzioni: dichiarazione, definizione e chiamata Il passaggio degli argomenti per valore e riferimento La funzione main() Le regole di visibilità
Funzioni I Parte Indice Le funzioni: dichiarazione, definizione e chiamata Il passaggio degli argomenti per valore e riferimento La funzione main() Le regole di visibilità Le funzioni: la dichiarazione
DettagliIstruzioni e linguaggio macchina
Istruzioni e linguaggio macchina I linguaggi macchina sono composti da istruzioni macchina, codificate in binario, con formato ben definito processori diversi hanno linguaggi macchina simili scopo: massimizzare
Dettagli5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche
Device driver - gestori delle periferiche Struttura interna del sistema operativo Linux Sono moduli software che realizzano l interfacciamento e la gestione dei dispositivi periferici Interagiscono con
DettagliLa memoria cache. Informatica generale
La memoria cache Nello schema di funzionamento di un calcolatore il processore continuamente preleva informazioni ed istruzioni dalla memoria centrale e scrive in essa informazioni La memoria centrale,
DettagliAssembly. Modello x86
Assembly Modello x86 1 Il microprocessore Un MICROPROCESSORE è un circuito integrato dotato di una struttura circuitale in grado di attuare un prefissato SET di ISTRUZIONI 2 Caratteristiche del microprocessore
DettagliArchitettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H
Architettura dei calcolatori e sistemi operativi Architettura MIPS e set istruzioni Capitolo 2 P&H Instruction Set Architecture ISA Linguaggio assemblatore e linguaggio macchina ISA processore MIPS Modello
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 9 luglio 2012 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare tutti
DettagliERRORI GENERATI DAL BIOS IN FASE DI AVVIO. Di Abe Wayer
ERRORI GENERATI DAL BIOS IN FASE DI AVVIO Di Abe Wayer XX Generalmente associati alla scheda madre 101 Main system board interrupt failure Scheda madre con circuiti alterati. Probabilmente la scheda è
DettagliRIKAYA Operating System
RIKAYA Operating System Specifiche di Progetto FASE 2 v.0.1 Anno Accademico 2018-2019 (da un documento di Marco di Felice) RIKAYA OS Sistema Operativo in 6 livelli di astrazione. Livello 6: Shell interattiva
DettagliIl linguaggio C. Il preprocessore...
Il linguaggio C Il preprocessore... 1 Il preprocessore Viene invocato prima della compilazione vera e propria Esegue delle manipolazioni testuali sul file sostituisce nomi con testo elimina e inserisce
DettagliLezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22
Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)
DettagliSincronizzazione Soluzioni hardware
Sincronizzazione Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Soluzioni hardware Le soluzionihardware al problemadellasc possono essere classificate
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliProgrammazione a oggetti in C nel kernel di Linux. Luca Ceresoli
Programmazione a oggetti in C nel kernel di Linux Luca Ceresoli Introduzione Programmazione non orientata agli oggetti Il software è un insieme di procedure che manipolano dati Le procedure accedono ai
DettagliIl Sistema Operativo fa parte del software di base; e` costituito da un insieme di programmi che interagiscono e cooperano per:
Il Sistema Operativo Il Sistema Operativo fa parte del software di base; e` costituito da un insieme di programmi che interagiscono e cooperano per: gestire efficientemente l'elaboratore e le sue periferiche,
DettagliInformatica Generale 07 - Sistemi Operativi:Gestione dei processi
Informatica Generale 07 - Sistemi Operativi:Gestione dei processi Cosa vedremo: Esecuzione di un programma Concetto di processo Interruzioni Sistemi monotasking e multitasking Time-sharing Tabella dei
DettagliFunzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)
Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di
DettagliInformatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 05/02/2014/ Foglio delle domande / VERSIONE 1
Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 05/02/2014/ Foglio delle domande/ VERSIONE 1 1) Nell uso dei puntatori in C++ la scrittura -> vuol dire: a) riferimento b) dereferenziazione e
Dettagli9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - 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 Corso di Laurea
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione : Elementi lessicali del C Vittorio Scarano Corso di Laurea in Informatica Elementi lessicali e token Costanti Identificatori Operatori operatori di incremento/decremento
DettagliSistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel
SISTEMI DI INPUT/OUTPUT 10.1 Sistemi I/O Hardware di I/O Interfaccia di I/O per le applicazioni Sottosistema per l I/O del kernel Trasformazione delle richieste di I/O Stream Prestazioni 10.2 I/O Hardware
DettagliDati due punti sul piano calcolare la loro distanza
Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12
DettagliDirectory. Le directory unix sono file.
Le directory unix sono file. Directory Molte system call per i file ordinari possono essere utilizzate per le directory. E.g. open, read, fstat, close. Tuttavia le directory non possono essere create con
DettagliCorso di Fondamenti di Informatica Il sistema dei tipi in C++
Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout
DettagliDi seguito per ciascun tipo di BIOS sono riportate le combinazioni di beep. In particolare sono analizzati i seguenti BIOS:
Di seguito per ciascun tipo di BIOS sono riportate le combinazioni di beep. In particolare sono analizzati i seguenti BIOS: 1. BIOS AMI 2. BIOS AWARD 3. BIOS AST 4. BIOS COMPAQ 5. BIOS IBM (desktop) 6.
DettagliGESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI
GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI Compiti del sottosistema di I/O Architettura del sottosistema di I/O Gestore di un dispositivo di I/O Gestione e organizzazione dei dischi COMPITI
DettagliIng. Emiliano Capuzzo Remote Contro NEC 11/11/2003. Remote Control NEC
Remote Control NEC Questo progetto risponde all esigenza di decodificare ed utilizzare i codici prodotti da telecomandi IR che adottano la codifica NEC Trasmissione Format. Questo tipo di codifica è attualmente
DettagliIntroduzione al linguaggio C Puntatori
Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017
DettagliGESTIONE DELLE PERIFERICHE D INGRESSO/USCITA COMPITI DEL SOTTOSISTEMA DI I/O ARGOMENTI
GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI Compiti del sottosistema di I/O Architettura del sottosistema di I/O Gestore di un di I/O 1. Nascondere al programmatore i dettagli delle interfacce
DettagliCapitolo 5 - Funzioni
Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente
DettagliMacchina di Riferimento: argomenti
Macchina di Riferimento: argomenti L'architettura di una macchina MIPS Organizzazione della memoria I registri della CPU L'esecuzione dei programmi Il ciclo fetch-execute Il simulatore SPIM 1 Architettura
DettagliSecondo biennio Articolazione Informatica Sistemi e Reti Prova Terza
Il clock della CPU A. fornisce la data corrente ai programmi macchina B. temporizza le operazioni elementari C. ha la stessa frequenza del clock del bus di sistema D. si misura in bit per secondo (bps)
DettagliGESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI
GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI Compiti del sottosistema di I/O Architettura del sottosistema di I/O Gestore di un dispositivo di I/O COMPITI DEL SOTTOSISTEMA DI I/O 1. Nascondere
DettagliVERIFICA DI SISTEMI. 5 Domanda [1 punto] Calcolare la velocità di trasferimento dei seguenti hard disk:
VERIFICA DI SISTEMI 1 Domanda [2 punti] Illustra la funzione della CPU e degli eventuali elementi che la costituiscono, specificando quali sono i parametri che ne caratterizzano il funzionamento. Spiega
DettagliGestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.
DettagliLe Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia
Le Funzioni in C Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2010/2011 docente: prof. Michele Salvemini 1/24 Sommario Le funzioni Il
DettagliArchitettura del calcolatore (Seconda parte)
Architettura del calcolatore (Seconda parte) Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin LINGUAGGIO E ORGANIZZAZIONE DEL CALCOLATORE Linguaggio assembly
DettagliCosa è? Come lo si usa? Come iniziare? Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)
Cosa è? Come lo si usa? Come iniziare? Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) 1^ parte Cosa è Arduino? Arduino è una piattaforma di sviluppo open-source basata su una semplice scheda
DettagliCorso di Reti di Calcolatori T
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori T Esercitazione 4 (proposta) Focalizzazione conoscenze acquisite Antonio Corradi, Luca Foschini Michele Solimando, Giuseppe
DettagliVariabili e Costanti
Struttura di un Programma C++ Un programma descrive una sequenza di azioni ogni azione è descritta da una espressione un insieme di espressioni seguite da ; è un istruzione espressione = più piccola unità
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 19 febbraio 2013 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare
DettagliMemorie a semiconduttore
Memoria centrale a semiconduttore (Cap. 5 Stallings) Architettura degli elaboratori -1 Pagina 209 Memorie a semiconduttore RAM Accesso casuale Read/Write Volatile Memorizzazione temporanea Statica o dinamica
DettagliArchitettura del Calcolatore
Giuseppe Manco Lezione 3 17 Ottobre 2003 Architettura del calcolatore Il calcolatore è uno strumento programmabile per la rappresentazione, la memorizzazione e l elaborazione delle informazioni un calcolatore
DettagliLaboratorio di Algoritmi e Strutture Dati Ingegneria e Scienze Informatiche - Cesena A.A
Ingegneria e Scienze Informatiche - Cesena A.A. 2014-2015 pietro.dilena@unibo.it MergeSort MergeSort MergeSort: esempio MergeSort: pseudocodice Algoritmo di ordinamento ricorsivo basato sulla tecnica Divide
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliStrutture Dati per Inserimento Ordinato. Luca Abeni
Strutture Dati per Inserimento Ordinato Luca Abeni Esempio: Ordinamento di Numeri A cosa servono i tipi di dato strutturati? Non bastano i tipi scalari? Capiamolo con un esempio... Problema: dato un insieme
DettagliEsercizi. La funzione swapint() primo tentativo
Politecnico di Milano Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio di array. #include
DettagliComponenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni
Componenti principali Componenti e connessioni Capitolo 3 CPU (Unita Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro 1 2 Architettura di Von Neumann Dati e instruzioni in memoria
DettagliArchitetture dei Dispositivi Programmabili Avanzati Altera
Architetture dei Dispositivi Programmabili Avanzati Altera Elettronica dei Sistemi Digitali LA Cesena, 4 Febbraio 2005 Aldo Romani aromani@deis.unibo.it tel. 051 209 3811 Lab. Star-Arces, V.le Pepoli,
DettagliCorso di Fondamenti di Programmazione canale E-O. Strutture. Strutture. Definizione di strutture (2) Definizione di strutture (1)
Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Strutture e Unioni DD Cap. 10, pp. 379-391, 405-406 KP Cap. 9, pp. 361-379 Strutture Strutture Collezioni di variabili correlate (aggregati)
DettagliCorso di Reti di Calcolatori T
Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 4 Focalizzazione conoscenze acquisite Luca Foschini Michele Solimando Anno accademico 2016/2017 Esercitazione
DettagliLezione E12. Sistemi operativi open-source, embedded e real-time
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 Di
DettagliLaboratorio reti AA 2007/2008. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione
Laboratorio reti AA 2007/2008 Dott. Matteo Roffilli roffilli@csr.unibo.it Ricevimento in ufficio dopo la lezione 1 Laboratorio reti AA 2007/2008 Per esercitarvi fate SSH su: alfa.csr.unibo.it si-tux00.csr.unibo.it.
DettagliFondamenti di Informatica
Esercizio 1. (3 punti) Fondamenti di Informatica PROVA SCRITTA 25 gennaio 2016 Data l istruzione assembler MIPS add $1,$2,$3, memorizzata all interno della memoria istruzioni della CPU, descrive la sua
DettagliC: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
DettagliLezione 8: Stringhe ed array multidimensionali
Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si
Dettagli5 Thread. 5 Thread. 5 Thread. Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni:
1 Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni: codice del programma in esecuzione un area di memoria contenente le strutture dati dichiarate
DettagliIl processore Intel 8086
Il processore Intel 8086 Il processore Intel 8086, introdotto sul mercato nel giugno 1978 è stato il primo microprocessore a 16 bit; esso fu utilizzato nel 1981 per il Personal Computer IBM XT. È il progenitore
Dettagli21/09/2015 SISTEMI E RETI. Router Cisco. Parte 1 - Introduzione. A cura dell Ing. Claudio Traini
SISTEMI E RETI Router Cisco Parte 1 - Introduzione A cura dell Ing. Claudio Traini 1 router sottoreti terminali Funzioni svolte dai Router I Router consentono l interconnessione tra sottoreti diverse I
DettagliEsercitazioni di Fondamenti di Informatica - Lez. 5 30/10/2018
Esercitazioni di Fondamenti di Informatica - Lez. 30/10/018 Esercizi sulle funzioni in C I codici e le soluzioni degli esercizi sono nella cartella parte1 1. Scrivere i prototipi delle seguenti funzioni.
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 13 febbraio 2017 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare
DettagliIngegneria Elettronica Ingegneria delle Telecomunicazioni (J-Z) Ing. Antonio Monteleone A.A. 2001/02 3 ciclo
Ingegneria Elettronica Ingegneria delle Telecomunicazioni (J-Z) Ing. Antonio Monteleone A.A. 2001/02 3 ciclo In C++ è possibile distinguere due aree distinte di memoria: memoria stack e memoria heap E
DettagliDevice drivers. Una brevissima descrizione dell'astrazione dell'accesso a periferiche tramite device files. Device driver e kernel modules
Device drivers Una brevissima descrizione dell'astrazione dell'accesso a periferiche tramite device files Marco Prandini Device driver e kernel modules Alcuni sono cablati nel kernel, la maggior parte
DettagliCapitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61
Capitolo 5 Array e collezioni c 2005 Pearson Education Italia Capitolo 5-1 / 61 Sommario: Array e collezioni 1 Array Array di oggetti Lunghezza di un array Accesso agli elementi di un array Array e cicli
DettagliI.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE. Classe: 5Ci
I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE Disciplina: Tecnologie e Progettazione di Sistemi Informatici e di Telecomunicazione Cognome e Nome:
Dettagli8 Microcontrollori PIC
8 Microcontrollori PIC 8.1 Descrizione generale Un microcontrollore è un dispositivo elettronico che opportunamente programmato è in grado di svolgere diverse funzioni in modo autonomo. Essenzialmente
DettagliCorso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica
Corso di Fondamenti di Informatica Puntatori e Allocazione Dinamica I puntatori (Richiamo) Il C++ prevede puntatori a dati di qualsiasi natura, semplici o strutturati e puntatori a funzione. In particolare
DettagliStruttura di un programma C++
Struttura di un programma C++ // Programma semplice in C++ #include using namespace std; int main() { cout
Dettagli