Lo Scheduling Real Time in Linux. Ivan Gualandri

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Lo Scheduling Real Time in Linux. Ivan Gualandri"

Transcript

1 Lo Scheduling Real Time in Linux Ivan Gualandri 3 gennaio 2010

2 2

3 Indice Introduzione i 1 Scheduling e sistemi multi-core I processori multicore Cosa è lo scheduling Scheduling Real-Time Sistemi Real-Time Algoritmi Real-Time Rate Monothonic Scheduler EDF Scheduler Linux e lo scheduling Cenni Su Linux Lo scheduling in Linux Lo scheduling non real-time Lo scheduling RealTime Esempio di scheduling Real Time Perfomance Test Sistemi utilizzati per l esecuzione dei test Hardware Sistema Operativo Tool utilizzati per i test Sampling Kernel Debug tools Tymetest Tipologie di test effettuate Analisi Risultati e Grafici Task Singolo Due Task task concorrenti Conclusioni A Siti web di riferimento 43 3

4 4 INDICE B Glossario 45 C Script usati per i test 47 C.1 Test1.sh C.2 test2.sh

5 Elenco delle figure 2.1 Livelli di priorità di linux, e i relativi scheduler CPU Ideale del CFS RBTree dei processi Scenario iniziale di esempio Valori di pri active prima della push Valori di pri active dopo la push Le code dopo le operazioni di push e pull Grafico priorità/runtime processo nel caso di task singolo Grafico Runtime/Numero di Loop Grafico Tempi Latenza/Livello Priorità Grafico Durata Loop/Livello Priorità Grafico Durata Loop/Livello Priorità Grafico Latenza/Livello Priorità Grafico Latenza/Livello Priorità con scheduler FIFO Grafico Latenza/Livello Priorità con scheduler RR

6 6 ELENCO DELLE FIGURE

7 Elenco delle tabelle 1.1 Tabella con valori dell esempio per RMS Tabella con valori dell esempio per EDF Tabella con valori dell esempio per lo scheduler Linux Valori tipici di priorità per processi convenzionali Tabella con valori dell esempio per lo scheduler O(1) I

8 II ELENCO DELLE TABELLE YOU HAVE TO START OUT LEARNING TO BELIEVE THE LITTLE LIES. So we can believe the big ones? YES. JUSTICE. MERCY. DUTY. THAT SORT OF THING. They re not the same at all! YOU THINK SO? THEN TAKE THE UNIVERSE AND GRIND IT DOWN TO THE FINEST POWDER AND SIEVE IT THROUGH THE FINEST SIEVE AND THEN SHOW ME ONE ATOM OF JUSTICE, ONE MOLECULE OF MERCY. AND YET YOU ACT AS IF THERE IS SOME IDEAL ORDER IN THE WORLD, AS IF THERE IS SOME... SOME RIGHTNESS IN THE UNIVERSE BY WHICH IT MAY BE JUDGED.... Terry Pratchett - The Hogfather A tutti coloro che hanno creduto in me e mi hanno incitato a proseguire anche quando volevo fermarmi!!! (per non escludere nessuno :) )

9 Introduzione Obiettivi Gli obiettivi di questa tesi sono: Approfondire la conoscenza dei sistemi operativi real-time, con una particolare attenzione al kernel Linux Eseguire uno studio approfondito sul funzionamento dei vari scheduler di Linux che si sono susseguiti fino ad oggi. Analizzare il comportamento del kernel Linux in scenari in cui si utilizzano processi real-time Organizzazione del lavoro Il lavoro è diviso principalmente in 3 parti: 1. La prima parte introduce i concetti chiave, quali scheduling, real-time, processi, necessari per una comprensione chiara del testo. 2. La seconda parte invece spiega quali soluzioni sono state adottate nel sistema operativo Linux per le tematiche introdotte nella prima parte 3. La terza e ultima parte invece spiega come sono stati eseguiti i test, l hardware che stato adottato, e ne analizza i risultati, traendone le dovute conclusioni Prerequisiti Per una corretta lettura e comprensione del seguente lavoro sono richieste conoscenze almeno di massima dei seguenti argomenti: Sistemi Operativi Linux/Unix Shell Scripting Nozioni di C i

10 ii INTRODUZIONE Strumenti utilizzati per la stesura della tesi Nella stesura di questo lavoro sono stati utilizzati diversi strumenti, tutti quanti con una caratteristica comune: sono tutti Open Source (vedi glossario). Qui di seguito un breve elenco di cosa e stato utilizzato: L A TEX Con il quale è stata scritta la tesina. Si tratta di un linguaggio di mark-up per la preparazione di testi, basato sul programma di composizione tipografica TEX Gnuplot si tratta di un potente strumento per generare grafici Kile un ottimo ide per scrivere documenti latex e ovviamente l immancabile editor di testo vi per scrivere e modificare i vari sorgenti Per i dettagli sull hardware utilizzato, si veda il paragrafo 3.1. Come è strutturata la tesi Questo lavoro è diviso principalmente in tre parti. La prima parte, si occupa di creare un background teorico alla problematica, introducendo brevemente i concetti chiave dello scheduling, del real-time, presentando alcuni algoritmi di esempio. Mentre la seconda parte si occupa piu da vicino di quello che è lo scheduling di Linux, gli algoritmi che si sono succeduti nel tempo, e il suo approccio al Real-Time, spiegando anche qua quali algoritmi usa, come funziona la patch che e stata installata, i suoi pregi e difetti. Ogni algoritmo presentato è corredato di un esempio per comprenderne meglio il funzionamento. La terza e ultima parte invece si occupa di effettuare una serie di test sul kernel con la patch real-time. Verrà presentato l hardware su cui sono state eseguite le prove, le tipologie di test che sono state effettuate, i vari tools che sono stati utilizzati (cosa sono, come funzionano,...) e verranno presentati i risultati di questi test, cercando di evidenziare i punti di forza e debolezza dell approccio di linux al real-time. Dove è che le performance sono ottimali, e dove invece degradano, e per quale motivo lo fanno. Infine gli appendici conterranno i link ai vari siti dove è stato prelevato il materiale necessario allo svolgimento dei test, il glossario con i termini principali utilizzati nella stesura di questo lavoro

11 Capitolo 1 Scheduling e sistemi multi-core In questo capitolo ci si occuperà dello scheduling nei sistemi operativi. Verrà spiegato brevemente cosa si intende per scheduling, verranno illustrate le varie tipologie di scheduling, verrà introdotto lo scheduling real-time e verranno accennate alcune tecniche avanzate come il Group Scheduling. Inoltre si introdurrà anche il concetto di processore multicore. 1.1 I processori multicore I processori multicore sono una tipologia di processori nata nel 2001 (il primo modello fu il POWER4 della IBM) ma che ha avuto una visibilità maggiore nel 2005, quando furono introdotti sul mercato i modelli dual-core dei due maggiori produttori di CPU: Intel e AMD. Questi tipi di processori normalmente si trovano nel formato: dual, quad, six core (i six core sono stati annunciati sul mercato proprio in questi giorni). Questo tipo di processori uniscono 2 o più core, le rispettive cache e i controller in un singolo package (vedi [6]), ciò permette di aumentare la potenza di calcolo senza aumentare la frequenza di lavoro, a vantaggio del calore dissipato e del consumo elettrico. Il passaggio a questa tecnologia è stato deciso, quando i progettisti dei vari processori si resero conto, che per aumentare le prestazioni di un processore non era piu conveniente aumentare la frequenza di un core unico. Questa tecnica infatti pesava troppo in termini di consumo (i processori erano arrivati a consumare anche 100W) e di calore dissipato. Decisero quindi 1

