Swapping Trasferimento temporaneo in memoria secondaria di processi o parti di processo.

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Swapping Trasferimento temporaneo in memoria secondaria di processi o parti di processo."

Transcript

1 SISTEMI OPERA TIVI T (A nna Ciampolini) Definizioni di teoria Sistema operativo Programma intermediario tra utente e hardware del computer, mappa le risorse hardware in risorse logiche accessibili attraverso interfacce. Storia dei sistemi operativi La prim a generazione di computer era basata su valvole, di tipo manuale e si utilizzava il linguaggio macchina. Poi arrivarono i sistemi batch semplici basati su transistor, che sfruttano linguaggi ad alto livello e realizzano un esecuzione sequenziale dei job. Dopo si ebbero i sistemi batch multiprogrammati in cui viene caricata su disco un pool di job: il sistema operativo seleziona un sottoinsieme da caricare in memoria, ne sceglie uno da assegnare alla CPU, attende che un job termini o vada in attesa, così da assegna la CPU ad un altro job. Spooling Il disco viene utilizzato come buffer per memorizzare e leggere i dati. Swapping Trasferimento temporaneo in memoria secondaria di processi o parti di processo. Sistemi time-sharing Il sistema operativo time-sharing deve garantire la multiutenza, dedicando ad ogni utente una macchina virtuale, e l interattività, interrompendo l esecuzione del job corrente dopo un quanto di tempo. Si noti che la multiutenza porta alla necessità di una maggiore protezione. Scheduling Lo Scheduling viene realizzato dallo Scheduler ha due nature differenti: lo scheduling dei job consiste nella selezione, dalla memoria secondaria, del job da inserire nella coda dei processi pronti, situata in memoria centrale (scheduling dei job o a lungo termine); lo scheduling della CPU consiste invece nella selezione, dalla coda dei processi pronti, del job da assegnare alla CPU (scheduling della CPU o a breve termine). Context switch Viene realizzato dal Dispatcher e consiste nel cambio del job controllato dalla CPU con il successivo, scelto dalla coda processi pronti. Interrupt HW e SW Interruzioni asincrone per un evento scatenante, possono essere di tipo hardware o software (com e le system call). Direct Memory Access - DMA Mem oria e dispositivi realizzano l I/O in maniera autonoma dalla CPU, che viene notificata della fine del trasferimento, tramite interrupt, da parte del DMA Controller. Bit Mode 0 m odo kernel; 1 m odo user. Programma vs processo Il programma è un entità passiva presente in memoria secondaria, mentre il processo è un entità attiva residente in memoria centrale. Compiti del sistema operativo Il sistema operativo si occupa della gestione dei processi: creazione, terminazione sospensione e sincronizzazione. Inoltre si occupa della gestione: dei deadlock, della memoria centrale/secondaria, dei dispositivi di I/O e del file system. 1/9

2 Strutture dei sistemi operativi Monolitica: unico modulo contenente un insieme di procedure, l interazione avviene mediante chiam ate a procedura, il sistema risulta complesso. Microkernel: il nucleo ha poche funzionalità di base, è affidabile, personalizzabile ma ha una scarsa efficienza (per le troppe chiamate a procedura necessarie per operare). Kernel Ibribo: come la struttura a microkernel ma con più funzionalità. UNIX Si tratta di un sistema operativo multiutente (quindi multiprogrammato), time-sharing, con kernel monolitico, permette lo sviluppo di programmi in C ed è portabile. E caratterizzato dalla presenza di più processi utente ognuno con un solo thread che non condivide memeoria con gli altri (modello processo pesante). Memoria gestita con segmentazione e paginazione, possibilità di memoria virtuale. Linux Si tratta di un kernel, a differenza di GNU/Linux che è un sistema operativo libero (cioè accessibile da tutti) e open-source (codice riutilizzabile). Possiede le stesse caratteristiche di Unix, essendo un suo derivato, ma diversamente da UNIX è basato sul m ultithreading (i thread sono gestiti a livello kernel dall unità di scheduling). Lo spazio di indirizzamento è di 4 GB (32 bit). Processo Programma in esecuzione rappresentato da codice, dati, pc, registri e stack. Può essere in vari stati: init, ready, running, waiting e terminated. Le informazioni del processo sono contenute nel Process Control Block (PCB). I processi I/O bound sono caratterizzati da brevi utilizzi della CPU, mentre quelli CPU bound da lunghi utilizzi. Un processo leggero (detto anche thread) è un flusso di esecuzione che condivide codice e dati con gli altri thread che fanno parte dello stesso processo pesante (detto anche task o semplicemente processo). Nei sistemi operativi tradizionali (come UNIX) un processo è formato da un solo thread, mentre il term ine m ultithreading indica la capacità di associare ad un processo più thread. Interazione Nel m odello ad ambiente globale avviene mediante variabili condivise (attraverso i thread). Nel m odello ad ambiente locale avviene mediante scambio di messaggi o segnali, perché lo spazio di indirizzamento dei dati è privato per ogni processo. Istruzioni indivisibili Un istruzione è indivisibile quando il suoi parametri di ingresso non sono accessibile da altri processori, finché l istruzione non è finita. Produttore/consumatore Processi cooperanti tramite un buffer condiviso, necessità di sincronizzazione. Variabili d ambiente del processo Le variabili d ambiente sono ad esempio: argc/argv, path, direttorio corrente, user, gruppo. Stack, heap e dati globali Heap: area di memoria che contiene tutte le variabili allocate tramite la funzione malloc. Stack: area di memoria che contiene un insieme di record di attivazione, ognuno dei quali contiene le variabili locali ad ogni funzione. Dati globali: variabili globali. 2/9

