Processi e Scheduling in Linux 2.6. Daniele Lacamera

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Processi e Scheduling in Linux 2.6. Daniele Lacamera"

Transcript

1 Processi e Scheduling in Linux 2.6 Daniele Lacamera 1 Aprile 2005

2 2

3 Indice 0. Introduzione...pag Implementazione dei Processi...pag Progettazione dello Scheduler...pag Implementazione dello Scheduler...pag. 18 Conclusioni...pag. 25 Bibliografia...pag. 25 3

4 0. Introduzione 0.1 Multiprogrammazione Tutti i moderni sistemi operativi sono in grado di fare piu` cose allo stesso tempo. Mentre la CPU esegue un'istanza di un programma, un computer e` in grado di leggere e scrivere dai dispositivi di I/O. Inoltre, in un sistema multiprogrammato, la CPU viene commutata da un programma all'altro, eseguendo ciascuno di essi per un limitato periodo di tempo. Benche` in effetti la CPU sia in grado di eseguire un solo programma per volta, nel corso di un solo secondo essa puo` lavorare su piu` programmi, effettuando una rapida commutazione che fornisce all'utente una illusione di parallelismo di esecuzione degli stessi. A volte per indicare questa rapida rapida commutazione, si utilizza il termine di pseudoparallelismo, in diretto contrasto con il reale parallelismo offerto dai sistemi multiprocessore. Come in ogni ambito in cui siano previste attivita` parallele con un numero limitato di risorse condivise, la gestione del modello del parallelismo di esecuzione in un sistema operativo risulta difficoltosa. I progettisti dei sistemi operativi hanno percio` sviluppato nel corso degli anni un modello a processi sequenziali. 0.2 Modello a processi Nel modello a processi tutto il software eseguibile sul computer viene organizzato in un certo numero di processi sequenziali, o piu` semplicemente processi. Un processo rappresenta l'entita` attiva di un programma in esecuzione, comprensivo del valore corrente del program counter, dei valori dei registri interni alla CPU, di una serie di dati globalmente accessibili nell'ambito del programma e dell'insieme delle variabili locali a funzioni e procedure, che risiedono nello stack e nell'heap quando il processo e` in esecuzione. 0.3 Scheduling Concettualmente, ogni processo possiede una sua CPU virtuale. In realta` la CPU reale viene rapidamente commutata tra i vari processi in esecuzione secondo un preciso schema di parallelismo. Il compito dello scheduler in un sistema operativo multiprogrammato e` 4

5 quello di fornire questo schema, agendo sui processi in esecuzione sulla macchina, decidendo quando, su quale processore e per quanto tempo ognuno di essi debba essere eseguito. Normalmente, lo scheduler stesso e` un processo costantemente eseguibile, che rimane sospeso per la maggior parte del tempo in attesa di un interrupt temporale, altrimenti e` invocato da un altro processo che desidera cedere il controllo della CPU. A ogni processo viene assegnato di volta in volta un quanto di tempo di esecuzione su una CPU. Quando questo termina, il controllo passa allo scheduler, che provvede a selezionare il processo successivo. 5

6 1. Implementazione dei Processi 1.1 Unita` di esecuzione I thread sono degli oggetti attivi all'interno di un processo. Un thread e` in effetti il contenitore del program counter, dello stack del processo e dei valori dei registri del processore all'interno del processo stesso. Nei sistemi UNIX classici, ogni processo consiste in un unico thread. Nei moderni sistemi tuttavia, i programmi multithreaded sono di uso comune. Prevedono l'esecuzione di piu` task che condividano un'area di memoria, e nel caso di sistemi multiprocessore permettono di ottenere un vero e proprio parallelismo. Linux ha una implementazione molto originale dei threads. Il kernel non possiede la concezione di thread, tratta thread e processi allo stesso modo, ossia accedendo alle risorse che durante la creazione vengono assegnate e sono indicate nella task_struct. Thread appartenenti allo stesso processo possono tuttavia condividere le risorse semplicemente poiche` possiedono lo stesso riferimento ad uno spazio di indirizzamento condiviso. Questo approccio contrasta in maniera notevole con sistemi operativi quali Microsoft Windows e Sun Solaris, che hanno un supporto esplicito per i threads. In Linux i threads sono semplicemente un modo per condividere risorse tra due normali task in esecuzione. Poiche` le risorse da condividere vengono consegnate al signolo task utilizzando COW, la velocita` nella creazione e gestione di nuove unita` di esecuzione risulta gia` la massima possibile, dunque non vi e` bisogno di implementare tecniche diverse per la creazione dei thread. Se si richiede la condivisione di una o piu` risorse, viene incrementato per ognuna di esse un contatore di utilizzi, che memorizza il numero di processi che accedono alla risorsa. Il kernel di Linux si occupa dello scheduling dei singoli thread come unita` di esecuzione. I processi interagiscono con due entita` virtuali: un processore virtuale e una memoria virtuale. Il processore virtuale crea al processo l'illusione del monopolio della macchina reale. La memoria virtuale fornisce la possibilita` al singolo processo di allocare e gestire la propria memoria. Thread appartenenti allo stesso processo condividono tra loro la memoria virtuale, ma ciascuno di essi possiede un proprio processore virtuale. Il kernel di Linux si riferisce spesso ai singoli processi con il nome di task, che quindi 6

7 assumeremo come rappresentazione dell'unita` attiva di esecuzione in kernel space, per denominare indiscriminatamente thread e processi. 1.2 Strutture dati per la gestione dei processi Il kernel memorizza i task in una lista double-linked circolare, chiamata task_list. Ciascun elemento di questa lista e` un descrittore di processo di tipo task_struct. Quest'ultima struttura e` molto grande, circa 1.7KB sulle architetture a 32 bit. In realta` questa dimensione e` ridotta se si considera che all'interno di essa sono contenute tutte le informazioni relative allo specifico processo. La lista circolare e linkata in entrambe le direzioni e` un oggetto molto usato nel kernel. Includendo una struct di tipo list_head all'interno della struct che si vuole utilizzare come elemento (in questo caso la task_struct), si ottiene una coppia di puntatori a list_head. Con apposite macro e` possibile creare una lista associandovi un nome, aggiungere e rimuovere elementi dalla lista e, specificando il tipo di struttura, ottenere uno specifico elemento della lista stessa. In figura viene mostrato lo schema delle relazioni tra i puntatori delle list_head all'interno degli elementi: 7

8 La maggior parte dei sistemi operativi multiprogrammati gestisce un albero gerarchico di processi nel quale sono i processi stessi a generarne dei nuovi. Nella gran parte dei sistemi unix-like, un processo speciale denominato init viene eseguito subito dopo il caricamento in memoria del sistema operativo, e si occupa della generazione dei processi relativi ai programmi da eseguire all'avvio. Questi a loro volta possono avviare nuovi processi. Ogni processo e` dunque figlio di un altro processo in esecuzione sulla macchina, e puo` a sua volta generare zero, uno o piu` processi figli, ma ognuno di essi avra` uno e un unico genitore. Di conseguenza tutti i processi in esecuzione su una macchina sono nodi di un singolo albero, la cui radice e` il processo init. L'implementazione di una lista di tutti i processi istanziati all'interno della macchina facilita l'accesso ad essi, ma non e` sufficiente a fornire un rapido accesso ai descrittori seguendo i criteri gerarchici, percio` ciascuno di essi e` vincolato tramite un apposito puntatore parent al processo che li ha generati, e a una lista children, che contiene puntatori ai descrittori degli evenuali figli. Quando un processo viene creato, una nuova struttura di tipo thread_info viene allocata in fondo allo stack del kernel. La struttura thread_info risulta cosi` definita per l'architettura x86 : 8