12 2 CAPITOLO 1. SCHEDULING E SISTEMI MULTI-CORE di indirizzare lo sviluppo nella direzione del parallelismo sui chip multicore. Naturalmente ogni innovazione ha i suoi pro e contro. Un sicuro vantaggio della tecnologia multicore è di rendere possibile l esecuzione di due o più thread contemporaneamente (ovviamente dipende dal numero dei core). Mentre uno degli svantaggi è che per sfruttare al meglio le caratteristiche di questo tipo di processori bisogna scrivere del software orientato all utilizzo di più thread contemporaneamente, in modo da tenere impegnati i vari core al fine di non renderli inutilizzati. 1.2 Cosa è lo scheduling In un sistema multitasking, i processi alternativamente o utilizzano il processore o aspettano (semplicemente il proprio turno, o anche il completamento di qualche evento), questo permette all utente di far girare più programmi contemporaneamente, anche in presenza di un solo processore. Esistono principalmente tre tipi di scheduling 1. Long-Term Scheduling Si decide di aggiungere un processo all insieme dei processi che devono essere eseguiti 2. Mid-Term Scheduling Si decide di aggiungere un processo all insieme di quelli che sono parzialmente o completamente in memoria 3. Short-Term Scheduling Si decide quale processo disponibile sar eseguito dal processore. Alcune delle caratteristiche che deve uno scheduler sono: Essere trasparente al programmatore, ovvero chi si occupa di scrivere programmi per un sistema operativo, non deve curarsi del comportamento dello scheduler. Cambiare da un processo all altro in maniera veloce, in modo da aumentare la quantità di tempo dedicata all esecuzione del processo vero e proprio. Bilanciare il carico in maniera equa Assicurare che se vi sono task con una priorità maggiore, questi vengano eseguiti prima degli altri. I processi interattivi devono rispondere velocemente agli stimoli da parte dell utente.

13 1.3. SCHEDULING REAL-TIME 3 Ai job che lavorano in background deve comunque essere garantita la possibilità di portare a termine il loro lavoro in tempi ragionevoli. Nessun processo dovrebbe soffrire di starvation (vedere il glossario per il significato di starvation) 1.3 Scheduling Real-Time Sistemi Real-Time Quando si parla di Sistemi Operativi Real-Time (spesso si usa anche la sigla RTOS), si parla di sistemi nei quali i tempi di risposta di alcuni processi sono fondamentali, esempi di quando utilizzare un sistema operativo realtime sono: Applicazioni Militari Controllo di esperimenti di laboratorio Controllo di apparecchiature mediche Nei sistemi di questo tipo quindi ad essere importante non è il throughput, ma che venga garantita la deadline dei vari processi che la richiedono. Per meglio capire il concetto di Tempo Reale, definiamone anche i task. Innanzitutto è da notare che in questi sistemi non tutti i task possiedono questa caratteristica, e normalmente sono un numero limitato. I task realtime possono essere principalmente di due tipi: Hard Real-Time Questi sono dei task che devono essere eseguiti entro la loro scadenza altrimenti potrebbero causare malfunzionamenti. Soft Real-Time Ha una scadenza associata, che è desiderabile, ma non obbligatoria. Inoltre questo gli eventi che li generano possono essere o periodici o aperiodici il primo prevede che il processo real-time sia eseguito una volta ogni intervallo di tempo T, mentre il secondo invece prevede una scadenza in cui il task venga servito. Un sistema potrebbe dover rispondere a più task periodici di questo tipo, e in base a quanto tempo ogni task richieda, potrebbe non essere possibile gestirli tutti. Se per esempio abbiamo m task periodici con un periodo P i e richiede C i secondi di tempo CPU per gestire ogni evento, allora il carico di task periodici può essere dato solamente da: m i=1 C i P i 1

14 4 CAPITOLO 1. SCHEDULING E SISTEMI MULTI-CORE Uno degli obiettivi quindi dello scheduling real-time è fare in modo che l esecuzione dei processi rispetti il maggior numero di deadline (scadenze) possibile. La teoria dello scheduling real-time si può considerare divisa in 2 parti: Progettazione e implementazione dello scheduler L analisi dello scheduler nella quale si cerca di vedere se un certo scheduler soddisfi tutte le deadline di tutti i processi. Attenzione: Real-Time, non vuol dire migliori performance, ma bensì si determinismo e rispetto delle scadenze di un processo. 1.4 Algoritmi Real-Time Una delle cose interessanti da notare che la maggior parte dei sistemi operativi real-time odierni non è in grado di gestire le scadenze di un processo (come da definizione precedente), mentre tutti sono progettati per cercare di essere il più pronti possibile ai task in tempo reale, ovvero cercando di eseguirli con il minor ritardo possibile ed evitando se possibili altre interruzioni. Gli algoritmi per questi sistemi possono essere di due tipi principalmente: Dinamici, che effettuano le decisione in run-time Statici che invece prendono le loro decisioni quando il sistema viene lanciato. Vediamo brevemente alcuni di questi algoritmi Rate Monothonic Scheduler Il Rate Monothonic Scheduler (abbreviato RMS) è uno dei primi algoritmi studiati messo a punto da Liu e Layland nel In pratica questo algoritmo assegna le priorità ai task in base ai loro periodi. Dove per periodo T si intende la quantità di tempo compresa fra l arrivo di un istanza del task e la successiva. La frequenza di un task è l inverso del suo periodo. Normalmente la fine del periodo di un task coincide anche con la sua scadenza. Il tempo di esecuzione C è la quantità di tempo di elaborazione richiesta da ogni occorrenza del task, in un sistema mono processore il tempo di esecuzione non deve essere più grande del periodo, per cui si ha C < T