3 Processo UNIX Il processo in UNIX è l unità di computazione, i processi sono pesanti e con codice rientrante (cioè condivisibile), i dati non sono condivisibili, codice e dati sono separati (modello a codice puro), modello ad ambiente locale. Il PCB è costituito da: 1) User Structure, che contiene le informazioni necessarie al SO quando il p rocesso è residente (es. copia registri CPU, info risorse allocate, info segnali, variabili d ambiente), può essere soggetta a swap-out ; 2) Process Structure, che contiene le informazioni necessarie al sistema operativo quando il processo è residente o swappato (es. riferimento a User Structure, pid, pid del padre, info scheduling: priorità, riferimento a: stack, Text Structure). Per ogni processo del intero sistema viene aggiunta una Process Structure all interno della Process Table. Il sistema gestisce, inoltre, una struttura dati globale (essendo il codice rientrante) detta Text Table, dove ogni elemento, detto Text Structure, contiene un puntatore all area di memoria in cui è allocato il codice. Immagine di un processo UNIX L im magine di un processo UNIX è l insieme delle aree di memoria e strutture dati associate al processo. Essa è costituita da: Process Structure, User Structure (che formano il PCB), dati globali, stack, heap e stack del kernel. Una parte dell immagine, inoltre, è riservata al kernel (US, PS, stack del kernel) e non tutta è swappable (PS e Text Structure). System call per la gestione dei processi La fork() genera un figlio con lo stesso codice del padre (vedono entrambi lo stesso codice) e una copia dei dati del padre (non essendo i dati condivisibili). Essa ritorna 0 al processo figlio e il pid del figlio al processo padre. La exit(status) termina il processo chiamante, chiude le sue risorse, i suoi (eventuali) figli vengono adottati da INIT e se ha un padre, entra nello stato zombie. La variabile status contiene lo stato di terminazione del processo. La wait(&status) rileva lo stato di terminazione dei figli, all interno della variabile status, e ritorna il pid del figlio terminato. La execl() sostituisce codice e argomenti del processo chiamante con quelli passati come parametro. Infine, tutte le system call ritornano un valore negativo se falliscono. Coda dei processi pronti Contiene i descrittori (PCB) dei processi pronti (in stato di ready) per essere assegnati alla CPU. Algoritmi di scheduling Gli algoritmi di scheduling hanno lo scopo di gestire la coda dei processi pronti. Vi sono 4 tipi di algoritmi di scheduling, ognuno può prevedere o meno la possibilità di sottrarre la CPU dal processo running per assegnarla ad un altro presente nella coda dei processi pronti. 1) First Come First Serverd: senza prelazione, coda gestita in modo FIFO. 2) Shortest Job First: senza prelazione, si stima il CPU-brust dei processi presenti in coda e si schedula quello con valore di CPU-brust più basso. 3) Scheduling con priorità: con prelazione, si schedula il processo con priorità maggiore o FCFS per quelli di uguale priorità. 4) Round Robin: con prelazione periodica e ciclica per un intervallo di tempo costante. 5) MLFQ: con prelazione, si schedula in base alle priorità suddivise per livelli, ognuno dei quali è gestito con Round Robin (usato in UNIX). 3/9