9 struct thread_info { struct task_struct *task; /* main task structure */ struct exec_domain *exec_domain; /* execution domain */ unsigned long flags; /* low level flags */ unsigned long status; /* thread synchronous flags */ u32 cpu; /* current CPU */ s32 preempt_count; /* 0 => preemptable, <0 => BUG */ mm_segment_t addr_limit; /* thread address space: struct restart_block 0 0xBFFFFFFF for user thead 0 0xFFFFFFFF for kernel thread */ restart_block; }; unsigned long previous_esp; /* ESP of the previous stack in case of nested (IRQ) stacks */ u8 supervisor_stack[0]; Si noti come il primo membro di questa struttura sia un puntatore all'attuale task_struct relativa al thread. Il sistema identifica i singoli processi attraverso un valore di identificazione del processo (PID), tipicamente intero, contenuto nella variabile pid_t. Per fornire un certo livello di compatibilita` con gli altri UNIX e le vecchie versioni di Linux stesso, il valore massimo della variabile pid_t e` fissato a Tuttavia e` possibile definire un diverso valore massimo utilizzando la sysctl kernel.pid_max. Il kernel dovra` essere in grado di accedere alla task_struct relativa al processo corrente. Tuttavia questa operazione viene effettuata in modo diverso in base all'architettura della macchina. Il campo state del descrittore di processo contiene un valore associato a uno dei seguenti cinque stati: TASK_RUNNING Corrisponde allo stato Runnable e indica che il processo e` 9

10 attualmente in esecuzione, o sta attendendo di essere eseguito nell'apposita coda (runqueue); TASK_INTERRUPTIBLE Il processo e` sospeso, in attesa del verificarsi di determinate condizioni. Quando queste condizioni si verificano o viene inviato un segnale, il kernel modifica lo stato del processo in TASK_RUNNING. TASK_UNINTERRUPTIBLE Questo stato e` identico al precedente eccetto che il processo non ritornera` attivo quando riceve un segnale. Solitamente un processo si trova in questo stato quando e` necessario restare in attesa di un evento senza interruzioni; TASK_ZOMBIE Il task e` terminato, ma il padre del processo non ha ancora effettuato una chiamata alla syscall wait4(). Il descrittore del processo viene conservato nel caso in cui il padre desideri accedervi. Nel momento in cui viene chiamata wait4() il descrittore del processo viene deallocato; TASK_STOPPED L'esecuzione del processo e` stata sospesa. Il processo non risulta in esecuzione ne` e` selezionabile per e ssere eseguito. Cio` accade quando il processo riceve un segnale di tipio SIGSTOP, SIGTSTP, SIGTIN e SIGTTOU o quando riceve qualsiasi segnale in fase di debugging del programma. 1.3 Creazione dei processi Tradizionalmente, effettuando la chiamata alla syscall fork() ci si aspetta che tutte le risorse del processo che la effettua siano copiate in un nuovo spazio di indirizzamento e che la copia sia consegnata al processo appena creato. Questo approccio risulta molto inefficiente, specie nel caso in cui le risorse allocate dal processo chiamante siano dell'ordine di decine di megabytes. Poiche` la filosofia stessa dei sistemi unix incoraggia la scelta di rapidita` di esecuzione dei processi, i programmatori di Linux hanno deciso di implementare la primitiva fork() utilizzando pagine copy-on-write (COW). Questo meccanismo prevede che i due processi condividano la stessa area di memoria. I dati pero` sono marcati in modo che se il processo appena generato tenta una scrittura su di 10

11 essi ne ottiene una copia unica su cui effettuare l'operazione. Di conseguenza, la duplicazione delle risorse avviene soltanto quando quando si tenta la scrittura; prima di allora essi sono condivisi in sola lettura. Una chiamata a fork() produce una particolare chiamata alla syscall clone(), analoga a quella utilizzata un userspace per la creazione dei thread. Tra i parametri della syscall clone() possono essere specificate le risorse che il task chiamante vuole condividere attraverso specifiche flags, definite in include/linux/sched.h : /* * cloning flags: */ #define CSIGNAL 0x000000ff /* signal mask to be sent at exit */ #define CLONE_VM 0x /* set if VM shared between processes */ #define CLONE_FS 0x /* set if fs info shared between processes */ #define CLONE_FILES 0x /* set if open files shared between processes */ #define CLONE_SIGHAND 0x /* set if signal handlers and blocked signals shared */ [..] L'elenco completo delle flags definite per la syscall clone() si trova nel file include/linux/sched.h. Una normale fork() puo` essere implementata con una chiamata a clone()effettuata con i parametri: clone(sigchld,0); 1.4 Terminazione dei processi La terminazione di un processo puo` avvenire esplicitamente attraverso la chiamata alla syscall exit() o implicitamente se il processo non riesce a ignorare un segnale o gestire una eccezzione. In ognuno di questi casi, il lavoro di chiusura del processo e` affidato alla procedura do_exit(), definita in kernel/exit.c. La procedura do_exit() effettua una serie di operazioni in sequenza: exit_mm(tsk); 11

12 Rilascia il controllo della mm_struct associata al processo, e se nessun altro processo stava condividendo quell'area di memoria, essa viene deallocata. exit_sem(tsk); Se il processo che sta terminando era in attesa a un semaforo, viene rimosso dalla coda associata. exit_files(tsk); exit_fs(tsk); exit_namespace(tsk); exit_thread(); Queste routine decrementano il valore del contatore di utilizzatori associate alle rispettive risorse. Quando un contatore raggiunge zero, la risorsa associata viene rimossa. tsk >exit_code = code; Memorizza l'exit code del task nell'apposito campo della task_struct. exit_notify(tsk); Chiamando exit_notify() invia appositi segnali al task padre e a eventuali task figli, cosi` come ai task dei thread dello stesso gruppo, dopodiche` porta il task nello stato TASK_ZOMBIE. schedule(); Il controllo viene restituito allo scheduler, poiche` nessun task che si trovi nello stato TASK_ZOMBIE puo` essere eseguito. Questa e` l'ultima istruzione in assoluto che il task esegue. Il processo in questione e` a questo punto terminato, ma la sua task_struct rimane allocata nello stack del kernel, poiche` le tracce della sua esistenza sono utili per il processo padre. Il processo terminato rimane nello stato TASK_ZOMBIE finche` non viene deallocato il suo descrittore. Questa operazione e` la diretta conseguenza di una chiamata alla syscall wait() da parte del processo padre, che implica una chiamata alla procedura release_task(), anch'essa definita in kernel/exit.c. Questa procedura si occupa inizialmente di decrementare il contatore dei processi aperti 12

13 dall'utente proprietario del processo attraverso la chiamata a free_uid(). Linux mantiene una cache contenente informazioni su processi e files aperti per ogni utente, e quando il contatore dei processi raggiunge 0, la cache viene deallocata. In seguito la release_task() effettua la chiamata a unash_process(), routine in cui il processo viene eliminato dalla pidhash e dalla task_list. A questo punto, tramite la chiamata a put_task_struct(), vengono deallocate tutte le zone di memoria in cui erano stati precedentemente allocati il descrittore task_struct e la struttura thread_info. 13