15 1.4. ALGORITMI REAL-TIME 5 Se tutti i processi vengono eseguiti sempre fino al termine, allora si può calcolare l utilizzazione del processore come: U = C T In questo tipo di algoritmo il task che ha la priorità piu alta è quello con il periodo pi breve. In un ambiente con priorità assegnate staticamente l RMS si può considerare un algoritmo ottimo. Liu & Layland hanno dimostrato che per un insieme di n task periodici esiste una schedulazione che soddisfi tutte le scadenze se è sotto un certo limite di tempo. Il test di schedulabilità per l RMS è una condizione necessaria ma non sufficiente con la quale viene garantito che tutti i processi vengano schedulati entro le loro scadenze, ed è data da: U = n i=1 C i T i n( n 2 1) dove C i e` il tempo di CPU richiesto, e T i è il tempo di rilascio. e n è il numero di processi che devono essere schedulati. Ora se il numero di processi tende a infinito, questa espressione tende a: lim n( n 2 1) = ln n Ovvero RMS può garantire tutte le scadenze con una utilizzazione del processore intrno al 69,3% e quindi il restante 30,7% della cpu può quindi essere utilizzato per la schedulazione di processi non real-time. L assegnazione delle priorità del RMS è anche ottima, ovvero se esiste un algoritmo di scheduling con priorità statiche può soddisfare tutte le deadlines, allora anche l RMS può farlo. Esempio Abbiamo il seguente scenario con 3 processi: Tabella 1.1: Tabella con valori dell esempio per RMS Processo Tempo di esecuzione Periodo P1 1 8 P2 2 5 P L utilizzazione del processore è data da: = 0,

16 6 CAPITOLO 1. SCHEDULING E SISTEMI MULTI-CORE Mentre la condizione sufficiente per cui possiamo dire che è un sistema schedulabile è: Ora dato che U = n( n 2 1) = 3( 3 2 1) = 0, , 725 < 0, possiamo concludere che il sistema è schedulabile EDF Scheduler Questo tipo di scheduling utilizza una coda di priorità e tiene in considerazione le scadenze di ogni task. Ogni volta che viene chiamata la funzione di schedulazione (il processo termina il suo lavoro, un nuovo processo viene lanciato) la coda viene analizzata alla ricerca del processo più vicino alla sua scadenza. Questo sar il prossimo a dover essere schedulato per l esecuzione. L EDF è un algoritmo ottimo su sistemi uniprocessore con prerilascio. Ovvero se una collezione di jobs indipendenti, ognuno dei quali con un suo istante di arrivo, una richiesta di esecuzione e una scadenza (deadline) questo verrà schedulato in modo tale che tutti i jobs completino il loro lavoro prima della scadenza. Nel caso ci sono processi periodici, che hanno anche questi delle scadenze (uguali al loro periodo) EDF ha una utilizzazione vicina al 100%. Il test di schedulabilità per EDF è quindi: U = m i=1 C i P i 1 Dove C i è il tempo di calcolo richiesto dal processo i-esimo e P i e il periodo del processo. Grazie a questo test EDF garantisce che tutte le scadenze sono rispettate e l utilizzazione totale della CPU non è al 100% Teorema 1. 1 Dato un insieme di tasks periodici or sporadici, con le relative scadenze uguali al periodo,l insieme dei task è schedulabile da EDF se e solo se: m C i U = 1 P i i=1 Corollario 1. EDF è un algoritmo ottimo, nel senso che se un insieme di tasks è schedulabile allora, è schedulabile anche da EDF. Dimostrazione. Infatti se U > 11 nessun algoritmo può schedulare con successo l insieme di task dato. Invece se U 1 allora tale insieme di tasks è schedulabile da EDF (e forse anche da altri algoritmi). 1 Per maggiori informazioni sulla dimostrazione consultare [20]

17 1.4. ALGORITMI REAL-TIME 7 Rispetto ad un algoritmo come l RMS l EDF garantisce il rispetto di tutte le scadenze anche con un carico molto alto. Ma questo algoritmo presenta anche alcune problematiche: Se il sistema è sovraccarico il numero di processi che non rispettano la scadenza non si puo prevedere. È un algoritmo molto difficile da implementare, e uno dei principali problemi è come rappresentare le scadenze e anche come arrotondarle. Per questo l EDF non si trova molto spesso come algoritmo per sistemi Real Time industriali. Anche se esistono alcuni sistemi operativi che lo implementano (per esempio Shark RTOS, ERIKA Enterprise, vedi appendici). Esempio Di schedulabilità Siano dati i seguenti 3 processi: Tabella 1.2: Tabella con valori dell esempio per EDF Processo Tempo di esecuzione Periodo P1 1 8 P2 2 5 P Eseguiamo il test di schedulabili`ta: U = m i=1 C i 1 = 1 P i = 0, 925 = 92, 5% 10 Ora dato che il limite per EDF di schedulabilita è il 100% della CPU, allora il sistema è schedulabile.

18 8 CAPITOLO 1. SCHEDULING E SISTEMI MULTI-CORE