4 Sincronizzazione in UNIX Perm ette di imporre dei vincoli sulle operazioni interagenti, gestibile tramite segnali da: term inale, da parte di processi o dal kernel (eccezioni HW). Il processo ricevente può ignorare il segnale, eseguire un operazione di default o gestirlo tramite funzione apposita (handler). La system call kill(pid, sig) serve per inviare un segnale sig ad un processo il cui pid è indicato come parametro. E inoltre necessario includere la libreria signal.h. La system call signal(sig, handler) server per associare una particolare funzione, handler, ad un segnale, sig, dato come parametro. Il valore di handler può essere una funzione definita dal programmatore oppure si possono usare le costanti: SIG_IGN, SIG_DFL, SIGKILL e SIGSTOP (che danno l ordine di terminare l esecuzione). La funzione handler deve prevedere sem pre un parametro intero che indica il segnale ricevuto. Altre system call sleep(n) restituisce N meno il numero di secondi passati prima di ricevere un segnale, 0 se non riceve nessun segnale. alarm(n) dopo N secondi invia SIGALARM al processo che la esegue. pause() è come la sleep, ma a tempo infinito. In generale le system call non sono interrompibili a meno che non siano delle slow system call. File system E una parte del sistema operativo che fornisce i meccanismi di accesso e memorizzazione di dati nelle memorie di massa, realizza i concetti astratti di file, direttorio, partizione. File Sono un insieme di record logici di dimensione variabile contenuti all interno di blocchi di dim ensione fissa, la cui corrispondenza è stabilita dal SO. Accesso a file Vi sono 3 tipi di accesso: sequenziale, diretto ad uno specifico record logico o ad indice. Direttorio Un direttorio è una struttura dati adatta a contenere più file e può essere organizzata in varie strutture logiche: a 1 o 2 livelli, ad albero o a grafo ciclico (UNIX). Allocazione blocchi 1) Contigua (blocchi contigui => frammentazione esterna) 2) A lista concatenata (FAT) 3) Ad indice (blocco indice che contiene i puntatori ai vari blocchi - UNIX) File system in UNIX Vi sono 3 tipologie di file system in UNIX: file ordinari, direttori e dispositive fisici. Ogni file è descritto da un i-node ed identificato da un i-number. L i-node contiene attributi come: 1) Tipo di file 2) Data di creazione 3) Proprietario 4) Bit di protezione I blocchi sono allocati ad indice e l intero file system è partizionato in: 5) i-list 6) data block 7) boot block (bootstrap) 8) super block (puntatore ad i-node liberi) Bit di protezione UNIX La protezione in UNIX avviene tramite il controllo dell accesso ad un generico file tramite 12 bit di protezione (i-node), strutturati come segue: suid, sgid, sticky (immagine swappata), (r-w-x) per User, (r-w-x) per Group, (r-w-x) per Others. Gli ultimi 9 bit servono per gestire l accesso in lettura (r), scrittura (w) o esecuzione, 0 per negarlo e 1 per permetterlo. La m odifica dei diritti sui file si realizza tramite4 la system call chmod(). 4/9

5 File descriptor (fd) E un intero che identifica un determinato file aperto. La stdio.h del C definisce di defalut alcuni descrittori di file tra i quali: stdin (0), stdout (1) e stderr (2). System call per accesso a file La open(nomefile, flag, mod_prot) apre un file nella modalità flag (che può essere O_RDONLY, O_WRONLY, O_APPEND), abbinabili tramite il simbolo. Stessa cosa viene realizzata dalla create(nomefile, mod_prot) in cui però il file viene sempre creato ed aperto in scrittura. La close(fd) chiude il file. La read(fd, buff, N) permette di leggere dal file, identificato da fd, N byte all interno del buffer buff, fornito come parametro; la read restituisce il numero di byte effettivamente letti. La write(fd, buff, N) permette di scrivere sul file, identificato da fd, N byte dal buffer buff, fornito come parametro. La lseek(fd, offset, origine) permette di s postare l I/O pointer di offset byte rispetto all origine che può valere SEEK_SET (=0), SEEK_CUR (=1), SEEK_END (=2). Comunicazione processi UNIX Avviene mediate PIPE o FIFO essendo UNIX ad ambiente locale. La PIPE è un canale di com unicazione unidirezionale (o bidirezionale ma va gestito), a capacità limitata, la com unicazione avviene in m odo indiretto tra processi appartenenti alla stessa gerarchia, la sincronizzazione è automatica. La system call pipe(fd) crea un pipe il cui descrittore deve essere un vettore di 2 interi; modalità: int fd[2], dove fd[0] è usato per la lettura e fd[1] per la scrittura. Tramite la close(fd[n]), dove n è 0 o 1, è possibile chiudere un lato della PIPE. La FIFO, invece, ha visibilità globale, è persistente ed unidirezionale. La system call m kfifo(nomefifo, mod_prot) permette di creare una FIFO; per l accesso in lettura o scrittura ci si com porta come un file generico tranne che per l eliminazione che viene fatta nella m odalità: unlink( NomeFifo ). Apertura di un file in UNIX In UNIX esistono essenzialmente 3 strutture dati globali: 1) Tabella dei file attivi 2) Tabella dei file aperti di sistema 3) Tabella dei file aperti di processo Nel m omento in cui si apre un file da un processo il sistema realizza le seguenti azioni: 1. Crea un nuovo elemento nella tabella dei file aperti di processo e di sistema 2. Copia i-node del file che si sta aprendo nella tabella dei file attivi Binding Il binding è l associazione tra indirizzo logico e indirizzo fisico di una risorsa, è compito del sistema operativo e può essere realizzato in modo statico o dinamico. Frammentazione esterna Realizzando la segmentazione della memoria, con l'andare del tempo e il susseguirsi dei processi in esecuzione, la memoria viene allocata e deallocata in blocchi di varie dimensioni che lasciano un sempre maggior numero di "buchi" vuoti, troppo piccoli per poter essere utilm ente allocati. Questo provoca una frammentazione, detta esterna, della memoria. Allocazione della memoria centrale La m emoria centrale può essere allocata in maniera: 1) Contigua con partizione singola (no multiprogrammazione) con partizione multipla (sì multiprogrammazione, quindi: protezione spazio di indirizzamento; partizioni variabili o fisse per ogni processo) 2) Non contigua con paginazione (se la dimensione della pagina è troppo grane di ha una fram mentazione interna) con segmentazione (struttura indirizzo: segmento + offset, porta ad un fram mentazione esterna) con segmentazione paginata (spazio logico suddiviso in segmenti che, a loro volta, sono suddivisi in pagine; adottato in Linux) 5/9