14 2. Progettazione dello Scheduler 2.1 Task CPU-bound e I/O-bound I task in esecuzione tendono ad essere classificati in base al loro utilizzo delle risorse. Vi sono processi che impiegano molto tempo a effettuare calcoli su un processore, e vengono detti CPU-bound, mentre altri restano per lunghi periodi in attesa di input da periferiche esterne, percio` sono denominati I/O-bound. Uno dei primi problemi nell'implementazione di uno scheduler e` effettuare questo tipo di classificazione in modo da fornire un livello di priorita` piu` elevato ai processi I/O-bound, in maniera da migliorare la risposta del sistema alle richieste dirette di interazione dell'utente con l'applicazione, e allo stesso tempo per ottimizzare i tempi morti dei processi che rimangono in attesa di eventi esterni prima di rientrare in esecuzione. 2.2 Cambio di contesto Il cambio di contesto e` una operazione che consiste nel passare l'esecuzione da un processo ad un altro. In effetti questo avviene due volte ogniqualvolta un processo finisce il suo quanto temporale, poiche` il controllo passa prima dal processo iniziale allo scheduler, il quale eseguira` il codice necessario a scegliere il processo successivo e infine consegnera` il controllo del processore a quest'ultimo. Dal punto di vista pratico, un cambio di contesto implica inoltre il salvataggio dello stato dei registri del processore, il caricamento di un nuovo stato, la cancellazione della cache, e il cambio della mappa della memoria virtuale. I cambi di contesto sono dunque delle operazioni molto dispendiose, da limitare il piu` possibile per mantenere alte le performance della macchina. Queste operazioni, essendo molto legate al tipo di architettura sul quale vengono eseguite, sono costituite da routine interamente scritte in assembler, differenziate per tipo di processore. Ad esempio su PowerPC il puntatore all'attuale task_struct si trova nel registro r2 del processore. Su x86 invece, l'attuale task_struct viene ottenuta mascherando i 13 bit meno significativi dello stack pointer del processore attraverso una macro in assembler. I programmatiori del cambio di contesto del PowerPC sono di fatto stati avvantaggiati dall'avere a disposizione molti registri di processore, al contrario del i386, dove e` stato necessario ricorrere alla suddetta macro, che penalizza le prestazioni generali dello scheduler, se si considera quanto spesso questo codice viene eseguito. 14

15 2.3 Obiettivi dello scheduler di Linux La progettazione dello scheduler di un sistema operativo e` fortemente legata al tipo di mercato a cui punta. La discriminazione della tipologia d'uso richiesta per il sistema operativo da implementare porta alla valutazione della scala di importanza tra gli obiettivi dello scheduler, e in diretta conseguenza alle scelte che determinano l'algoritmo di scheduling da utilizzare. Linux e` stato inizialmente creato da uno studente per essere utilizzato sul suo computer, ma in breve e` divienuto un sistema operativo server. Cio` ha portato in breve alla complessa e indefinita interfaccia grafica costruita su Linux, se confrontata alla pari con altri sistemi WYSIWYG (what you see is what you get) come i sistemi operativi proprietari di largo uso di marca Apple o Microsoft. Tuttavia cio` non ha frenato l'attuale tendenza di considerare i sistemi GNU/Linux una valida alternativa per l'utenza Desktop, oltre che utilizzi specifici da server. Lo scheduler di Linux 2.6 e` stato riscritto da Ingo Molnar con l'esplicita volonta` di soddisfare entrambi i mercati, riuscendo a fornire migliori prestazioni all'utenza desktop delle distribuzioni di GNU basate su Linux 2.6. L'obiettivo di soddisfare piu` tipologie di utenza contemporaneamente ha caricato l'implementazione dello scheduler di Linux 2.6 di pesanti aspettative, rendendo questa parte di Linux un interessante caso per studiare come soddisfare due mercati cosi` diversi con successo. Un obiettivo importante per uno scheduler e` la sua efficienza. Il sistema operativo deve tentare di utilizzare il piu` possibile i processori per produrre del vero lavoro mentre le applicazioni sono in attesa di altri eventi. Ad esempio, poiche` come abbiamo visto i cambi di contesto sono operazioni dispendiose, fornire quanti di tempo piu` lunghi aumenta l'efficienza poiche` il codice per il cambio del contesto viene eseguito piu` raramente. Anche aumentare la rapidita` di esecuzione del cambio di contesto, ottimizzandone l'implementazione, puo` apportare notevoli miglioramenti all'efficienza dello scheduler. Un altro obiettivo importante da considerare e` l'interattivita`, specie nell'ottica di ottimizzare Linux per l'utenza Desktop, poiche` un utente si aspetta una pronta risposta dai processi I/O-bound, specialmente quando le periferiche in questione sono la tastiera e il mouse. L'interattivita` tuttavia richiederebbe cambi di contesto frequenti, a discapito dell'efficienza, e percio` e` giusto trovare il giusto equilibrio tra efficienza e interattivita`. E` inoltre fondamentale che uno scheduler ben costruito tenga conto di un certo grado di equita` tra processi diversi, garantendo che nessuno di essi rimanga in attesa per un 15

16 tempo troppo lungo o che si verifichi starvation, perche` la sua priorita` e` molto piu` bassa di quella degli altri task eseguibili con cui compete. Per questo scopo, lo scheduler di Linux 2.6 prevede che i task che si avvicinano a una soglia di starvation, scelta a priori dagli sviluppatori dello scheduler, ricevano un significativo incremento di grado di priorita` o eventualmente una prelazione immediata. Il parametro dell'equita` non deve portare a pensare che task simili che hanno la stessa priorita` debbano ricevere un uguale trattamento da parte dello scheduler, ma semplicemente che sia garantito che non si verifichino starvation e che non ci sia la possibilita` per una applicazione di manomettere il sistema di scelta dei processi nello scheduler per guadagnare piu` risorse di quelle che l'algoritmo gli assegnerebbe. 2.4 Tecnologie di parallelismo reale Con Linux e` possibile eseguire parallelamente piu` task in contemporanea, sfruttando i sistemi a multiprocessore SMP (Symmetric Multi Processing) o il supporto per Hyperthreading presente sui processori di ultima generazione con SMT (Symmetric Multi threading) o ancora utilizzare sistemi di calcolo distribuito sfruttando NUMA (Non-Uniform Memory Access). Il supporto per SMP e` presente in Linux gia` dalla versione 2.4, e si occupa di far girare parallelamente piu` task eseguibili contemporaneamente su una macchina che ha piu` di un processore, occupandosi tra l'altro dell'accesso esclusivo ai dispositivi e che un processo abbia a disposizione al massimo un processore per una unita` di tempo. Poiche` piu` processori sulla stessa macchina utilizzano alle stessa memoria e alle stesse risorse di sistema, il compito primario di SMP e` di utilizzare al meglio possibile il tempo di tutti i processori. Per questo motivo lo scheduler considera alcuni parametri legati alle performances quando ha a che fare con sistemi multiprocessore. Ad esempio tende ad assegnare un task sempre allo stesso processore in quanti di tempo successivi, in modo che si possa usufruire al meglio della rapidita` di accesso alla cache di primo livello delle CPU. Con la tecnologia Hyperthreading, alcuni processori realizzano il parallelismo in maniera virtuale, condividendo tra i singoli chip SMT alcune risorse come la cache e alcuni registri. Per questo motivo i processori virtuali non possono essere trattati con gli stessi schemi 16