19 Capitolo 2 Linux e lo scheduling In questo capitolo verrà fatta una breve introduzione del sistema operativo Linux, e se ne illustreranno le caratteristiche dello scheduler, le tecniche adottate, come quali algoritmi usa (per il real-time e non), come e`strutturato un processo 2.1 Cenni Su Linux Linux è un sistema operativo nato nato nel 1991, da un idea di Linus Torvalds, si ispirava inizialmente al sistema operativo Minix creato da Andrew. S. Tanenbaum professore all università di Amsterdam per scopi didattici. Iniziato quasi per gioco, oggi è un sistema molto usato in ambito server, e si sta diffondendo anche per usi domestici e di workstation. E scritto interamente in C e Assembler, ed è disponibile per diverse architetture hardware, i sorgenti sono rilasciati sotto licenza GPL che lo rendono liberamente modificabile da chiunque. In realta Linux è il nome del kernel, mentre quando si parla del sistema operativo, si usa il termine GNU/Linux, dove GNU è il nome del progetto creato da Richard Stallman che aveva l intento di creare un clone compatibile di Unix, composto interamente di software Libero, e grazie al kernel creato da Linus Torvalds, potè diventare un sistema operativo completo. In realtà il progetto GNU si sarebbe dovuto basare principalmente sul kernel Hurd 1, in sviluppo dal 1984, ma dato che cresceva a rilento, all inizio si decise di usare Linux (che stava crescendo molto velocemente nei primi anni 90) come kernel in attesa del completamento di hurd, che ad oggi, anche se ancora in sviluppo non e avvenuto. La tipologia adottata da questo kernel è monolitico/modulare. Un kernel si dice monolitoco quando tutti i servizi del sistema operativo, girano nel thread del kernel. Per modulare invece si intende la possibilita di poter 1 Per maggiori informazioni: 9

20 10 CAPITOLO 2. LINUX E LO SCHEDULING compilare alcune componenti del sistema operativo, come moduli del kernel, che si possono caricare solo quando ce ne è bisogno. Ad oggi il mondo di Linux è composto da svariate distribuzioni, spesso molto differenti tra loro, alcune sviluppate prettamente per l ambito desktop (come per esempio Ubuntu, Mandriva, OpenSuse), altre sviluppate pensando ad ambienti server (come Red Hat, Debian), altre magari specializzate per l utilizzo in ambito scientifico, cinematografico, e così via. Anche se tutte queste distribuzioni sono diverse tra loro, tutte condividono lo stesso kernel, quello di Linux. 2.2 Lo scheduling in Linux Prima di entrare nel dettaglio dello scheduler cerchiamo di spiegare come Linux gestisce i processi. In Linux un processo (o task) è una istanza di un programma che comprende il codice del programma, il contenuto delle variabili e lo stato del programma. A parte il codice, il resto varia durante l esecuzione del processo. Le informazioni sullo stato del processo si trovano nel Process descriptor La filosofia adottata dal kernel Linux è principalmente quella del time sharing, per la schedulazione dei processi, questo vuol dire che un task, viene eseguito per un determinato periodo di tempo, entro il quale se non e terminato viene messo in uno stato di riposo, e ne viene eseguito un altro. Inoltre ogni processo ha definita una priorità. Che va da 0 a 140, e in base al livello che ha, si useraún certo tipo di scheduler. Infatti esistono almeno 3 classi di scheduling, che sono: SCHED NORMAL indicato anche con SCHED OTHER si usa per le priorità che vanno da 139 a 101, queste indicano normalmente i processi non real-time, e quindi utilizzano l algoritmo di scheduling fornito di default dal kernel (per la serie prima della sarà O(1), mentre per le successive sarà CFS, spiegati in questo paragrafo) SCHED FIFO per i processi con priorità da 100 a 0, questo è uno degli algoritmi di scheduling disponibile per i processi di tipo Real-Time In questo caso non è previsto prerilascio e quindi un processo quando viene lanciato, resta in esecuzione fino al suo termine. E una classica coda Firs Int - First Out SCHED RR anche in questo caso si usa nei processi real-time, ma questa volta si tratta di un algoritmo con prerilascio, anche questo si può usare per processi con priorità da 100 a 0. In questo caso l algoritmo usato è di tipo Round Robin Se la priorità va da 0 a 99, in questo caso e possibile scegliere quale algoritmo far usare al processo. Infatti come si può notare, esistono due tipi di algoritmi per questi livelli di priorità.

21 2.2. LO SCHEDULING IN LINUX 11 Figura 2.1: Livelli di priorità di linux, e i relativi scheduler Lo scheduling non real-time Fra la versione 2.4 del kernel, e la versione 2.6 si sono susseguite 3 versioni differenti dello scheduler. In questo paragrafo le illustreremo brevemente, cercando di evidenziarne i lati positivi e negativi. Scheduling nella serie 2.4.x Il tempo viene suddiviso in periodi detti epoche, che si ripetono ciclicamente. Ogni volta che viene creato un processo, gli viene anche assegnato un quanto di tempo, che viene inserito nel campo counter del descrittore del processo. E il valore di counter viene inserito poi nel campo priority. Il quanto di tempo definisce un limite superiore al tempo di utilizzo di della CPU nell epoca in questione. Normalmente il quanto di tempo iniziale è di 20 clock ticks (o jiffies 2 ), il valore più alto ammissibile senza compromettere la reattività del sistema. Mediante la funzione nice(int n) si può variare il valore iniziale del quanto. Tramite la formula: priority = 20 - n Quando tutti i processi che si trovano nello stato TASK RUNNING hanno terminato il loro quanto, l epoca corrente termina e ne inizia un altra. Viene quindi ricalcolato di nuovo il quanto di tempo da assegnare ad ogni processo, in questo caso la formula utilizzata è: counter = counter 2 + priority (2.1) Cosi si premiano i processi I/Obound. Per capire meglio come lo scheduler premia i processi CPU Bound facciamo un piccolo esempio. Alla fine di un epoca si ha il seguente scenario: 2 Nelle vecchie versioni del kernel questo termine indicava il numero di tick del timer, invece nelle ultime versioni vale 10ms

22 12 CAPITOLO 2. LINUX E LO SCHEDULING Tabella 2.1: Tabella con valori dell esempio per lo scheduler Linux 2.4 Processo Counter Priority P P P Supponiamo che nessuno dei tre abbia il valore priority variato tramite nice (ovvero per tutti e 3 è 20). Ora all inizio della nuova epoca verranno assegnati nuovi quanti di tempo secondo la formula nell equazione 2.1, vediamo che valori assumeranno: P 1.counter = 10 2 P 2.counter = = = 30 P 3.counter = = 20 2 Come possiamo vedere il processo P2, che ha utilizzato meno CPU degli altri (si riconosce dal valore del campo counter), è stato premiato con un nuovo quanto di tempo maggiore rispetto agli altri processi. Mentre P3, che ha il suo quanto lo ha esaurito, è stato penalizzato e ha ricevuto una porzione minima del quanto di tempo Tutti i processi che sono schedulati con SCHED OTHER gli si assegna una prioritá statica pari a 0, mentre quella dinamica è assegnata come sopra. Mentre i processi real-time hanno una prioritá statica che assegnata fra i valori 1 e 99, e questa non cambia mai durante l esecuzione del processo. I passi che segue la funzione schedule() sono i seguenti: Completa eventuali system call in corso Se si tratta di un processo con SCHED RR ed ha esaurito il suo quanto viene rimesso in fondo alla coda, e gliene viene assegnato uno nuovo. Si analizza la coda dei processi pronti per selezionare quale è il prossimo ad essere eseguito mediante la funzione goodness. Questa se é in grado di scegliere il nuovo task ne prepara l esecuzione, altrimenti inizia una nuova epoca. La funzione goodness può tornare i seguenti valori: 1. c = 1000 Indica che questo processo non deve essere mai selezionato, e questo si verifica se nella runqueue corrente ci sta il solo processo init. 2. c = 0 Il processo ha terminato il suo quanto, a meno che il processo non sia il primo della sua lista e tutti gli altri process hanno esaurito il loro quanto, questo non verra selezionato.

23 2.2. LO SCHEDULING IN LINUX < c < 1000 Si tratta di un normale processo che non ha terminato il proprio quanto. Più è alto questo valore, e meglio è. 4. c >= 1000 Si tratta di un processo realtime. I problemi di questo approccio sono i seguenti: Le prestazioni del kernel degradano all aumentare del numero di processi In sistemi con carico elevato il valore definito per il quanto può essere troppo grande. Il supporto fornito per i processi RealTime non é ottimale. O(1) Scheduler É lo scheduler introdotto a partire dalla versione 2.6 che è rimasto fino alla Chiamato anche Constant Time Scheduling e cerca di occuparsi di alcuni problemi del vecchio scheduler. Il nome deriva dalla notazione asintotica usata spesso nel calcolo della complessita degli algoritmi. Questo tipo di scheduler utilizza due code di esecuzione per lo stato STATE RUNNING: active ed expired. La prima coda, contiene i task pronti per essere eseguiti che ancora non hanno consumato il loro quanto di tempo. La seconda invece contiene quelli che hanno ancora lo stato di TASK RUNNING ma che ha svuotato il suo quanto di tempo. Ogni CPU ha le sue code active ed expired 3, tutti i task in una CPU iniziano dalla coda active, e appena terminano il loro quanto, questi vengono messi nella coda expired. Se nella coda dei processi attivi non ci sono più task che si possono eseguire, le 2 code (active ed expired) vengono scambiate. Quando un processo finisce il suo quanto, e viene messo nella coda expired, gli viene riassegnato anche un nuovo timeslice. La chiave di questo algoritmo, da cui ne deriva anche il nome, è proprio nel ricalcolo delle timeslice. Infatti dal momento che il nuovo quanto di tempo viene calcolato quando un processo lascia la coda degli active per quella degli expired, non si verifica mai il caso in cui tutti i task necessitino contemporaneamente del ricalcolo delle timeslice, che avrebbe una complessita pari ad O(n), invece essendo fatto di volta in volta sui singoli processi, ed essendo scambiate le liste di volta in volta, si evitano tutte le operazioni che potrebbero richiedere una complessita di tipo O(n), e si ha quindi una complessita costante. Le priorità dei processi normali vanno, come gia detto in precedenza, da 140 (livello più basso) a 100 (quello piú alto). Queste priorità sono anche usate per ottenere il quanto di tempo per il singolo processo. 3 dette runqueue

24 14 CAPITOLO 2. LINUX E LO SCHEDULING Quando il processo si sposta nella coda degli expired, allora il nuovo quanto di tempo è calcolato come segue: { (140 static priority) 20 se static priority < 120 basetimequantum = (140 static priority) 5 se static priority 120 Cosi il valore del quanto di tempo base è dato dalla priorità statica, e più è alta la priorità, maggiore è il quanto di tempo che gli viene assegnato. Quando lo scheduler prende un nuovo task per metterlo in esecuzione usa invece la Priorità dinamica Il kernel utilizza la priorità statica solamente come punto di partenza, e la adatta in base al comportamento del task. Per farlo utilizza un bonus, che viene calcolato basandosi su quanto è il tempo medio di sleep per un dato processo e può variare da 0 a 10 compreso. La priorità dinamica è cosi calcolata: dynamic priority = max (100, min (staticpriority bonus + 5, 139)) Il valore bonus è calcolato secondo la seguente formula: CURRENT_BONUS(p)=(NS_TO_JIFFIES((p)->sleep_avg)*MAX_BONUS/MAX_SLEEP_AVG) Cioè converte il tempo medio del processo di sleep in Jiffies, lo moltiplica per il massimo bonus ottenibile e lo divide per il tempo medio di sleep massimo (questo valore indica il tempo massimo che può raggiungere il valore sleep avg ed equivale a 10 9 ns, ovvero 1 secondo). Infine il kernel divide i tasks in due tipi: Interattivi e batch, il primo ha bisogno di girare piuttosto velocemente, ma non necessita di molto tempo. I secondi invece sono normalmente processi che lavorano in background Per decidere se un task è interattivo o job si usa la seguente equazione: dynamic priority 3 static priority (2.2) Se un task soddisfa questa equazione allora si tratta di un processo interattivo. Tabella 2.2: Valori tipici di priorità per processi convenzionali Prio descr. Prio. Nice Base Time Quantum Interactivedelta Soglia sleeptime Max ms ms High ms ms Default ms ms Low ms ms Min ms ms Il valore di nice, è un altro indicatore di priorità, si tratta di un numero che va da -20 a 19. Il valore più grande corrisponde alla priorità più bassa,

Il Concetto di Processo

Il Concetto di Processo Processi e Thread Il Concetto di Processo Il processo è un programma in esecuzione. È l unità di esecuzione all interno del S.O. Solitamente, l esecuzione di un processo è sequenziale (le istruzioni vengono

Dettagli

Lezione n.19 Processori RISC e CISC

Lezione n.19 Processori RISC e CISC Lezione n.19 Processori RISC e CISC 1 Processori RISC e Superscalari Motivazioni che hanno portato alla realizzazione di queste architetture Sommario: Confronto tra le architetture CISC e RISC Prestazioni

Dettagli

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti Dai sistemi concorrenti ai sistemi distribuiti Problemi nei sistemi concorrenti e distribuiti I sistemi concorrenti e distribuiti hanno in comune l ovvio problema di coordinare le varie attività dei differenti

Dettagli

VIRTUALIZE IT. www.digibyte.it - digibyte@digibyte.it

VIRTUALIZE IT. www.digibyte.it - digibyte@digibyte.it il server? virtualizzalo!! Se ti stai domandando: ma cosa stanno dicendo? ancora non sai che la virtualizzazione è una tecnologia software, oggi ormai consolidata, che sta progressivamente modificando

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione

Dettagli

Esercizi Capitolo 5 - Alberi

Esercizi Capitolo 5 - Alberi Esercizi Capitolo 5 - Alberi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle

Dettagli

Sistemi Operativi Sincronizzazione tra Processi

Sistemi Operativi Sincronizzazione tra Processi Sistemi Operativi Processi Docente: Claudio E. Palazzi cpalazzi@math.unipd.it Crediti per queste slides al Prof. Tullio Vardanega 1 Processi indipendenti possono avanzare concorrentemente senza alcun vincolo

Dettagli

Ricerca Operativa Branch-and-Bound per problemi di Programmazione Lineare Intera

Ricerca Operativa Branch-and-Bound per problemi di Programmazione Lineare Intera Ricerca Operativa Branch-and-Bound per problemi di Programmazione Lineare Intera L. De Giovanni AVVERTENZA: le note presentate di seguito non hanno alcuna pretesa di completezza, né hanno lo scopo di sostituirsi

Dettagli

Progetto VirtualCED Clustered

Progetto VirtualCED Clustered Progetto VirtualCED Clustered Un passo indietro Il progetto VirtualCED, descritto in un precedente articolo 1, è ormai stato implementato con successo. Riassumendo brevemente, si tratta di un progetto

Dettagli

1. Si consideri uno spazio di indirizzamento logico di otto pagine di 1024 parole ognuna, mappate su una memoria fisica di 32 frame.

1. Si consideri uno spazio di indirizzamento logico di otto pagine di 1024 parole ognuna, mappate su una memoria fisica di 32 frame. 1. Si consideri uno spazio di indirizzamento logico di otto pagine di 1024 parole ognuna, mappate su una memoria fisica di 32 frame. (a) Da quanti bit è costituito l indirizzo logico? (b) Da quanti bit

Dettagli

Sizing di un infrastruttura server con VMware

Sizing di un infrastruttura server con VMware Sizing di un infrastruttura server con VMware v1.1 Matteo Cappelli Vediamo una serie di best practices per progettare e dimensionare un infrastruttura di server virtuali con VMware vsphere 5.0. Innanzitutto

Dettagli

I componenti di un Sistema di elaborazione. CPU (central process unit)

I componenti di un Sistema di elaborazione. CPU (central process unit) I componenti di un Sistema di elaborazione. CPU (central process unit) I componenti di un Sistema di elaborazione. CPU (central process unit) La C.P.U. è il dispositivo che esegue materialmente gli ALGORITMI.

Dettagli

Web Conferencing Open Source

Web Conferencing Open Source Web Conferencing Open Source A cura di Giuseppe Maugeri g.maugeri@bembughi.org 1 Cos è BigBlueButton? Sistema di Web Conferencing Open Source Basato su più di quattordici componenti Open-Source. Fornisce

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. - lezione 14 - Thread in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. - lezione 14 - Thread in Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 14 - Thread in Java 1 Cos è un

Dettagli

Virtualizzazione con Microsoft Tecnologie e Licensing

Virtualizzazione con Microsoft Tecnologie e Licensing Microsoft Virtualizzazione con Microsoft Tecnologie e Licensing Profile Redirezione dei documenti Offline files Server Presentation Management Desktop Windows Vista Enterprise Centralized Desktop Application

Dettagli

Setup e installazione

Setup e installazione Setup e installazione 2 Prima di muovere i primi passi con Blender e avventurarci nel vasto mondo della computer grafica, dobbiamo assicurarci di disporre di due cose: un computer e Blender. 6 Capitolo

Dettagli

Sistemi Operativi 1. Mattia Monga. a.a. 2008/09. Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.

Sistemi 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

Dettagli

Virtualizzazione e installazione Linux

Virtualizzazione e installazione Linux Virtualizzazione e installazione Linux Federico De Meo, Davide Quaglia, Simone Bronuzzi Lo scopo di questa esercitazione è quello di introdurre il concetto di virtualizzazione, di creare un ambiente virtuale

Dettagli

Per questa ragione il nostro sforzo si è concentrato sugli aspetti elencati qui di seguito:

Per questa ragione il nostro sforzo si è concentrato sugli aspetti elencati qui di seguito: Autore : Giulio Martino IT Security, Network and Voice Manager Technical Writer e Supporter di ISAServer.it www.isaserver.it www.ocsserver.it www.voipexperts.it - blogs.dotnethell.it/isacab giulio.martino@isaserver.it

Dettagli

IT-BOOK. Domini Hosting Web marketing E-mail e PEC

IT-BOOK. Domini Hosting Web marketing E-mail e PEC 5 giugno 09 IT-BOOK Configurazioni e cartatteristiche tecniche possono essere soggette a variazioni senza preavviso. Tutti i marchi citati sono registrati dai rispettivi proprietari. Non gettare per terra:

Dettagli

Descrizioni VHDL Behavioral

Descrizioni VHDL Behavioral 1 Descrizioni VHDL Behavioral In questo capitolo vedremo come la struttura di un sistema digitale è descritto in VHDL utilizzando descrizioni di tipo comportamentale. Outline: process wait statements,

Dettagli

Rational Asset Manager, versione 7.1

Rational Asset Manager, versione 7.1 Rational Asset Manager, versione 7.1 Versione 7.1 Guida all installazione Rational Asset Manager, versione 7.1 Versione 7.1 Guida all installazione Note Prima di utilizzare queste informazioni e il prodotto

Dettagli

Le funzionalità di un DBMS

Le funzionalità di un DBMS Le funzionalità di un DBMS Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: DBMS.pdf Sistemi Informativi L-A DBMS: principali funzionalità Le

Dettagli

> MULTI TASKING > MULTI PROCESS > MULTI CORE

> MULTI TASKING > MULTI PROCESS > MULTI CORE > MULTI TASKING > MULTI PROCESS > MULTI CORE WorkNC V21 multicore 64 bits : Benefici di WorkNC Aumento generale della produttività, grazie alle nuove tecnologie multi-core, 64 bit e Windows 7 Calcolo di

Dettagli

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) System Overview di Mattia Bargellini 1 CAPITOLO 1 1.1 Introduzione Il seguente progetto intende estendere

Dettagli

Informatica. Scopo della lezione

Informatica. Scopo della lezione 1 Informatica per laurea diarea non informatica LEZIONE 1 - Cos è l informatica 2 Scopo della lezione Introdurre le nozioni base della materia Definire le differenze tra hardware e software Individuare

Dettagli

Analisi di massima: L utente dovrà inserire un numero limite, e tramite vari calcoli verrà stampato a video la sequenza.

Analisi di massima: L utente dovrà inserire un numero limite, e tramite vari calcoli verrà stampato a video la sequenza. Relazione tecnica Fibonacci ANDENA GIANMARCO Traccia: Creare un algoritmo che permetta, dato un valore intero e positivo, di stabilire la sequenza utilizzando la regola di fibonacci dei numeri fino al

Dettagli

Appunti di Sistemi Operativi. Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo

Appunti di Sistemi Operativi. Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo Appunti di Sistemi Operativi Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo Indice 1 Cenni su alcuni algoritmi del Kernel di Unix 1 1.1 Elementi di Unix Internals.................................

Dettagli

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. "Generate debugging information"

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. Generate debugging information FASE DEBUGGING: Prima della compilazione, si devono inserire 1 nel progetto informazioni per il debug cioè si devono visualizzare le opzioni di progetto seguendo il percorso: controllando che la voce Genera

Dettagli

Web conferencing software. Massimiliano Greco - Ivan Cerato - Mario Salvetti

Web conferencing software. Massimiliano Greco - Ivan Cerato - Mario Salvetti 1 Web conferencing software Massimiliano Greco - Ivan Cerato - Mario Salvetti Arpa Piemonte 2 Che cosa è Big Blue Button? Free, open source, web conferencing software Semplice ed immediato ( Just push

Dettagli

Symbolic. Ambiti Operativi. Presente sul mercato da circa 10 anni Specializzata in Network Security Partner e distributore italiano di F-Secure Corp.

Symbolic. Ambiti Operativi. Presente sul mercato da circa 10 anni Specializzata in Network Security Partner e distributore italiano di F-Secure Corp. Symbolic Presente sul mercato da circa 10 anni Specializzata in Network Security Partner e distributore italiano di F-Secure Corp. La nostra mission è di rendere disponibili soluzioni avanzate per la sicurezza

Dettagli

Esperienze e soluzioni realizzate nell ambito del Progetto S.I.MO.NE

Esperienze e soluzioni realizzate nell ambito del Progetto S.I.MO.NE Programma Enti Locali Innovazione di Sistema Esperienze e soluzioni realizzate nell ambito del Progetto S.I.MO.NE 1 Premessa Il presente documento ha lo scopo di facilitare la disseminazione e il riuso

Dettagli

Architettura degli Elaboratori. Lez. 8 : Il Livello di Sistema Operativo

Architettura degli Elaboratori. Lez. 8 : Il Livello di Sistema Operativo Corso di Laurea Triennale in Informatica Università degli Studi di Bari Aldo Moro Anno Accademico 2012-2013 Lez. 8 : Il Livello di Sistema Operativo Sebastiano Pizzutilo Strutturazione del Sistema Operativo

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

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

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

Algoritmo euclideo, massimo comun divisore ed equazioni diofantee

Algoritmo euclideo, massimo comun divisore ed equazioni diofantee Algoritmo euclideo, massimo comun divisore ed equazioni diofantee Se a e b sono numeri interi, si dice che a divide b, in simboli: a b, se e solo se esiste c Z tale che b = ac. Si può subito notare che:

Dettagli

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO... Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...

Dettagli

IL SAMPLE AND HOLD UNIVERSITÀ DEGLI STUDI DI MILANO. Progetto di Fondamenti di Automatica. PROF.: M. Lazzaroni

IL SAMPLE AND HOLD UNIVERSITÀ DEGLI STUDI DI MILANO. Progetto di Fondamenti di Automatica. PROF.: M. Lazzaroni UNIVERSITÀ DEGLI STUDI DI MILANO FACOLTÀ DI SCIENZE MATEMATICHE, FISICHE E NATURALI Corso di Laurea in Informatica IL SAMPLE AND HOLD Progetto di Fondamenti di Automatica PROF.: M. Lazzaroni Anno Accademico

Dettagli

Inter-Process Communication

Inter-Process Communication Inter-Process Communication C. Baroglio a.a. 2002-2003 1 Introduzione In Unix i processi possono essere sincronizzati utilizzando strutture dati speciali, appartenti al pacchetto IPC (inter-process communication).

Dettagli

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1 DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica

Dettagli

How to Develop Accessible Linux Applications

How to Develop Accessible Linux Applications How to Develop Accessible Linux Applications Sharon Snider Copyright 2002 IBM Corporation v1.1, 2002-05-03 Diario delle Revisioni Revisione v1.1 2002-05-03 Revisionato da: sds Convertito in DocBook XML

Dettagli

Ambienti di sviluppo integrato

Ambienti di sviluppo integrato Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente

Dettagli

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate. Comandi filtro: sed Il nome del comando sed sta per Stream EDitor e la sua funzione è quella di permettere di editare il testo passato da un comando ad un altro in una pipeline. Ciò è molto utile perché

Dettagli

Architetture CISC e RISC

Architetture CISC e RISC FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Architetture CISC e RISC 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n.

Dettagli

Boot Camp Guida all installazione e alla configurazione

Boot Camp Guida all installazione e alla configurazione Boot Camp Guida all installazione e alla configurazione Indice 4 Introduzione 5 Cosa ti occorre 6 Panoramica dell installazione 6 Passo 1: verifica la presenza di aggiornamenti. 6 Passo 2: apri Assistente

Dettagli

Agilent OpenLAB Chromatography Data System (CDS)

Agilent OpenLAB Chromatography Data System (CDS) Agilent OpenLAB Chromatography Data System (CDS) EZChrom Edition e ChemStation Edition Requisiti hardware e software Agilent Technologies Informazioni legali Agilent Technologies, Inc. 2013 Nessuna parte

Dettagli

Dev C++ Prerequisiti. Note di utilizzo. Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma

Dev C++ Prerequisiti. Note di utilizzo. Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma Dev C++ Note di utilizzo 1 Prerequisiti Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma 2 1 Introduzione Lo scopo di queste note è quello di diffondere la conoscenza

Dettagli

Inidirizzi IP e Nomi di Dominio. Domain Name System. Spazio dei Nomi Piatto. Gestione dello Spazio dei Nomi

Inidirizzi IP e Nomi di Dominio. Domain Name System. Spazio dei Nomi Piatto. Gestione dello Spazio dei Nomi I semestre 03/04 Inidirizzi IP e Nomi di Dominio Domain Name System Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica

Dettagli

Il compilatore Dev-C++

Il compilatore Dev-C++ Il compilatore Dev-C++ A cura del dott. Marco Cesati 1 Il compilatore Dev-C++ Compilatore per Windows: http://www.bloodshed.net/devcpp.html Installazione Configurazione Utilizzazione 2 1 Requisiti di sistema

Dettagli

Esercizi per il corso di Algoritmi e Strutture Dati

Esercizi per il corso di Algoritmi e Strutture Dati 1 Esercizi per il corso di Algoritmi e Strutture Dati Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, né in C++, etc. ). Di tutti gli algoritmi

Dettagli

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione.

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione. Grafi ed Alberi Pag. /26 Grafi ed Alberi In questo capitolo richiameremo i principali concetti di due ADT che ricorreranno puntualmente nel corso della nostra trattazione: i grafi e gli alberi. Naturale

Dettagli

BPEL: Business Process Execution Language

BPEL: Business Process Execution Language Ingegneria dei processi aziendali BPEL: Business Process Execution Language Ghilardi Dario 753708 Manenti Andrea 755454 Docente: Prof. Ernesto Damiani BPEL - definizione Business Process Execution Language

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

I Valori del Manifesto Agile sono direttamente applicabili a Scrum:!

I Valori del Manifesto Agile sono direttamente applicabili a Scrum:! Scrum descrizione I Principi di Scrum I Valori dal Manifesto Agile Scrum è il framework Agile più noto. E la sorgente di molte delle idee che si trovano oggi nei Principi e nei Valori del Manifesto Agile,

Dettagli

DNS (Domain Name System) Gruppo Linux

DNS (Domain Name System) Gruppo Linux DNS (Domain Name System) Gruppo Linux Luca Sozio Matteo Giordano Vincenzo Sgaramella Enrico Palmerini DNS (Domain Name System) Ci sono due modi per identificare un host nella rete: - Attraverso un hostname

Dettagli

APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO. Francesco Marchione e Dario Richichi

APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO. Francesco Marchione e Dario Richichi APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO Francesco Marchione e Dario Richichi Istituto Nazionale di Geofisica e Vulcanologia Sezione di Palermo Indice Introduzione...

Dettagli

VC-dimension: Esempio

VC-dimension: Esempio VC-dimension: Esempio Quale è la VC-dimension di. y b = 0 f() = 1 f() = 1 iperpiano 20? VC-dimension: Esempio Quale è la VC-dimension di? banale. Vediamo cosa succede con 2 punti: 21 VC-dimension: Esempio

Dettagli

SISSI IN RETE. Quick Reference guide guida di riferimento rapido

SISSI IN RETE. Quick Reference guide guida di riferimento rapido SISSI IN RETE Quick Reference guide guida di riferimento rapido Indice generale Sissi in rete...3 Introduzione...3 Architettura Software...3 Installazione di SISSI in rete...3 Utilizzo di SISSI in Rete...4

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli

FileMaker Server 12. Guida introduttiva

FileMaker Server 12. Guida introduttiva FileMaker Server 12 Guida introduttiva 2007 2012 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker e Bento sono marchi di FileMaker,

Dettagli

Ricerca non informata in uno spazio di stati

Ricerca non informata in uno spazio di stati Università di Bergamo Facoltà di Ingegneria Intelligenza Artificiale Paolo Salvaneschi A5_2 V2.4 Ricerca non informata in uno spazio di stati Il contenuto del documento è liberamente utilizzabile dagli

Dettagli

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it INTRODUZIONE, LINGUAGGIO, HANDS ON Giuseppe Cirillo g.cirillo@unina.it Il linguaggio C 1972-Dennis Ritchie 1978-Definizione 1990-ANSI C 1966 Martin Richars (MIT) Semplificando CPL usato per sviluppare

Dettagli

Lezione 15 File System

Lezione 15 File System Lezione 15 File System Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche Università di Modena e Reggio Emilia http://weblab.ing.unimo.it/people/andreolini/didattica/sistemi-operativi

Dettagli

Flops. Ad esempio nel caso del prodotto classico tra matrici, vengono eseguite 2*N 3 operazioni, quindi ad esempio:

Flops. Ad esempio nel caso del prodotto classico tra matrici, vengono eseguite 2*N 3 operazioni, quindi ad esempio: Flops FLOPS e' un'abbreviazione di Floating Point Operations Per Second e indica il numero di operazioni in virgola mobile eseguite in un secondo dalla CPU. (Top500 e il BlueGene) Ad esempio nel caso del

Dettagli

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 1.1 Che cos è un algoritmo CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 Gli algoritmi sono metodi per la soluzione di problemi. Possiamo caratterizzare un problema mediante i dati di cui si dispone all inizio

Dettagli

Energy Studio Manager Manuale Utente USO DEL SOFTWARE

Energy Studio Manager Manuale Utente USO DEL SOFTWARE Energy Studio Manager Manuale Utente USO DEL SOFTWARE 1 ANALYSIS.EXE IL PROGRAMMA: Una volta aperto il programma e visualizzato uno strumento il programma apparirà come nell esempio seguente: Il programma

Dettagli

Neomobile incentra l infrastruttura IT su Microsoft ALM, arrivando a 40 nuovi rilasci a settimana

Neomobile incentra l infrastruttura IT su Microsoft ALM, arrivando a 40 nuovi rilasci a settimana Storie di successo Microsoft per le Imprese Scenario: Software e Development Settore: Servizi In collaborazione con Neomobile incentra l infrastruttura IT su Microsoft ALM, arrivando a 40 nuovi rilasci

Dettagli

Inizializzazione degli Host. BOOTP e DHCP

Inizializzazione degli Host. BOOTP e DHCP BOOTP e DHCP a.a. 2002/03 Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Inizializzazione degli Host Un

Dettagli

Università degli Studi di Parma. Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica

Università degli Studi di Parma. Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica A.A. 2007-08 CORSO DI INGEGNERIA DEL SOFTWARE Prof. Giulio Destri http://www.areasp.com (C) 2007 AreaSP for

Dettagli

Architettura dei Calcolatori

Architettura dei Calcolatori Architettura dei Calcolatori Sistema di memoria parte prima Ing. dell Automazione A.A. 2011/12 Gabriele Cecchetti Sistema di memoria parte prima Sommario: Banco di registri Generalità sulla memoria Tecnologie

Dettagli

Simplex Gestione Hotel

Simplex Gestione Hotel Simplex Gestione Hotel Revisione documento 01-2012 Questo documento contiene le istruzioni per l'utilizzo del software Simplex Gestione Hotel. E' consentita la riproduzione e la distribuzione da parte

Dettagli

Ricerca Operativa Esercizi sul metodo del simplesso. Luigi De Giovanni, Laura Brentegani

Ricerca Operativa Esercizi sul metodo del simplesso. Luigi De Giovanni, Laura Brentegani Ricerca Operativa Esercizi sul metodo del simplesso Luigi De Giovanni, Laura Brentegani 1 1) Risolvere il seguente problema di programmazione lineare. ma + + 3 s.t. 2 + + 2 + 2 + 3 5 2 + 2 + 6,, 0 Soluzione.

Dettagli

CARATTERISTICHE DELLE CRYPTO BOX

CARATTERISTICHE DELLE CRYPTO BOX Secure Stream PANORAMICA Il sistema Secure Stream è costituito da due appliance (Crypto BOX) in grado di stabilire tra loro un collegamento sicuro. Le Crypto BOX sono dei veri e propri router in grado

Dettagli

Manuale di KDE su Geert Jansen Traduzione del documento: Dario Panico Traduzione del documento: Samuele Kaplun Traduzione del documento: Daniele Micci

Manuale di KDE su Geert Jansen Traduzione del documento: Dario Panico Traduzione del documento: Samuele Kaplun Traduzione del documento: Daniele Micci Geert Jansen Traduzione del documento: Dario Panico Traduzione del documento: Samuele Kaplun Traduzione del documento: Daniele Micci 2 Indice 1 Introduzione 5 2 Usare KDE su 6 3 Funzionamento interno 8

Dettagli

ALGEBRA: LEZIONI DAL 13 OTTOBRE AL 3 NOVEMBRE

ALGEBRA: LEZIONI DAL 13 OTTOBRE AL 3 NOVEMBRE ALGEBRA: LEZIONI DAL 13 OTTOBRE AL 3 NOVEMBRE 1 DIPENDENZA E INDIPENDENZA LINEARE Se ho alcuni vettori v 1, v 2,, v n in uno spazio vettoriale V, il sottospazio 1 W = v 1,, v n di V da loro generato è

Dettagli

Tipologie di pianificatori. Pianificazione. Partial Order Planning. E compiti diversi. Pianificazione gerarchica. Approcci integrati

Tipologie di pianificatori. Pianificazione. Partial Order Planning. E compiti diversi. Pianificazione gerarchica. Approcci integrati Tipologie di pianificatori Pianificazione Intelligenza Artificiale e Agenti II modulo Pianificazione a ordinamento parziale (POP) (HTN) pianificazione logica (SatPlan) Pianificazione come ricerca su grafi

Dettagli

SIMATIC. SCL per S7-300/400 Programmazione di blocchi. Prefazione, Contenuto. Parte 1: Sviluppo di programmi. Parte 2: Uso e test

SIMATIC. SCL per S7-300/400 Programmazione di blocchi. Prefazione, Contenuto. Parte 1: Sviluppo di programmi. Parte 2: Uso e test Prefazione, Contenuto Parte 1: Sviluppo di programmi Parte 2: Uso e test SIMATIC Parte 3: Descrizione del linguaggio Programmazione di blocchi Appendici Glossario, Indice analitico Manuale Numero di ordinazione

Dettagli

Progetti reali con ARDUINO

Progetti reali con ARDUINO Progetti reali con ARDUINO Introduzione alla scheda Arduino (parte 2ª) ver. Classe 3BN (elettronica) marzo 22 Giorgio Carpignano I.I.S. Primo LEVI - TORINO Il menù per oggi Lettura dei pulsanti Comunicazione

Dettagli

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio IDE = Integrated Development Environment Gerardo Pelosi 01 Ottobre 2014 Pagina 1 di 8 Dev-C++ - Installazione Potete

Dettagli

Dall italiano alla logica proposizionale

Dall italiano alla logica proposizionale Rappresentare l italiano in LP Dall italiano alla logica proposizionale Sandro Zucchi 2009-10 In questa lezione, vediamo come fare uso del linguaggio LP per rappresentare frasi dell italiano. Questo ci

Dettagli

Dal punto di vista organizzativo sono possibili due soluzioni per il sistema di rete.

Dal punto di vista organizzativo sono possibili due soluzioni per il sistema di rete. Premessa. La traccia di questo anno integra richieste che possono essere ricondotte a due tipi di prove, informatica sistemi, senza lasciare spazio ad opzioni facoltative. Alcuni quesiti vanno oltre le

Dettagli

Informatica Applicata

Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi Programma del corso Obiettivi: Il corso di illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli

Dettagli

Introduzione alle pipeline e all'architettura RISC

Introduzione alle pipeline e all'architettura RISC Introduzione alle pipeline e all'architettura RISC Introduzione Pipeline Processori RISC Salti Appendice A: Storia Bibliografia Versione con i frame Versione in pdf Architettura del processore Una possibile

Dettagli

Integrated Development Environment (IDE) DevC++ 4.9.9.2

Integrated Development Environment (IDE) DevC++ 4.9.9.2 Integrated Development Environment (IDE) DevC++ 4.9.9.2 Manuale utente Data ultima revisione: 22/10/2008 Fondamenti di informatica Università Facoltà Corso di laurea Politecnico di Bari 1 a Facoltà di

Dettagli

Presentazioni multimediali relative al senso del tatto DIMENSIONI LIVELLO INIZIALE LIVELLO INTERMEDIO LIVELLO AVANZATO

Presentazioni multimediali relative al senso del tatto DIMENSIONI LIVELLO INIZIALE LIVELLO INTERMEDIO LIVELLO AVANZATO PERCORSO DI INSEGNAMENTO/APPRENDIMENTO TIPO DI UdP: SEMPLICE (monodisciplinare) ARTICOLATO (pluridisciplinare) Progetto didattico N. 1 Titolo : Let s investigate the world with our touch! Durata: Annuale

Dettagli

Guida alle offerte di finanziamento per le medie imprese

Guida alle offerte di finanziamento per le medie imprese IBM Global Financing Guida alle offerte di finanziamento per le medie imprese Realizzata da IBM Global Financing ibm.com/financing/it Guida alle offerte di finanziamento per le medie imprese La gestione

Dettagli

Flusso a costo minimo e simplesso su reti

Flusso a costo minimo e simplesso su reti Flusso a costo minimo e simplesso su reti La particolare struttura di alcuni problemi di PL può essere talvolta utilizzata per la progettazione di tecniche risolutive molto più efficienti dell algoritmo

Dettagli

1. Intorni di un punto. Punti di accumulazione.

1. Intorni di un punto. Punti di accumulazione. 1. Intorni di un punto. Punti di accumulazione. 1.1. Intorni circolari. Assumiamo come distanza di due numeri reali x e y il numero non negativo x y (che, come sappiamo, esprime la distanza tra i punti

Dettagli

AA 2006-07 LA RICORSIONE

AA 2006-07 LA RICORSIONE PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

Dimensione di uno Spazio vettoriale

Dimensione di uno Spazio vettoriale Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione

Dettagli

Guida al backup. 1. Introduzione al backup. Backup dei dati una parte necessaria nella gestione dei rischi. Backup su nastro media ideale

Guida al backup. 1. Introduzione al backup. Backup dei dati una parte necessaria nella gestione dei rischi. Backup su nastro media ideale 1. Introduzione al backup Guida al backup Backup dei dati una parte necessaria nella gestione dei rischi Con l aumentare dei rischi associati a virus, attacchi informatici e rotture hardware, implementare

Dettagli

Client di Posta Elettronica PECMailer

Client di Posta Elettronica PECMailer Client di Posta Elettronica PECMailer PECMailer è un semplice ma completo client di posta elettronica, ovvero un programma che consente di gestire la composizione, la trasmissione, la ricezione e l'organizzazione

Dettagli

Linguaggio del calcolatore. Algebra di Boole AND, OR, NOT. Notazione. And e or. Circuiti e reti combinatorie. Appendice A + dispense

Linguaggio del calcolatore. Algebra di Boole AND, OR, NOT. Notazione. And e or. Circuiti e reti combinatorie. Appendice A + dispense Linguaggio del calcolatore Circuiti e reti combinatorie ppendice + dispense Solo assenza o presenza di tensione: o Tante componenti interconnesse che si basano su e nche per esprimere concetti complessi

Dettagli

Trieste, 25 ottobre 2006

Trieste, 25 ottobre 2006 Trieste, 25 ottobre 2006 PRESENTAZIONE DEL BILANCIO DI SOSTENIBILITÀ 2005 DEL GRUPPO GENERALI AGLI STUDENTI DELL UNIVERSITA DI TRIESTE INTERVENTO DELL AMMINISTRATORE DELEGATO GIOVANNI PERISSINOTTO Vorrei

Dettagli

Parte 2. Determinante e matrice inversa

Parte 2. Determinante e matrice inversa Parte. Determinante e matrice inversa A. Savo Appunti del Corso di Geometria 013-14 Indice delle sezioni 1 Determinante di una matrice, 1 Teorema di Cramer (caso particolare), 3 3 Determinante di una matrice

Dettagli

Sistemi avanzati di gestione dei Sistemi Informativi

Sistemi avanzati di gestione dei Sistemi Informativi Esperti nella gestione dei sistemi informativi e tecnologie informatiche Sistemi avanzati di gestione dei Sistemi Informativi Docente: Email: Sito: Eduard Roccatello eduard@roccatello.it http://www.roccatello.it/teaching/gsi/

Dettagli

ESAME DI STATO DI LICEO SCIENTIFICO 2006 Indirizzo Scientifico Tecnologico Progetto Brocca

ESAME DI STATO DI LICEO SCIENTIFICO 2006 Indirizzo Scientifico Tecnologico Progetto Brocca ESAME DI STATO DI LICEO SCIENTIFICO 2006 Indirizzo Scientifico Tecnologico Progetto Brocca Trascrizione del testo e redazione delle soluzioni di Paolo Cavallo. La prova Il candidato svolga una relazione

Dettagli