6 Memoria virtuale La m emoria virtuale consente uno spazio virtuale illimitato e si realizza mediante paginazione su richiesta, cioè in base al bisogno. In realtà è possibile utilizzare anche al tecnica della segmentazione (con il difetto della frammentazione esterna), ma la paginazione è il metodo più adottato. Il meccanismo è il seguente. Quando il bit di validità di una pagina va a 0 (pagina invalida) viene lanciato un interrupt software page fault per il quale la pagina viene caricata sul primo frame libero della memoria centrale, così il processo può riprendere l esecuzione come se niente fosse. Se non si trova un frame libero, si usa il metodo di sovrallocazione. Metodo di sovrallocazione Consiste nel scegliere una vittima (pagina) dalla memoria centrale e salvarla sul disco per far posto alla nuova. La scelta della vittima avviene tramite 3 algoritmi: FIFO, Last Frequency Used (meno frequenti), Last Recently Used (meno recenti). Mutua esclusione La m utua esclusione impone che le operazioni con le quali i processi accedono a variabili com uni non si sovrappongano nel tempo. La sezione critica è l insieme delle istru zioni di accesso e modifica di tali variabili comuni. Più sezioni critiche formano una classe di sezioni critiche. Soluzioni alla mutua esclusione 1) Disabilitazione delle interruzioni durante le sezioni critiche (non corretta) 2) Utilizzo di una variabile booleana libero (non corretta) Prologo: libero = 0 (prima della sezione critica) Epilogo: libero = 1 (dopo la sezione critica) 3) Utilizzo di una variabile intera turno che può assumere i valori 1 o 2 (non corretta) Ogni processo attende il proprio turno (esaminando la variabile turno) prima di accedere alla sezione critica 4) Due variabili busy inizializzate a 0 che diventano a 1 durante la sezione critica (non corretta) 5) Algoritmo di Dekker (corretta) Utilizza 2 variabili busy e una variabile turno Starvation-free, in quanto al sezione critica è accessibile solo per un tempo finito 6) Algoritmo di Peterson (corretta) 7) Utilizzo di lock(x) e unlock(x): lock(x) = salva il valore di x, assegna un nuovo valore ad x (maggiore di 0), controlla che il valore salvato sia uguale 0, altrimenti ricomincia unlock(x) = pone x a 0 struttura: lock(x); <sezione critica> unlock(x); Istruzioni indivisibili 8) Utilizzo dei semafori, monitor o clausola synchronized Definizione di Semaforo Il semaforo è uno strumento di sincronizzazione tra thread. Si tratta di una struttura dati accessibile solo tramite le operazioni (primitive) p e v. L istruzione p serve a verificare lo stato del semaforo: se il suo valore è positivo, questo viene decrementato di un unità e il processo prosegue l esecuzione; se il valore è nullo, il processo viene sospeso e il suo PCB viene inserito nella coda del semaforo. L istruzione v serve a risvegliare eventuale processi sospesi: se non esistono processi nella coda, il valore del semaforo viene aumentato di 1; altrimenti, estrae il primo processo in coda e lo riattiva. La v è sospensiva se si risveglia un processo con priorità maggiore rispetto ad uno già attivo. 6/9