17 con cui si realizza la SMP. NUMA permette di far eseguire l'immagine di un singolo sistema tra piu` nodi. Ogni nodo e` definito da una scheda madre, sulla quale possono essere presenti piu` processori, e puo` agire come parte del sistema. Cio` e` possibile solo se tra i nodi vi e` una interconnessione ad alta velocita` che lo consente, connettendo gli host a livello di scheda madre piuttosto che attraverso una semplice rete IP. E` possibile per lo scheduler in questo caso, allocare la memoria necessaria all'esecuzione di un processo anche su un nodo diverso da quello in cui e` presente il processore che lo sta eseguendo, ma per i thread che richiedono efficienza maggiore e` possibile specificare anche che la memoria sia allocata sullo steso nodo. NUMA rende possibile ampliare il concetto di multiprogrammazione parallela estendendo il limite dei 2-8 processori di SMP fino a 512 processori un un sistema distribuito che utilizza questa tecnologia. Lo scheduler di Linux 2.6 puo` supportare anche un meccanismo real-time leggero, programmando l'esecuzione di processi che abbiano richieste molto precise sui tempi di esecuzione. Sebbene sia possibile che le deadline vengano rispettate, non vi e` garanzia che cio` avvenga. I processi real-time sono trattati in maniera speciale da parte dello scheduler, utilizzando una coda FIFO per discriminare la scelta dei processi in esecuzione. 17

18 3. Implementazione dello Scheduler 3.1 Punto di partenza: lo scheduler di Linux 2.4 Durante il periodo di sviluppo del kernel 2.5, la riscrittura dell'algoritmo di scheduling e` stata uno dei piu` importanti cambiamenti nel passaggio a Linux 2.6. Sebbene lo scheduler esistente in Linux 2.4 fosse gia` largamente usato e affidabile, aveva una serie di caratteristiche che ne limitavano la scalabilita`. Diamo una breve descrizione dell'algoritmo di scheduling di Linux 2.4 per poter meglio comprendere i motivi che hanno portato alla riscrittura dello scheduler. Il tempo e` diviso in epoche, ossia degli intervalli in cui tutti i processi, a turno, eseguono nel loro intervallo temporale (timeslice). All'inizio di ogni epoca tuttavia, l'algoritmo si occupa di calcolare la lunghezza delle timeslice di ciascun processo, iterando dunque tra i vari processi all'interno della task_list. Ogni task ha una timeslice di base che gli viene assegnata durante la creazione a partire dal valore nice del processo a cui appartiene. Un valore di nice pari a 0 fornisce al task una timeslice di base di 200ms. La durata di questa timeslice viene poi ritoccata in base a quanto il processo sia I/O-bound. Ogni task ha un contatore il cui valore e` impostato alla timeslice base all'inizio della prima epoca di vita del processo, e viene decrementato in base a quanto tempo il processo rimane in esecuzione. Se alla fine dell'epoca il processo non ha utilizzato tutta la sua timeslice significa che si e` sospeso per attendere un segnale da un'altra risorsa, per cui la sua timeslice nella prossima epoca sara` la timeslice base incrementata della meta` del tempo rimanente nel contatore. In questo modo si consegna ai processi piu` I/O-bound una timeslice piu` lunga, ma si garantisce che qualora uno di essi cambiasse il suo comportamento utilizzando la sua timeslice per intero, tornerebbe alla sua timeslice base all'inizio della prossima epoca. Durante il cambio di contesto, la funzione schedule() effettua la scelta del prossimo processo utilizzando iterativamente su tutti i processi eseguibili la funzione goodness(), e scegliendo quello che nella chiamata restituisce il valore piu` alto. Quest'ultima routine, chiamata su un task restituisce in genere la somma del valore nice del processo con il tempo rimanente all'interno del contatore del tempo rimasto nella timeslice. Se il contatore di un processo raggiunge 0, goodness() restituira` 0. Se un processo e` etichettato come real-time, il valore della goodness() risultera` 18

19 incrementato di una costante, 1000, che lo rende in genere il migliore tra i processi candidati. Sono inoltre previsti altri bonus nella goodness(), ad esempio per i task che condividono la stessa area di memoria del task precedente, in modo da favorire i cambi di contesto che non prevedano riallocazione delle pagine in cache, oppure in SMP viene assegnato un grosso bonus (+15) sul processore che sta attualmente effettuando il cambio di contesto all'ultimo processo che ha eseguito, per scoraggiare la migrazione dei processi da una CPU all'altra. E` chiaro che il limite piu` invalidante di questo algoritmo di scheduling risiede nella scalabilita`. Benche` sia un discreto algoritmo e funzioni bene su sistemi che prevedono pochi processi, inizia a mostrare i suoi limiti quando il numero di task in esecuzione aumenta. Cio` accade perche` ad ogni cambio di contesto e` necessario iterare tra tutti i processi, cosi` come alla fine di ogni epoca viene effettuato l'aggiornamento dei contatori di ognuno dei processi da eseguire. Queste due operazioni hanno una complessita` che dipende linearmente dal numero di processi in esecuzione, per cui l'algoritmo di scheduling di Linux 2.4 risulta O(n). Un altra caratteristica negativa e` stata sottolineata da alcuni tra i piu` autorevoli studiosi del kernel di Linux, ossia un inadeguato valore per le timeslice di base di default, che risulterebbe troppo alta e potrebbe portare delle lunghissime attese per l'esecuzione di un processo, dell'ordine di decine di secondi, nel caso in cui il sistema sia molto carico e siano presenti molti processi CPU-bound. 3.2 Nuove strutture dati La caratteristica piu` innovativa del nuovo scheduler e` di riuscire ad eseguire tutte le operazioni critiche, come il cambio di contesto, in un tempo costante e indipendente dal numero di processi presenti sulla macchina. Il nuovo algoritmo di scheduling e` dunque O (1) poiche` la sua complessita` nel caso peggiore non e` una funzione del numero di processi. Questo risolve definitivamente il problema di scalabilita` di Linux 2.4. Questo obiettivo e` stato raggiunto riscrivendo le strutture dati che contengono i descrittori dei processi nelle operazioni di scheduling. In particolare e` definita una runqueue (coda di esecuzione) per ogni processore presente sulla macchina. Ogni runqueue a sua volta contiene due priority array (vettori di priorita`), un tipo di struttura 19

20 che rappresenta, come vedremo, la vera innovazione nell'implementazione dell'algoritmo. La struttura della runqueue e` definita in kernel/sched.c, non in kernel/sched.h come si potrebbe immaginare. Cio` e` stato fatto appositamente per una scelta progettuale di separare le interfacce dello scheduler accessibili dai kernel threads dalle caratteristiche implementative interne dello scheduler stesso. La runqueue tiene traccia di alcuni elementi puramente statistici riguardanti l'utilizzo del processore, il suo carico medio, il numero di processi in coda ecc. E` presente anche un puntatore all'ultimo task che e` stato eseguito sul processore, un altro che indica l'area di memoria virtuale utilizzata dall'ultimo processo. Un vettore di due elementi di tipo prio_array_t e` definito quando la runqueue viene associata al processore. I due puntatori active e expired indicano quale dei due array contiene i processi che devono ancora consumare la loro timeslice in questa epoca. Ogniqualvolta un task viene eseguito, l'istanza del task presente nel vettore di priorita` attivo viene spostato in quello expired. Alla fine di ogni epoca, tutti i task si troveranno all'interno del vettore di priorita` puntato da expired. A questo punto i due array vengono scambiati, semplicemente scambiando i due puntatori active e expired, in modo tale che sia di nuovo pieno il vettore di priorita` attivo che contiene i descrittori dei processi da eseguire in questa epoca. Ciascun priority array contiene le informazioni necessarie per eseguire lo scheduling del prossimo processo in un tempo costante, poiche` consente la classificazione dei task in base alla loro priorita` durante l'inserimento del descrittore all'interno di questo particolare vettore. In effetti il priority array consiste essenzialmente in un array di puntatori a liste bidirezionali di processi aventi priorita` uguali. Sono previsti 140 livelli di priorita`, a ciascuno dei quali e` associata una lista bidirezionale. Le liste bidirezionali sono chiaramente dello stesso tipo di quelle analizzate in 1.2. Il priority array mantiene una mappa di bit che discrimina i livelli di priorita` che contengono almeno un processo attivo, ad esempio se sono presenti tre processi, due dei quali con priorita` 3 e uno con priorita` 7, i bit 3 e 7 della bitmap saranno accesi, e le due liste associate ai livelli di priorita` 3 e 7 conterranno rispettivamente 2 e 1 processo. In figura sono mostrate le relazioni fra le strutture dati. Per semplificare la rappresentazione dei priority array sono visualizzati solo 8 livelli di priorita`. 20

21 3.3 Assegnamento di priorita` e timeslice Quando un task viene creato, gli viene assegnato un valore detto priorita` statica, che dipende dal valore nice che l'utente puo` specificare durante la creazione del processo o del thread che genera il task. A partire da questo valore, ogniqualvolta che il processo finisce la sua timeslice e viene spostato da un vettore di priorita` all'altro, viene ricalcolata la sua priorita` effettiva, o dinamica, con opportuni vantaggi per i processi I/O bound e opportune penalita` per i processi piu` CPU bound. Nelle attuali versioni di Linux 2.6, il massimo incremento o penalita` rispetto alla priorita` statica e` fissato a 5. La priorita` viene calcolata dalla routine effective_prio() ogniqualvolta un processo finisce di utilizzare il processore, prima dello scambio dei due priority array che determina la fine di un'epoca. Al contrario di Linux 2.4, esiste un complesso schema che effettua delle statistiche sul tempo effettivamente utilizzato dal processo per compiere operazioni sul processore rispetto a quanto esso resta in attesa di eventi esterni, determinando cosi` il 21