7 Realizzazione del Semaforo typedef struct int value; queue Qs; int lock; // Inizializzato ad 1 semaphore; void p (semaphore *s) lock(s->lock); if(s->value == 0) unlock(s->lock); <aggiunta del processo in s->qs> lock(s->lock); else s->value--; unlock(s->value); void v (semaphore *s) lock(s->lock); if(<s->qs non è vuota>) <Il primo processo in s->qs viene risvegliato e tolto dalla coda> else s->value++; unlock(s->lock); Semaforo mutex Il semaforo mutex, o binario o di mutua esclusione, può assumere solo i valori 0 o 1 e serve ad assicurare la mutua esclusione su una risorsa R. Utilizzo: p(&mutex); <sezione critica> v(&mutex); Thread in Java Ogni programma in Java ha almeno un thread, il main. Sono realizzabili in due modi: estendendo la classe Thread o, se la classe è già estesa, implementando l interfaccia Runnable. I threads appartenente allo stesso processo condividono le stesso spazio di indirizzamento, quindi hanno le stesse variabili globali ma diverse variabili locali. Possibile schema: public class SimpleThread extends Thread public SimpleThread() super(); public void run () <corpo programma eseguito da ogni thread di questa classe> public class 2Threads public static void main(string[] args) Sim plethread t1 = new Sim plethread(); t1.start(); // invoca il metodo run JVM La JVM è l interprete del linguaggio intermedio (bytecode), si tratta di una macchina virtuale m ultiprogrammata e che supporta il multithreading (NB: non tutti i sistemi multiprogrammati forniscono il supporto ai threads). Inoltre la JVM implementa i thread a livello utente o kernel in base alle caratteristiche del sistema operativo, rendendo i programmi indipendenti. 7/9

8 Variabili condizione Si tratta di uno strumento di sincronizzazione che permette ai threads di sospendere la propria esecuzione in attesa che sia soddisfatta una condizione logica. Ogni variabili condizione rappresenta una coda, senza stato, di thread sospesi volontariamente tramite la prim itiva wait e risvegliati con la signal. Tale meccanismo viene anche utilizzato in Java. Gestione I/O a controllo di programma Il processo applicativo per gestione dell input/output realizza le seguenti operazioni: 1) Prepara un comando 2) Inivia il comando 3) Attende la fine del comando, tramite un do; while (flag==0); detto ciclo di attesa attiva. 4) Controlla se tutti i dati sono stati inviati, altrimenti torna al punto (1) Come si vede dal punto (3), è il programma applicativo che si occupa di verificare lo stato dell operazione tramite i registri del controllore e, per questo motivo, viene chiamato a controllo di programma. Questo tipo di gestione non è adatta per un sistema m ultiprogrammato dove, per evitare le attese attive, un processo che per proseguire attende un particolare evento viene sospeso (tramite una context switch) e riattivato al termine di tale operazione. Gestione I/O basata su interruzioni Per evitare che il processo applicativo rimanga in attesa sul flag in maniera attiva, è possibile associare ad ogni dispositivo un semaforo inizializzato a 0 e sostituire al ciclo di attesa una wait su tale semaforo. In questo modo il processo si sospende quindi, quando sarà presente il dato nei registri del controllore, sarà lui stesso a notificare il processo applicativo e a risvegliarlo. Essendo il controllore un processo esterno in realtà non in esecuzione, è necessario affidare alla funzione di gestione delle interruzioni del dispositivo il compito di eseguire la signal sul semaforo e risvegliare il processo applicativo appena si verifica la transizione del flag da 0 a 1, tramite interrupt hardware. Per fare ciò è necessario abilitare il dispositivo alle interruzioni. Blocco critico Quando un processo A richiede una risorsa trattenuta da un processo B che è a sua volta in attesa di una risorsa del processo A (attesa circolare). I metodi del trattamente del blocco critico consistono nel prevenire, in maniera statica o dinamica il blocco, o individuare il blocco e successivamente ripristinare il corretto funzionamento. La prevenzione statica avviene m ediante 3 meccanismi: 1) Ogni processo dichiara all inizio le risorse che necessita e prosegue solo se sono tutte disponibili; 2) Nel m omento in cui un processo attende una risorsa, rilascia le proprie; 3) Sfruttare una gerarchia a livelli. La prevenzione dinamica si basa su algoritmi in grado di capire se si sta per verificare un blocco critico (es. algoritmo del banchiere) Synchronized in Java Quando si opera su un oggetto condiviso in mutua esclusione (sincronizzazione indiretta), è necessario usare la clausola synchronized. Si basa sul fatto che ad ogni oggetto la JVM associa un lock ed una entry set (insieme di threads in attesa del lock). La clausola si usa: Su un blocco: synchronized (obj) Su un m etodo di una classe: public synchronized nomefunzione () Concetto chiave: due metodi entrambi synchronized non possono essere eseguiti contemporaneamente sullo stesso oggetto. I due modi di utilizzo non sono indipendenti: un m etodo dichiarato synchronized in realtà è un metodo standard il cui intero corpo viene m esso all interno di un blocco synchronized(this), controllato dall oggetto su cui il m etodo viene eseguito. Un metodo synchronized può richiamare un altro metodo synchronized sullo stesso oggetto senza bloccarsi, per evitare il blocco critico. 8/9

9 Wait e Notify in Java All'interno di un blocco/metodo synchronized è possibile realizzare una sincronizzazione diretta tramite i m etodi: 1) wait(), che rilascia il lock sull oggetto, sospende il thread e lo inserisce nella wait set dell oggetto, che la JVM associa ad ogni oggetto (deve essere usato all interno di un try-catch (InterruptException e) ) 2) notify(), che sposta il thread dalla wait set alla entry set, in modo che possia riacquisire il lock ed eseguire; se la wait set dell oggetto è vuota: nessuna azione. 3) notifyall(), che porta nella entry set tutti i threads della wait set dell oggetto Il lock viene rilasciato solo al termine del blocco/metodo synchronized e la wait set trattiene i threads per un tempo massimo di time-out, dopo il quale essi vengono comunque risvegliati. Infine si noti che con la notifyall() è necessario inserire la wait all interno di un ciclo per valutare la condizione, visto che un semplice if non basterebbe. 9/9

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

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

CREAZIONE DI UN FILE

CREAZIONE DI UN FILE #include #include CREAZIONE DI UN FILE fd = creat(filename, mode); int fd, mode; char *filename; La primitiva creat crea un file, se non ne esiste uno col nome specificato, oppure

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

Interazione, sincronizzazione e comunicazione tra processi

Interazione, sincronizzazione e comunicazione tra processi Interazione, sincronizzazione e comunicazione tra processi Classificazione Processi interagenti processi interagenti/indipendenti due processi sono indipendenti se l esecuzione di ognuno non è in alcun

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

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

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

Chiamate di sistema per la Inter Process Communication (IPC) in POSIX. E.Mumolo, DEEI mumolo@units.it

Chiamate di sistema per la Inter Process Communication (IPC) in POSIX. E.Mumolo, DEEI mumolo@units.it Chiamate di sistema per la Inter Process Communication (IPC) in POSIX E.Mumolo, DEEI mumolo@units.it Pipe Cos'è un pipe? E' un canale di comunicazione che unisce due processi Caratteristiche: La più vecchia

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/03/07 Nota Questi lucidi sono tratti

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

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

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

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

Introduzione ai Device Drivers in Linux. E.Mumolo, DEEI mumolo@units.it

Introduzione ai Device Drivers in Linux. E.Mumolo, DEEI mumolo@units.it Introduzione ai Device Drivers in Linux E.Mumolo, DEEI mumolo@units.it 1 Device Drivers Moduli software che gestiscono le periferiche attraverso il file system Tutte le periferiche sono viste come file

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi II Semestre - Marzo/Giugno 2008 Matricole congr. 0 mod 3 File & Directory #include #include stat,fstat e lstat int stat (const char *pathname, struct stat *buf); int fstat (int

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

Fondamenti di Informatica T. Linguaggio C: File

Fondamenti di Informatica T. Linguaggio C: File Linguaggio C: File I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale.

Dettagli

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1) Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

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

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

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

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

Dettagli

Le system call: fork(), wait(), exit()

Le system call: fork(), wait(), exit() Le system call: fork(), wait(), exit() Di seguito viene mostrato un programma che fa uso di puntatori a funzione, nel quale si mette in evidenza il loro utilizzo. Programma A1 #include int add(a,b,c)

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

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

Sistemi Operativi. Modulo 1: Introduzione ai sistemi operativi

Sistemi Operativi. Modulo 1: Introduzione ai sistemi operativi Sistemi Operativi Modulo 1: Introduzione ai sistemi operativi Renzo Davoli Alberto Montresor Copyright Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free

Dettagli

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero ---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero delle variabili a cui possono essere assegnati gli indirizzi

Dettagli

Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata

Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata Supponiamo sempre di avere un ponte stretto che permette il passaggio delle auto solo in un verso per volta,

Dettagli

Programmazione di rete in Java

Programmazione di rete in Java Programmazione di rete in Java Reti di calcolatori Una rete di calcolatori è un sistema che permette la condivisione di dati informativi e risorse (sia hardware sia software) tra diversi calcolatori. Lo

Dettagli

MIPS Instruction Set 2

MIPS Instruction Set 2 Laboratorio di Architettura 15 aprile 2011 1 Architettura Mips 2 Chiamata a Funzione 3 Esercitazione Registri MIPS reference card: http://refcards.com/docs/waetzigj/mips/mipsref.pdf 32 registri general

Dettagli

APPLICAZIONI SU PIU FILE