22 suo bonus di priorita`. Allo stesso modo le timeslice dei task sono calcolate ogniqualvolta un processo finisce la propria timeslice, quando sta per essere inserito nel vettore di priorita` expired, utilizzando appositi valori discreti associati ai livelli di priorita` dinamica: un task con priorita` piu` alta otterra` una timeslice piu` lunga rispetto agli altri processi, sempre nell'ottica di favorire i processi interattivi. La timeslice minima che puo` essere assegnata a un processo molto affamato di CPU e` di 10ms, mente un processo interattivo puo` ottenere una timeslice di durata molto maggiore, il cui massimo e` fissato a 200ms. E` inoltre prevista ad una variabile per ogni task, chiamata interactive_credits, che tiene conto del numero di interazioni del processo con le periferiche, discriminando cosi` i processi in base alla loro interattivita` ricavata statisticamente. Questo serve per evitare che un task altamente interattivo, alla fine di una serie di interazioni, cominci a usare la CPU per un tempo maggiore e possa cosi` perdere troppo in fretta priorita` e durata della timeslice. Un'altra eccezione che riguarda i processi interattivi e` la possibilita` che essi siano reinseriti nel vettore di priorita` attivo quando ha finito la sua timeslice, se cio` non comporta starvation dei processi in attesa della fine dell'epoca nell'array expired. 3.4 Cambio di contesto Quando il controllo passa alla funzione schedule(), direttamente o indirettamente, la scelta del prossimo processo da eseguire viene fatta visitando la lista associata al livello di priorita` piu` alto e selezionando il primo descrittore di quella lista. Questo garantisce che se esistono processi aventi lo stesso livello di priorita` si alternino attraverso un meccanismo round-robin, altrimenti viene sempre selezionato il processo con priorita` piu` alta. Poiche` come abbiamo visto le priorita` e le timeslice sono calcolate ogniqualvolta il processo finisce la sua timeslice, non c'e` bisogno di iterare tra i processi durante il cambio di contesto. La nuova versione della funzione schedule() lavora con tempi costanti, dovendo soltanto identificare il primo bit acceso nella bitmap del priority array dei processi attivi, attraverso una chiamata alla funzione sched_find_first_set(). Una volta che un nuovo task e` stato selezionato, la funzione context_switch() viene invocata, e a sua volta richiama la routine switch_mm() che cambia la mappatura della memoria virtuale da quella del processo che ha appena concluso il suo ciclo di esecuzione 22

23 con quella del nuovo processo. In seguito viene chiamata la procedura switch_to() che si occupa di cambiare lo stato dei registri del processore e lo stack, ripristinando quelli relativi al processo selezionato. 3.5 Code di attesa e prelazione Accade spesso che un task non sia piu` eseguibile perche` rimane in attesa di un evento esterno, ossia si mette in uno stato di attesa. In questo caso viene inserito in una apposita coda di attesa e rimosso dalla coda di esecuzione. Quando il task prova a risvegliarsi, per il verificarsi di un evento o la ricezione di un segnale, la funzione try_to_wake_up() riporta il processo nella runqueue. Se il processo che tenta di risvegliarsi ha una priorita` dinamica maggiore del processo attualmente in esecuzione, il kernel ha la possibilita` di effettuare un cambio immediato di contesto per mettere a disposizione la CPU al processo che si e` appena risvegliato. Questo meccanismo detto di pre-emption o prelazione, assicura una risposta ancora piu` pronta ai processi interattivi, e viene realizzata grazie a un interrupt software che, per ogni millisecondo, grazie alla chiamata alla procedura schedule_tick(), controlla che non si siano risvegliati dei task con priorita` maggiore di quello attualmente in esecuzione. 3.6 Bilanciamento del carico nei sistemi SMP Come abbiamo osservato in precedenza, il kernel utilizza una runqueue per ogni processore presente nel sistema. Per questo motivo puo` capitare che una delle runqueue abbia piu` processi delle altre. Da un sistema con piu` processori ci si aspetta che il carico sia il piu` possibile distribuito tra le varie CPU. Per questo motivo, se una runqueue e` vuota, o comunque ogni 200 ms con un interrupt software, viene invocato l'algoritmo di bilanciamento del carico. La routine invocata per bilanciare le runqueues e` load_balance(), la quale, attraverso la chiamata a find_busiest_queue(), identifica la runqueue piu` carica, e ne restituisce il puntatore alla load_balance(). Se nessuna delle runqueue ha un carico superiore del 25% rispetto a quella corrente, find_busiest_queue() restituisce NULL e load_balance() termina. In caso contrario, avviene la migrazione dei processi in eccesso dalla runqueue piu` carica a quella 23

24 corrente, attraverso successive chiamate a pull_task() fino a quando la find_busiest_queue() non restituisce NULL. I processi da migrare sono scelti preferibilmente dal priority array expired, poiche` sono quelli che attendono da piu` tempo che si liberi il processore, altrimenti, se l'array expired e` vuoto, vengono prelevati dal priority array active. La load_balance() tende a far migrare i task con priorita` maggiore che sono in attesa da piu` tempo, qualora essi non siano marcati in maniera da non potere lasciare la runqueue corrente, per via di affinita` con i processi su quella runqueue, per motivi di performances, ad esempio condivisione della stessa area di memoria da parte di thread dello stesso gruppo, che lo scheduler tende a lasciare in coda di esecuzione sullo stesso processore per utilizzare al meglio la cache. 3.7 Miglioramento del supporto Real Time Linux 2.6 e` in grado di utilizzare politiche differenti per lo scheduling dei processi real time. Quando un processo real time viene inserito in coda di esecuzione non viene calcolato un valore di priorita` dinamica, poiche` il sistema per l'assegnamento delle priorita` statiche dei processi real time e` sufficiente per garantire una priorita` maggiore a questo tipo di processi rispetto ai normali processi della macchina. Grazie alla preemption e a due diverse politiche di scheduling per i processi Real Time, le prestazioni inerenti la gestione di tali processi risulta molto migliorata dalla versione precedente di Linux. Generalmente, se si utilizza la politicha di scheduling SCHED_FIFO, i processi real time possono essere eseguiti ininterrottamente fino all'esaurimento della loro timeslice. E` tuttavia possibile utilizzare la politica SCHED_RR per fornire comunque un meccanismo di round robin a timeslices per gestire l'esecuzione di tali processi. Benche` il supporto Real Time sia leggero anche in Linux 2.6, ossia non sia possibile garantire il rispetto dei tempi di esecuzione, le prestazioni misurate per il nuovo algoritmo di scheduling Real Time sono risultate eccellenti. 24

25 Conclusioni Il bisogno di riscrivere da zero i meccanismi per lo scheduling dei processi durante il passaggio all'attuale versione di Linux, e` stato dettato da necessita` eterogenee. Ingo Molnar e` riuscito egregiamente nel compito di fornire una implementazione versatile ed efficiente, cancellando, con lo sviluppo di uno scheduler O(1), i problemi di scalabilita` inaccettabili per un sistema operativo cosi` popolare e stimato come Linux, ma anche perfezionando le caratteristiche esistenti analizzando a fondo il vecchio scheduler, attraverso l'introduzione di una serie di algoritmi innovativi e efficienti. Bibliografia The Linux Cross Reference Andrew S.Woodhul, Andrew S.Tanenbaum, Operating Systems Design and Implementation, 2 nd Edition, Prentice Hall International. Robert J. Love, Linux Kernel Development, Developers's Library. Daniel P. Bovet, Marco Cesati, Understanding the Linux Kernel,2 nd Edition, O'Reilly. Josh Aas, Understanding the Linux CPU Scheduler, Silicon Graphics Inc. 17 Febbraio