APPLICAZIONI SU PIU FILE APPLICAZIONI SU PIU FILE Serve poter sviluppare applicazioni su piú file: - alcune funzioni e alcune definizioni di dati in un file - altre funzioni e dati in file diversi Perché?? 1. Se il programma è

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

Lezione 9: Strutture e allocazione dinamica della memoria

Lezione 9: Strutture e allocazione dinamica della memoria Lezione 9: Strutture e allocazione dinamica della memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 9 Maggio 2012 Allocazione dinamica della memoria Memoria dinamica È possibile creare

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

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, 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

Riferimenti ed Oggetti

Riferimenti ed Oggetti Riferimenti e oggetti Riferimenti ed Oggetti In non si possono definire variabili di tipo oggetto ma solo di tipo riferimento a oggetto. I riferimenti sono assimilabili ai tipi base. Allocazione statica

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Operazioni su Liste Doppie e Circolari 2 1 Indice Liste puntate semplici: Gli elementi sono

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

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

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura Struttura a record 2 File ad accesso diretto Il file è organizzato in record aventi tutti la stessa struttura e quindi dimensione record 0 record 1 record 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione

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

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

Installazione LINUX 10.0

Installazione LINUX 10.0 Installazione LINUX 10.0 1 Principali passi Prima di iniziare con l'installazione è necessario entrare nel menu di configurazione del PC (F2 durante lo start-up) e selezionare nel menu di set-up il boot

Dettagli

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); } import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO

Dettagli

Funzioni. Corso di Fondamenti di Informatica

Funzioni. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Funzioni Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e dei

Dettagli

Creare una applicazione Winsock di base

Creare una applicazione Winsock di base Creare una applicazione Winsock di base Usiamo le API Winsock incluse in Creare un progetto per una Socket Windows (in Dev C++) Selezionare la file New Projects Selezionare Empty Project Salvare

Dettagli

Classi ed Oggetti in JAVA

Classi ed Oggetti in JAVA Classi ed Oggetti in JAVA Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577233606 rigutini@dii.unisi.it www.dii.unisi.it/~rigutini/

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

GUIDA DELL UTENTE IN RETE

GUIDA DELL UTENTE IN RETE GUIDA DELL UTENTE IN RETE Memorizza registro di stampa in rete Versione 0 ITA Definizione delle note Nella presente Guida dell'utente viene utilizzata la seguente icona: Le note spiegano come intervenire

Dettagli

Le Liste. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Le Liste 1 / 31

Le Liste. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Le Liste 1 / 31 Le Liste Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Le Liste 1 / 31 Cos è una Lista Una lista è una collezione di elementi omogenei che: potrebbero

Dettagli

Il Sistema Operativo: il File System

Il Sistema Operativo: il File System Il Sistema Operativo: il File System Il File System è quella parte del S.O. che si occupa di gestire e strutturare le informazioni memorizzate su supporti permanenti (memoria secondaria) I file vengono

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

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

Gestione dinamica di una pila

Gestione dinamica di una pila Gestione dinamica di una pila Una pila o stack è una lista lineare a lunghezza variabile in cui inserimenti (push) ed estrazioni (pop) vengono effettuate ad un solo estremo, detto testa (top) della pila.

Dettagli

Elementi di semantica denotazionale ed operazionale

Elementi di semantica denotazionale ed operazionale Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

Controllori a Logica Programmabile. Cos è un PLC? Cenni storici. Cenni storici. Cenni storici. Definizione dallo Standard IEC 61131

Controllori a Logica Programmabile. Cos è un PLC? Cenni storici. Cenni storici. Cenni storici. Definizione dallo Standard IEC 61131 Controllori a Logica mabile Nella presente lezione vedremo le caratteristiche principali del controllore a logica programmabile (in inglese, mable Logic Controller, o PLC). In particolare, ci soffermeremo

Dettagli

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione Sede di Latina Corso di Laurea in Ingegneria dell Informazione Consorzio Nettuno La fase di realizzazione si occupa

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

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

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso

Dettagli

Perché se ho 4 GiB di RAM ne vedo di meno?

Perché se ho 4 GiB di RAM ne vedo di meno? Perché se ho 4 GiB di ne vedo di meno? di Matteo Italia (matteo@mitalia.net) Abstract In questo articolo mi propongo di spiegare perché utilizzando un sistema operativo a 32 bit su una macchina x86 con

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

Sottoprogrammi: astrazione procedurale

Sottoprogrammi: astrazione procedurale Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j

Dettagli

Routing (instradamento) in Internet. Internet globalmente consiste di Sistemi Autonomi (AS) interconnessi:

Routing (instradamento) in Internet. Internet globalmente consiste di Sistemi Autonomi (AS) interconnessi: Routing (instradamento) in Internet Internet globalmente consiste di Sistemi Autonomi (AS) interconnessi: Stub AS: istituzione piccola Multihomed AS: grande istituzione (nessun ( transito Transit AS: provider

Dettagli

R.Focardi Laboratorio di Ingegneria del Software 6. 1

R.Focardi Laboratorio di Ingegneria del Software 6. 1 Networking Java permette comunicazioni in rete basate sul concetto di socket, che permette di vedere la comunicazione in termini di flusso (stream), in modo analogo all input-output di file, usando Stream

Dettagli

HORIZON SQL CONFIGURAZIONE DI RETE

HORIZON SQL CONFIGURAZIONE DI RETE 1-1/9 HORIZON SQL CONFIGURAZIONE DI RETE 1 CARATTERISTICHE DI UN DATABASE SQL...1-2 Considerazioni generali... 1-2 Concetto di Server... 1-2 Concetto di Client... 1-2 Concetto di database SQL... 1-2 Vantaggi...

Dettagli

COSTER. Import/Export su SWC701. SwcImportExport

COSTER. Import/Export su SWC701. SwcImportExport SwcImportExport 1 Con SWC701 è possibile esportare ed importare degli impianti dal vostro database in modo da tenere aggiornati più Pc non in rete o non facente capo allo stesso DataBase. Il caso più comune

Dettagli

La protezione dai memory error exploit

La protezione dai memory error exploit Università degli Studi di Milano Sommario Introduzione 1 Stack Guard Terminator Canaries Random Canaries 2 3 Buffer Overflow Stack Guard Introduzione Buffer Overflow Condizione anomala. Memorizzazione

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

Verifica che una grammatica sia Context Free nel GrammaReader

Verifica che una grammatica sia Context Free nel GrammaReader Verifica che una grammatica sia Context Free nel GrammaReader Sommario Dispensa di Linguaggi di Programmazione Corrado Mencar Pasquale Lops In questa dispensa si descrivono alcune soluzioni per verificare

Dettagli

Programmazione Java: Variabili membro, Metodi La parola chiave final

Programmazione Java: Variabili membro, Metodi La parola chiave final Programmazione Java: Variabili membro, Metodi La parola chiave final romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave

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

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

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

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi alternative: function nome { lista-comandi } oppure nome ( ) {

Dettagli

Background (sfondo): Finestra: Una finestra serve a mostrare il contenuto di un disco o di una cartella -, chiamata anche directory.

Background (sfondo): Finestra: Una finestra serve a mostrare il contenuto di un disco o di una cartella -, chiamata anche directory. @ PC (Personal computer): Questa sigla identificò il primo personal IBM del 1981 a cura di R.Mangini Archiviazione: Il sistema operativo si occupa di archiviare i file. Background (sfondo): Cursore: Nei

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

Indirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili

Indirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili Indirizzo di una funzione 2 Puntatori a funzioni Ver. 2.4 Si può chiamare una funzione utilizzando l indirizzo di memoria dal quale inizia il codice eseguibile della funzione stessa L indirizzo di memoria

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

Gest ione di list e in C

Gest ione di list e in C Gest ione di list e in C Politecnico di Milano Sede di Cremona Gianpaolo Cugola Dipartimento di Elettronica e Informazione cugola@elet.polimi.it http://www.elet.polimi.it/~cugola Strutture dinamiche Gli

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

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

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

GESTIONE DELLA PROCEDURA

GESTIONE DELLA PROCEDURA Manuale di supporto all utilizzo di Sintel per Stazione Appaltante GESTIONE DELLA PROCEDURA Data pubblicazione: 17/06/2015 Pagina 1 di 41 INDICE 1. Introduzione... 3 1.1 Obiettivo e campo di applicazione...

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

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Introduzione alla programmazione ad oggetti a.a. 2008/2009 Claudio De Stefano 1 La programmazione modulare Un programma può essere visto come un insieme di moduli che

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

Guida all utilizzo del dispositivo USB

Guida all utilizzo del dispositivo USB Guida all utilizzo del dispositivo USB 30/04/2013 Sommario - Limitazioni di responsabilità e uso del manuale... 3 1. Glossario... 3 2. Guida all utilizzo del dispositivo USB... 4 2.1 Funzionamento del

Dettagli

Semplici Algoritmi di Ordinamento

Semplici Algoritmi di Ordinamento Fondamenti di Informatica Semplici Algoritmi di Ordinamento Fondamenti di Informatica - D. Talia - UNICAL 1 Ordinamento di una sequenza di elementi Esistono molti algoritmi di ordinamento. Tutti ricevono

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Linguaggio C: introduzione Il linguaggio C è un linguaggio general purpose sviluppato nel 1972 da Dennis Ritchie per scrivere il sistema operativo UNIX ed alcune applicazioni per un PDP-11. Il linguaggio

Dettagli

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

Dettagli