J. Assfalg Appunti di Sistemi Operativi

J. Assfalg Appunti di Sistemi Operativi Lo scheduler di Linux (kernel 2.4) La politica di scheduling di Linux si propone il raggiungimento dei seguenti obiettivi (molti dei quali sono in contrasto): timesharing gestione di priorità dinamiche

Dettagli

Algoritmi di scheduling

Algoritmi di scheduling Capitolo 3 Algoritmi di scheduling Come caso particolare di studio, di seguito è discussa in dettaglio la politica di scheduling del sistema operativo LINUX (kernel precedente alla versione 2.6). Sono

Dettagli

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell

Dettagli

Pronto Esecuzione Attesa Terminazione

Pronto Esecuzione Attesa Terminazione Definizione Con il termine processo si indica una sequenza di azioni che il processore esegue Il programma invece, è una sequenza di azioni che il processore dovrà eseguire Il processo è quindi un programma

Dettagli

Il Sistema Operativo

Il Sistema Operativo Il Sistema Operativo Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al meglio le risorse del Sistema

Dettagli

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo Sistema Operativo Fondamenti di Informatica 1 Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al

Dettagli

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Un sistema operativo è un insieme di programmi che consentono ad un utente di INTRODUZIONE AI SISTEMI OPERATIVI 1 Alcune definizioni 1 Sistema dedicato: 1 Sistema batch o a lotti: 2 Sistemi time sharing: 2 Sistema multiprogrammato: 3 Processo e programma 3 Risorse: 3 Spazio degli

Dettagli

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Scheduling della CPU Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Sistemi multiprocessori Fin qui si sono trattati i problemi di scheduling su singola

Dettagli

Sistemi Operativi (modulo di Informatica II) I processi

Sistemi Operativi (modulo di Informatica II) I processi Sistemi Operativi (modulo di Informatica II) I processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2009-10 Sommario Il concetto di processo Schedulazione dei processi e cambio di contesto

Dettagli

Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti

Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti GESTIONE DEI PROCESSI 4.1 Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in diversi S.O. 4.2 Concetto di

Dettagli

Gestione della memoria centrale

Gestione della memoria centrale Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti

Dettagli

GESTIONE DEI PROCESSI

GESTIONE DEI PROCESSI Sistemi Operativi GESTIONE DEI PROCESSI Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in Java Concetto

Dettagli

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo I Thread 1 Consideriamo due processi che devono lavorare sugli stessi dati. Come possono fare, se ogni processo ha la propria area dati (ossia, gli spazi di indirizzamento dei due processi sono separati)?

Dettagli

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino Il Sistema Operativo Il Sistema Operativo è uno strato software che: opera direttamente sull hardware; isola dai dettagli dell architettura hardware; fornisce un insieme di funzionalità di alto livello.

Dettagli

SCHEDULATORI DI PROCESSO

SCHEDULATORI DI PROCESSO Indice 5 SCHEDULATORI DI PROCESSO...1 5.1 Schedulatore Round Robin...1 5.2 Schedulatore a priorità...2 5.2.1 Schedulatore a code multiple...3 5.3 Schedulatore Shortest Job First...3 i 5 SCHEDULATORI DI

Dettagli

Scheduling. Sistemi Operativi e Distribuiti A.A. 2004-2005 Bellettini - Maggiorini. Concetti di base

Scheduling. Sistemi Operativi e Distribuiti A.A. 2004-2005 Bellettini - Maggiorini. Concetti di base Scheduling Sistemi Operativi e Distribuiti A.A. 2-25 Bellettini - Maggiorini Concetti di base Il massimo utilizzo della CPU si ottiene mediante la multiprogrammazione Ogni processo si alterna su due fasi

Dettagli

Sistemi operativi. Esempi di sistemi operativi

Sistemi operativi. Esempi di sistemi operativi Sistemi operativi Un sistema operativo è un programma che facilita la gestione di un computer Si occupa della gestione di tutto il sistema permettendo l interazione con l utente In particolare un sistema

Dettagli

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX Parte 2 Struttura interna del sistema LINUX 76 4. ASPETTI GENERALI DEL SISTEMA OPERATIVO LINUX La funzione generale svolta da un Sistema Operativo può essere definita come la gestione dell Hardware orientata

Dettagli

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling SCHEDULING DELLA CPU 5.1 Scheduling della CPU Concetti di Base Criteri di Scheduling Algoritmi di Scheduling FCFS, SJF, Round-Robin, A code multiple Scheduling in Multi-Processori Scheduling Real-Time

Dettagli

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1 SCHEDULING DELLA CPU 5.1 Scheduling della CPU Concetti di Base Criteri di Scheduling Algoritmi di Scheduling FCFS, SJF, Round-Robin, A code multiple Scheduling in Multi-Processori Scheduling Real-Time

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Pietro Frasca Lezione 5 Martedì 21-10-2014 Thread Come abbiamo detto, un processo è composto

Dettagli

La Gestione delle risorse Renato Agati

La Gestione delle risorse Renato Agati Renato Agati delle risorse La Gestione Schedulazione dei processi Gestione delle periferiche File system Schedulazione dei processi Mono programmazione Multi programmazione Gestione delle periferiche File

Dettagli

Lo scheduler di UNIX (1)

Lo scheduler di UNIX (1) Lo scheduler di UNIX (1) Lo scheduling a basso livello è basato su una coda a più livelli di priorità 1 Lo scheduler di UNIX (2) Si esegue il primo processo della prima coda non vuota per massimo 1 quanto

Dettagli

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi? 1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi? 1. La nozione di multiprogrammazione prevede la possibilità di

Dettagli

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

Corso di Sistemi di Elaborazione delle informazioni Corso di Sistemi di Elaborazione delle informazioni Sistemi Operativi Francesco Fontanella Complessità del Software Software applicativo Software di sistema Sistema Operativo Hardware 2 La struttura del

Dettagli

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2 Computazione multi-processo Avere più processi allo stesso momento implica/richiede Processi e Threads Pt. 2 Concorrenza ed efficienza Indipendenza e protezione dei dati ma deve prevedere/permettere anche:

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,

Dettagli

Sistemi Operativi Kernel

Sistemi Operativi Kernel Approfondimento Sistemi Operativi Kernel Kernel del Sistema Operativo Kernel (nocciolo, nucleo) Contiene i programmi per la gestione delle funzioni base del calcolatore Kernel suddiviso in moduli. Ogni

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 3 Martedì 15-10-2013 1 Struttura ed organizzazione software dei sistemi

Dettagli

1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi

1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi 1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi Il processo E' un programma in esecuzione Tipi di processo Stati di un processo 1 indipendenti

Dettagli

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Sistema operativo Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Architettura a strati di un calcolatore

Dettagli

Modello dei processi. Riedizione delle slide della Prof. Di Stefano

Modello dei processi. Riedizione delle slide della Prof. Di Stefano Modello dei processi Riedizione delle slide della Prof. Di Stefano 1 Processi Modello di Processi asincroni comunicanti Process Scheduling Operazioni sui Processi Cooperazione tra Processi Interprocess

Dettagli

INFORMATICA. Il Sistema Operativo. di Roberta Molinari

INFORMATICA. Il Sistema Operativo. di Roberta Molinari INFORMATICA Il Sistema Operativo di Roberta Molinari Il Sistema Operativo un po di definizioni Elaborazione: trattamento di di informazioni acquisite dall esterno per per restituire un un risultato Processore:

Dettagli

Secondo biennio Articolazione Informatica TPSIT Prova Quarta

Secondo biennio Articolazione Informatica TPSIT Prova Quarta Sistema operativo: gestione memoria centrale La Memoria Virtuale consente di superare i limiti della Memoria Centrale : A. no B. a volte C. si, ma non sempre e' adeguata D. si, attraverso tecniche di gestione

Dettagli

Coordinazione Distribuita

Coordinazione Distribuita Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza 21.1 Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

Processi e Thread. Scheduling (Schedulazione)

Processi e Thread. Scheduling (Schedulazione) Processi e Thread Scheduling (Schedulazione) 1 Scheduling Introduzione al problema dello Scheduling (1) Lo scheduler si occupa di decidere quale fra i processi pronti può essere mandato in esecuzione L

Dettagli

Scheduling della CPU:

Scheduling della CPU: Coda dei processi pronti (ready( queue): Scheduling della CPU primo ultimo PCB i PCB j PCB k contiene i descrittori ( process control block, PCB) dei processi pronti. la strategia di gestione della ready

Dettagli

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione Lezione 4 La Struttura dei Sistemi Operativi Introduzione Funzionamento di un SO La Struttura di un SO Sistemi Operativi con Struttura Monolitica Progettazione a Livelli di un SO 4.2 1 Introduzione (cont.)

Dettagli

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa Raccolta prove scritte Realizzare una classe thread Processo che deve effettuare un numero fissato di letture da una memoria

Dettagli

Sistemi Operativi. 5 Gestione della memoria

Sistemi Operativi. 5 Gestione della memoria Gestione della memoria Compiti del gestore della memoria: Tenere traccia di quali parti della memoria sono libere e quali occupate. Allocare memoria ai processi che ne hanno bisogno. Deallocare la memoria

Dettagli

Il Sistema Operativo (1)

Il Sistema Operativo (1) E il software fondamentale del computer, gestisce tutto il suo funzionamento e crea un interfaccia con l utente. Le sue funzioni principali sono: Il Sistema Operativo (1) La gestione dell unità centrale

Dettagli

Sistemi Operativi SCHEDULING DELLA CPU

Sistemi Operativi SCHEDULING DELLA CPU Sistemi Operativi SCHEDULING DELLA CPU Scheduling della CPU Concetti di Base Criteri di Scheduling Algoritmi di Scheduling FCFS, SJF, Round-Robin, A code multiple Scheduling in Multi-Processori Scheduling

Dettagli

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi Capitolo Terzo Primi passi con Microsoft Access Sommario: 1. Aprire e chiudere Microsoft Access. - 2. Aprire un database esistente. - 3. La barra multifunzione di Microsoft Access 2007. - 4. Creare e salvare

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer.

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer. I Sistemi Operativi Il Software di Base Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer. Il sistema operativo è il gestore di tutte le risorse

Dettagli

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6 Appunti di Calcolatori Elettronici Esecuzione di istruzioni in parallelo Introduzione... 1 Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD...

Dettagli

Approccio stratificato

Approccio stratificato Approccio stratificato Il sistema operativo è suddiviso in strati (livelli), ciascuno costruito sopra quelli inferiori. Il livello più basso (strato 0) è l hardware, il più alto (strato N) è l interfaccia

Dettagli

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi Software relazione Hardware Software di base Software applicativo Bios Sistema operativo Programmi applicativi Software di base Sistema operativo Bios Utility di sistema software Software applicativo Programmi

Dettagli

Il Software. Il software del PC. Il BIOS

Il Software. Il software del PC. Il BIOS Il Software Il software del PC Il computer ha grandi potenzialità ma non può funzionare senza il software. Il software essenziale per fare funzionare il PC può essere diviso nelle seguenti componenti:

Dettagli

Concetti di base. Scheduling della CPU. Diagramma della durata dei CPU-burst. Sequenza Alternata di CPU Burst e I/O Burst

Concetti di base. Scheduling della CPU. Diagramma della durata dei CPU-burst. Sequenza Alternata di CPU Burst e I/O Burst Impossibile visualizzare l'immagine. Scheduling della CPU Concetti di base La multiprogrammazione cerca di ottenere la massima utilizzazione della CPU. L esecuzione di un processo consiste in cicli d esecuzione

Dettagli

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1 GESTIONE DELLA MEMORIA CENTRALE 6.1 Gestione della Memoria Background Spazio di indirizzi Swapping Allocazione Contigua Paginazione 6.2 Background Per essere eseguito un programma deve trovarsi (almeno

Dettagli

Architettura hardware

Architettura hardware Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1) La gestione di un calcolatore Sistemi Operativi primo modulo Introduzione Augusto Celentano Università Ca Foscari Venezia Corso di Laurea in Informatica Un calcolatore (sistema di elaborazione) è un sistema

Dettagli

Il Sistema Operativo. Introduzione di programmi di utilità. Elementi di Informatica Docente: Giorgio Fumera

Il Sistema Operativo. Introduzione di programmi di utilità. Elementi di Informatica Docente: Giorgio Fumera CPU Memoria principale Il Sistema Operativo Elementi di Informatica Docente: Giorgio Fumera Corso di Laurea in Edilizia Facoltà di Architettura A.A. 2009/2010 ALU Unità di controllo Registri A indirizzi

Dettagli

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti) (Esercizi Tratti da Temi d esame degli ordinamenti precedenti) Esercizio 1 L'agenzia viaggi GV - Grandi Viaggi vi commissiona l'implementazione della funzione AssegnaVolo. Tale funzione riceve due liste

Dettagli

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME) Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

Dettagli

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software di sistema e software applicativo I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software soft ware soffice componente è la parte logica

Dettagli

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL STRUTTURA DEI SISTEMI OPERATIVI 3.1 Struttura dei Componenti Servizi di un sistema operativo System Call Programmi di sistema Struttura del sistema operativo Macchine virtuali Progettazione e Realizzazione

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 PRESTAZIONI DEL CALCOLATORE Massimiliano Giacomin Due dimensioni Tempo di risposta (o tempo di esecuzione): il tempo totale impiegato per eseguire un task (include

Dettagli

Introduzione alla Virtualizzazione

Introduzione alla Virtualizzazione Introduzione alla Virtualizzazione Dott. Luca Tasquier E-mail: luca.tasquier@unina2.it Virtualizzazione - 1 La virtualizzazione è una tecnologia software che sta cambiando il metodo d utilizzo delle risorse

Dettagli

Gestione dei processi. Marco Cesati. Schema della lezione. Blocco di controllo 2. Sezioni e segmenti. Gestione dei processi. Job.

Gestione dei processi. Marco Cesati. Schema della lezione. Blocco di controllo 2. Sezioni e segmenti. Gestione dei processi. Job. Di cosa parliamo in questa lezione? Lezione 4 Cosa è un processo e come viene gestito dal SO 1 e job 2 Il blocco di controllo Sistemi operativi 3 Struttura di un file eseguibile 4 La schedulazione dei

Dettagli

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella. Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.net Prestazioni Si valutano in maniera diversa a seconda dell

Dettagli

STRUTTURE DEI SISTEMI DI CALCOLO

STRUTTURE DEI SISTEMI DI CALCOLO STRUTTURE DEI SISTEMI DI CALCOLO 2.1 Strutture dei sistemi di calcolo Funzionamento Struttura dell I/O Struttura della memoria Gerarchia delle memorie Protezione Hardware Architettura di un generico sistema

Dettagli

Architettura di un calcolatore

Architettura di un calcolatore 2009-2010 Ingegneria Aerospaziale Prof. A. Palomba - Elementi di Informatica (E-Z) 7 Architettura di un calcolatore Lez. 7 1 Modello di Von Neumann Il termine modello di Von Neumann (o macchina di Von

Dettagli

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione Il sistema di I/O Hardware di I/O Interfacce di I/O Software di I/O Introduzione 1 Sotto-sistema di I/O Insieme di metodi per controllare i dispositivi di I/O Obiettivo: Fornire ai processi utente un interfaccia

Dettagli

Gestione del processore e dei processi

Gestione del processore e dei processi Il processore è la componente più importante di un sistema di elaborazione e pertanto la sua corretta ed efficiente gestione è uno dei compiti principali di un sistema operativo Il ruolo del processore

Dettagli

Corso di Amministrazione di Reti A.A. 2002/2003

Corso di Amministrazione di Reti A.A. 2002/2003 Struttura di Active Directory Corso di Amministrazione di Reti A.A. 2002/2003 Materiale preparato utilizzando dove possibile materiale AIPA http://www.aipa.it/attivita[2/formazione[6/corsi[2/materiali/reti%20di%20calcolatori/welcome.htm

Dettagli

CPU. Maurizio Palesi

CPU. Maurizio Palesi CPU Central Processing Unit 1 Organizzazione Tipica CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 2 L'Esecutore

Dettagli

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1 IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza

Dettagli

Gestione Turni. Introduzione

Gestione Turni. Introduzione Gestione Turni Introduzione La gestione dei turni di lavoro si rende necessaria quando, per garantire la continuità del servizio di una determinata struttura, è necessario che tutto il personale afferente

Dettagli

Sistema operativo: Gestione della memoria

Sistema operativo: Gestione della memoria Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e

Dettagli

Architettura di un sistema di calcolo

Architettura di un sistema di calcolo Richiami sulla struttura dei sistemi di calcolo Gestione delle Interruzioni Gestione della comunicazione fra processore e dispositivi periferici Gerarchia di memoria Protezione. 2.1 Architettura di un

Dettagli

J. Assfalg Appunti di Sistemi Operativi

J. Assfalg Appunti di Sistemi Operativi Multiprogrammazione J. Assfalg Appunti di Sistemi Operativi La multiprogrammazione nasce come un metodo per massimizzare l'uso della CPU piuttosto che come uno strumento per fornire un miglior servizio

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

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

I processi. Un processo è una attività, controllata da un programma, che si svolge su un processore.

I processi. Un processo è una attività, controllata da un programma, che si svolge su un processore. I processi Cos è un processo? Un processo è una attività, controllata da un programma, che si svolge su un processore. Il programma è una entità statica che descrive la sequenza di istruzioni che devono

Dettagli

Capitolo 11 -- Silberschatz

Capitolo 11 -- Silberschatz Implementazione del File System Capitolo 11 -- Silberschatz Implementazione del File System File system: Definizione dell aspetto del sistema agli occhi dell utente Algoritmi e strutture dati che permettono

Dettagli

Le Infrastrutture Software ed il Sistema Operativo

Le Infrastrutture Software ed il Sistema Operativo Le Infrastrutture Software ed il Sistema Operativo Corso di Informatica CdL: Chimica Claudia d'amato claudia.damato@di.uniba.it Il Sistema Operativo (S0) (Inf.) E' l'insieme dei programmi che consentono

Dettagli

Sistemi Operativi. Scheduling dei processi

Sistemi Operativi. Scheduling dei processi Sistemi Operativi Scheduling dei processi Scheduling dei processi Se più processi sono eseguibili in un certo istante il sistema deve decidere quale eseguire per primo La parte del sistema operativo che

Dettagli

Tesina per l esame di Sistemi Operativi a cura di Giuseppe Montano. Prof. Aldo Franco Dragoni

Tesina per l esame di Sistemi Operativi a cura di Giuseppe Montano. Prof. Aldo Franco Dragoni Sistemi operativi real time basati su Linux: gestione delle risorse e dei processi. Tesina per l esame di Sistemi Operativi a cura di. Prof. Aldo Franco Dragoni Corso di laurea in Ingegneria Informatica

Dettagli

Il Sistema Operativo. Di cosa parleremo? Come si esegue un programma. La nozione di processo. Il sistema operativo

Il Sistema Operativo. Di cosa parleremo? Come si esegue un programma. La nozione di processo. Il sistema operativo Il Sistema Operativo Di cosa parleremo? Come si esegue un programma. La nozione di processo. Il sistema operativo ... ma Cos'è un S.O.? un PROGRAMMA!... ma Cos'è un programma? PROGRAMMA: 1. algoritmo sequenza

Dettagli

Scheduling della CPU

Scheduling della CPU Scheduling della CPU Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux 6.1 Sistemi multiprocessori simmetrici Fin qui si sono trattati i problemi di scheduling

Dettagli

Pag. 1. Introduzione allo scheduling. Concetti fondamentali. Scheduling della CPU. Concetti fondamentali. Concetti fondamentali. Algoritmi.

Pag. 1. Introduzione allo scheduling. Concetti fondamentali. Scheduling della CPU. Concetti fondamentali. Concetti fondamentali. Algoritmi. Concetti fondamentali Scheduling della CU Introduzione allo scheduling Uno degli obbiettivi della multiprogrammazione è quello di massimizzare l utilizzo delle risorse e in particolare della CU er raggiungere

Dettagli

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque?

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque? NOSQL Data Model HBase si ispira a BigTable di Google e perciò rientra nella categoria dei column store; tuttavia da un punto di vista logico i dati sono ancora organizzati in forma di tabelle, in cui

Dettagli

Definizione di processo. Un processo è un programma (o una parte di una programma) in corso di esecuzione

Definizione di processo. Un processo è un programma (o una parte di una programma) in corso di esecuzione SISTEMI OPERATIVI (parte prima - gestione dei processi) Tra i compiti di un sistema operativo sicuramente troviamo i seguenti: Gestione dei processi Gestione della memoria Gestione del file-system Ci occuperemo

Dettagli

Lo Scheduling Real Time in Linux. Universita degli studi di Roma La Sapienza Ivan Gualandri Matricola 693512 Relatore: Giorgio Richelli

Lo Scheduling Real Time in Linux. Universita degli studi di Roma La Sapienza Ivan Gualandri Matricola 693512 Relatore: Giorgio Richelli Lo Scheduling Real Time in Linux Universita degli studi di Roma La Sapienza Ivan Gualandri Matricola 693512 Relatore: Giorgio Richelli Scopo Motivazione Obiettivi 1) Lo scopo di questo progetto è presentare

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Dettagli

Scheduling della CPU Introduzione ai Sistemi Operativi Corso di Abilità Informatiche Laurea in Fisica

Scheduling della CPU Introduzione ai Sistemi Operativi Corso di Abilità Informatiche Laurea in Fisica Scheduling della CPU Introduzione ai Sistemi Operativi Corso di Abilità Informatiche Laurea in Fisica prof. Ing. Corrado Santoro A.A. 2010-11 Architettura di un sistema operativo Progr 1 Progr 2 Progr

Dettagli

Scheduling della CPU

Scheduling della CPU Scheduling della CPU Scheduling della CPU Obiettivo della multiprogrammazione: massimizzazione dell utilizzo della CPU. Scheduling della CPU: attivita` di allocazione della risorsa CPU ai processi. Scheduler

Dettagli

Dispensa di Informatica I.1

Dispensa di Informatica I.1 IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.

Dettagli

Esercitazione finale per il corso di Sistemi Operativi (A.A. 2004/2005)

Esercitazione finale per il corso di Sistemi Operativi (A.A. 2004/2005) Esercitazione finale per il corso di Sistemi Operativi (A.A. 2004/2005) Descrizione dell esercitazione L esercitazione consiste nell implementare un semplice gestore di aste attraverso il quale gli utenti

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia L informatica È la disciplina scientifica che studia INTRODUZIONE I calcolatori, nati in risposta all esigenza di eseguire meccanicamente operazioni ripetitive Gli algoritmi, nati in risposta all esigenza

Dettagli

Protezione. Protezione. Protezione. Obiettivi della protezione

Protezione. Protezione. Protezione. Obiettivi della protezione Protezione Protezione La protezione riguarda i meccanismi per il controllo dell accesso alle risorse in un sistema di calcolo da parte degli utenti e dei processi. Meccanismi di imposizione fissati in

Dettagli

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione Gestione della memoria Paginazione Segmentazione Segmentazione con paginazione Modello di paginazione Il numero di pagina serve come indice per la tabella delle pagine. Questa contiene l indirizzo di base

Dettagli

T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E

T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E Threading T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E Caratteristiche principali dei thread Consentono di eseguire elaborazioni simultanee in un programma scritto in C#. Possono essere

Dettagli