Sistemi Operativi II
|
|
- Erico Gagliardi
- 8 anni fa
- Visualizzazioni
Transcript
1 Sistemi Operativi II Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Viale del Policlinico, Rome - Italy m.bernaschi@iac.cnr.it
2 Inter Process Communication (IPC) I meccanismi di IPC permettono ad un processo di comunicare con un altro senza richiedere la condivisione di parti dello spazio di indirizzamento. Un utilizzo classico è quello della comunicazione serializzata con cui lo standad output di un primo processo diventa lo standard input di un secondo processo (pipe). Le pipe nella loro forma più elementare (anonymous) sono half-duplex Le named pipe sono molto più potenti: full-duplex; comunicazione in rete;... 2
3 Anonymous pipe in Win32 Per creare un anonymous pipe (unidirezionale): BOOL CreatePipe( PHANDLE hreadpipe, PHANDLE hwritepipe, LPSECURITY_ATTRIBUTES lppipeattributes, DWORD nsize); La pipe ha due handle: uno per la lettura ed uno per la scrittura. L argomento nsize indica la dimensione della pipe ma non è necessario specificare un effettivo valore. Si può usare il valore di default specificando 0. 3
4 Anonymous pipe in Win32 4
5 Se un processo intende comunicare con un altro processo dopo averlo creato, il meccanismo più semplice è definire come input handle del processo creato l handle hreadpipe. Le operazioni di lettura da un pipe handle sono bloccanti se la pipe è vuota. Il numero di byte letti è il minimo tra quello disponibile nella pipe e quello specificato nella ReadFile Un operazione di scrittura su una pipe è bloccante se la pipe è piena. esempio: pipe.c in chaptr11.c 5
6 Named pipe in Win32 Le named pipe sono un meccanismo molto più sofisticato di IPC. Le named pipe sono message-oriented, in altre parole un processo può leggere messaggi di lunghezza variabile nello stesso modo in cui sono stati inviati dal processo mittente. Le named pipe sono bidirezionali. Possono esserci più istanze indipendenti di una named pipe. Ad esempio più client possono comunicare con un singolo server usando la stessa pipe ed il server può rispondere ad un client usando la stessa istanza. Il nome della pipe può essere acceduto da sistemi in rete sebbene per questo tipo di comunicazione sia consigliabile l uso dei socket. 6
7 Per creare la prima istanza di una named pipe si utilizza la funzione: HANDLE CreateNamedPipe( LPCTSTR lpname, DWORD dwopenmode, DWORD dwpipemode, DWORD nmaxinstances, DWORD noutbuffersize, DWORD ninbuffersize, DWORD ndefaulttimeout, LPSECURITY_ATTRIBUTES lpsecurityattributes); solo i sistemi Windows 2000/2003/NT/XP possono invocare la CreateNamedPipe lpname deve essere nella forma \\.\pipe\pipename pipename può includere qualsiasi carattere escluso il backslash; 7
8 dwpipemode specifica se la scrittura è message-oriented o byte-oriented ; se la lettura è per messaggi o per blocchi; se le operazioni di lettura sono bloccanti; nmaxinstances specifica il numero massimo di istanze; ndefaulttimeout specifica il tempo di timeout (in millisecondi) per la WaitNamedPipe. È l unico caso in cui una funzione createxx specifica un timeout per un altra funzione; il processo invocante viene in genere indicato come server; i processi client (che, come detto, possono essere su altri sistemi) aprono la pipe con la CreateFile; cancellare l ultima istanza di una named pipe cancella la pipe stessa. 8
9 Un client si collega alla named pipe invocando CreateFile sul nome della pipe. se il client è locale il nome è esattamente lo stesso usato per lpname \\.\pipe\pipename se il server è su un altro sistema, il nome da utilizzare è: \\servername\pipe\pipename 9
10 10
11 Le funzioni GetNamedPipeHandleState e SetNamedPipeHandleState permettono, rispettivamente, di ottenere e definire le caratteristiche di una named pipe. 11
12 Il processo che crea una named pipe può rimanere in attesa della connessione sulla pipe da parte di un client con la funzione: BOOL ConnectNamedPipe( HANDLE hnamedpipe, LPOVERLAPPED lpoverlapped); Se lpoverlapped è NULL, la funziona ritorna non appena c è la connessione da parte di un client. il valore di ritorno dipende dal momento in cui è arrivata la connessione rispetto al momento dell invocazione della funzione. Le operazioni di lettura e scrittura avvengono con le normali ReadFile e WriteFile. La funzione BOOL WaitNamedPipe( LPCTSTR lpnamedpipename, DWORD ntimeout); 12
13 è invece utilizzata da un client per sincronizzarsi con il server. La funzione ritorna non appena il server invoca la ConnectNamedPipe. Notare che la funzione fallisce se il server non ha ancora creato la pipe. 13
14 Funzioni avanzate per le named pipe La comune sequenza WriteFile, ReadFile può essere vista come una singola transazione e Win32 fornisce una funzione specifica per questo scopo: BOOL TransactNamedPipe( HANDLE hnamedpipe, LPVOID lpinbuffer, DWORD ninbuffersize, LPVOID lpoutbuffer, DWORD noutbuffersize, LPDWORD lpbytesread, LPOVERLAPPED lpoverlapped); notare come venga ritornato il numero di byte letti in lpbytesread. Questa funzione offre anche un miglioramento delle prestazioni rispetto all utilizzo della coppia WriteFile, ReadFile. 14
15 Per ottenere una forma ancora più compatta può essere utilizzata la BOOL CallNamedPipe( LPCTSTR lpnamedpipename, LPVOID lpinbuffer, DWORD ninbuffersize, LPVOID lpoutbuffer, DWORD noutbuffersize, LPDWORD lpbytesread, DWORD ntimeout); Questa funzione è sincrona mentre la precedente offre la possibilità di effettuare I/O asincrono (usando la struttura lpoverlapped). 15
16 La funzione BOOL PeekNamedPipe( HANDLE hnamedpipe, LPVOID lpbuffer, DWORD nbuffersize, LPDWORD lpbytesread, LPDWORD lptotalbytesavail, LPDWORD lpbytesleftthismessage); Legge byte o messaggi (a seconda della modalità) dalla pipe senza rimuovere i dati. Una successiva lettura con ReadFile trova gli stessi dati. questa funzione non è bloccante la disponibilità di dati nella pipe è segnalata da un valore diverso da zero per *lptotalbytesavail lpbytesleftthismessage indica, come valore di ritorno, il numero di byte in un messaggio che non possono essere letti 16
17 perché il valore nbuffersize è troppo piccolo. Questo valore è zero per una pipe in byte mode. I tipici attributi di sicurezza di una named pipe sono GENERIC READ, GENERIC WRITE e SYNCHRONIZE che permette ad un thread di rimanere in attesa sulla pipe. 17
18 Pipe in Unix/Linux Le pipe sono state la prima forma di IPC in Unix. half-duplex; possono essere utilizzate solo tra processi che hanno un antenato comune. 1. il processo A crea una pipe; 2. il processo A chiama fork e crea il processo B; 3. la pipe è utilizzata per la comunicazione tra A e B. Per creare una pipe: #include <unistd.h> int pipe(int filedes[2]); filedes[0] è aperto in lettura mentre filedes[1] è aperto in scrittura. 18
19 Se il flusso dei dati è da A verso B, A chiude filedes[0] e B chiude filedes[1]. Se il flusso dei dati è da B verso A, A chiude filedes[1] e B chiude filedes[0]. esempi: apue/ipc/pipe1.c e apue/ipc/pipe2.c. La pipe è riconosciuta come un tipo di file speciale (FIFO). Nel caso Unix/Linux l associazione tra un estremo della pipe e lo standard input o output di un processo deve essere fatta dal processo stesso. La read da una pipe il cui estremo di scrittura è stato chiuso ritorna 0. Se si cerca di scrivere su una pipe il cui estremo di lettura è stato chiuso, viene inviato un SIGPIPE al processo invocante. 19
20 Funzioni popen e pclose La libreria di I/O standard in Unix/Linux offre la possibilità di combinare la creazione di un processo, la creazione di una pipe per comunicare con il nuovo processo e l esecuzione di un programma da parte di questo nuovo processo #include <stdio.h> FILE *popen(const char *command, const char *type); popen invoca fork ed exec per eseguire command se type è uguale a r, il file pointer ritornato è connesso allo standard output di command. se type è uguale a w, il file pointer ritornato è connesso allo standard input di command. Notare come questa funzione a differenza di fopen non è parte 20
21 della libreria C standard. Notare inoltre che command è eseguito come sh -c command questo permette, ad esempio, l espansione di caratteri speciali (*). La funzione int pclose(file *stream); chiude il file stream, attende la terminazione del comando e ritorna lo stato di terminazione della shell che ha eseguito il comando. Una possibile implementazione di popen è in apue/lib.rhlin/popen.c esempio: filtro per la conversione maiuscole/minuscole: apue/ipc/popen1.c 21
22 Coprocessi e named pipe in Unix/Linux Utilizzando due pipe semplici è possibile collegare lo standard input e lo standard output di un processo ad un altro. esempio: apue/ipc/pipe4.c e apue/ipc/add2.c È necessario fare attenzione ai meccanismi di buffering della libreria di I/O standard. esempio: apue/ipc/add2stdio.c Come in Win32, è possibile utilizzare in Unix/Linux delle named pipe o FIFO Le FIFO permettono la comunicazione anche tra processi del tutto indipendenti Creare una FIFO è simile a creare un file: #include <sys/types.h> 22
23 #include <sys/stat.h> int mkfifo (const char *pathname, mode_t mode); i valori possibili per mode sono gli stessi della open; si applicano anche gli stessi concetti di ownership. Una volta che è stata creata con mkfifo, la FIFO deve essere acceduta con le funzioni di I/O open, close, read, write, unlink,... Il comportamento quando si cerca di scrivere ma nessun processo tiene aperta la FIFO in lettura oppure quando l ultimo processo scrittore chiude la FIFO e si cerca di leggere è lo stesso delle pipe semplici. Le FIFO possono essere usate da: comandi di shell per passare dati da una pipeline ad un altra senza creare file temporanei; 23
24 consideriamo il caso in cui sia necessario processare un certo flusso con due diversi filtri: mkfifo fifo1 prog3 < fifo1 & prog1 < input_file tee fifo1 prog2 24
25 in un applicazione client-server. più client possono contattare un server su una singola well known FIFO; il server è però costretto ad utilizzare una FIFO per ogni client per inviare le risposte. 25
26 Altre tecniche di IPC Esistono altre tecniche di IPC sia in Win32 che in Unix/Linux In Win32 ricordiamo le mailslot meccanismo di broadcast; comunicazione unidirezionale; possono essere distribuite in rete; un messaggio inviato da un client può essere letto da tutti i server. Tutti i server ricevono lo stesso messaggio. In Unix/Linux ricordiamo le message queue lista linkata di messaggi mantenuta nel kernel; è possibile accedere i messaggi in qualsiasi ordine (non necessariamente FIFO). 26
27 Semafori in Unix/Linux Un semaforo è un contatore usato per permettere l accesso a dati condivisi da più processi. Per ottenere l accesso un processo: 1. controlla il valore del semaforo che controlla la risorsa condivisa; 2. se il valore del semaforo è positivo, l accesso è possibile. Il processo decrementa il valore del semaforo per indicare che sta usando un unità della risorsa; 3. se il valore del semaforo è zero, il processo va dormire fino a quando il valore del semaforo non diventa più grande di zero. Quando il processo viene svegliato, ritorna al punto 1; ovviamente il test sul valore del semaforo ed il decremento devono essere eseguiti come un operazione atomica. 27
28 4. quando il processo ha finito di utilizzare la risorsa, incrementa il valore del semaforo di 1. Un tipo molto utilizzato di semaforo è quello binario (controlla una singola risorsa ed è inizializzato ad uno) In Unix i semafori, originariamente implementati nel System V, sono piuttosto macchinosi da utilizzare: #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> int semget(key_t key, int nsems, int semflg); int semctl(int semid, int semnum, int cmd, union semun arg); la key è un tipo definito in <sys/types.h> (un int in Linux, vedi /usr/include/bits/types.h); per condividere un semaforo è possibile utilizzare diverse tecniche: 28
29 un processo crea il semaforo (semget) con la chiave IPC PRIVATE e rende poi disponibile l identificatore ritornato; i processi concordano una chiave (esplicitamente oppure usando la funzione ftok); semflg assolve lo stesso compito (e può assumere gli stessi valori) dell argomento flag nella open; semun è descritto in /usr/include/bits/sem.h ma deve essere definito dall applicazione! l argomento cmd della semctl può assumere 10 valori!; la semctl è tipicamente utilizzata per inizializzare il semaforo (comando SETVAL). Per le operazioni sul semaforo viene utilizzata la: int semop(int semid, struct sembuf *sops, unsigned nsops); la struct sembuf è definita in /usr/include/linux/sem.h 29
30 esempio: apue/lib.rhlin/semaph.c il campo sem op della struttura sembuf assume valori: positivi per rilasciare risorse. Il valore di sem op è aggiunto al valore del semaforo; negativi per ottenere risorse. Se il valore del semaforo è più grande o uguale al valore assoluto di sem op, questo viene sottratto al valore del semaforo. Se il valore del semaforo è più piccolo, il processo è messo a dormire (a meno che non venga specificato il flag IPC NOWAIT). se sem op è zero, il processo rimane in attesa fino a quando il valore del semaforo non diventa 0. Da notare un serio problema di principio nell API per i semafori: la creazione di un semaforo è indipendente dalla sua inizializzazione. Non è possibile creare atomicamente un semaforo ed inizializzarlo 30
31 ad un valore dato. 31
32 Shared Memory IPC in Unix/Linux Oltre al meccanismo di condivisione offerto dalla funzione mmap, in molti sistemi Unix (soprattutto quelli derivanti dal System V) ed in Linux è possibile per più processi condividere un segmento dello spazio di indirizzamento in modo che faccia riferimento allo stesso blocco di memoria. La prima funzione da invocare per utilizzare questo meccanismo è #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> int shmget(key_t key, int size, int shmflg); il significato del parametro key è lo stesso descritto in precedenza per il caso dei semafori; size indica la dimensione minima del segmento. Se si fa 32
33 riferimento ad un segmento esistente è possibile specificare come valore 0. Normalmente la dimensione del segmento è arrotondata ad un multiplo del PAGE SIZE; flag ha lo stesso utilizzo che nel caso dei semafori (permessi...). Esistono limiti sia sulla dimensione che sul numero di segmenti che possono essere creati con questa primitiva (SHMALL, SHMMAX, SHMMNI,..., vedi /usr/include/linux/shm.h.) Un processo può attaccare un segmento al proprio spazio di indirizzamento con la funzione: #include <sys/types.h> #include <sys/types.h> #include <sys/shm.h> void *shmat(int shmid, const void *shmaddr, int shmflg) Come nel caso della mmap è consigliabile specificare 0 come 33
34 valore per shmaddr, cioè per l indirizzo al quale verrà attaccato il segmento. In questo caso è il sistema operativo a scegliere un indirizzo opportuno. Sempre in analogia alla mmap, il valore di ritorno in caso di fallimento è 1. Per rimuovere dallo spazio di indirizzamento di un processo un segmento si utilizza la int shmdt(const void *shmaddr). La funzione: #include <sys/types.h> #include <sys/types.h> #include <sys/shm.h> int shmctl(int shmid, int cmd, struct shmid_ds *buf); permette di effettuare un certo numero di operazioni sul segmento a seconda del valore di cmd. In particolare è possibile sapere quanti processi hanno il segmento attaccato nel proprio 34
35 spazio di indirizzamento usando il valore IPC STAT per cmd. La struttura shmid ds è definita in /usr/include/bits/shm.h. esempio: apue/ipc/tshm.c 35
36 36
L API socket ed i daemon
L API socket ed i daemon Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Viale del Policlinico, 137-00161 Rome - Italy http://www.iac.cnr.it/
DettagliCorso di Laboratorio di Sistemi Operativi
Corso di Laboratorio di Sistemi Operativi Lezione 6 Alessandro Dal Palù email: alessandro.dalpalu@unipr.it web: www.unipr.it/~dalpalu Interazione tra Processi I processi concorrenti possono interagire
DettagliInterprocess Communications - II. Franco Maria Nardini
Interprocess Communications - II Franco Maria Nardini XSI IPC Tre tipi di IPC introdotti da System V: semafori shared memory code di messaggi Comunicazioni tra processi su stesso host Tutte consentono
DettagliIPC System V. Code di messaggi
IPC System V Code di messaggi Panoramica coda di messaggi una lista concatenata di messaggi, FIFO semaforo un contatore condiviso, atomicamente modificabile memoria condivisa uno spazio di memoria accessibile
DettagliI/O su Socket TCP: read()
I/O su Socket TCP: read() I socket TCP, una volta che la connessione TCP sia stata instaurata, sono accedibili come se fossero dei file, mediante un descrittore di file (un intero) ottenuto tramite una
DettagliLaboratorio di Sistemi Operativi
Le FIFO pipe vs fifo la pipe può essere usata solo tra processi "imparentati" (che hanno un antenato comune che ha creato la pipe) la fifo consente di scambiare dati tra processi qualsiasi 2 1 FIFO (named
DettagliCREAZIONE PROCESSI IN UNIX 20
CREAZIONE PROCESSI IN UNIX 20 STRUTTURE DATI PER PROCESSI Un processo puo' essere in escuzione in 2 modi: kernel e utente. Un processo ha almeno 3 regioni: codice, dati e stack Lo stack è allocato dinamicamente.
DettagliSistemi Operativi (modulo di Informatica II)
Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2008-09 Sommario Processi cooperanti La comunicazione tra processi Necessità
DettagliDigressione: man 2...
Syscall File I/O Digressione: man 2... Le funzioni della libreria standard UNIX associate alle system call di Linux sono documentate nella sezione 2 di man e.g.: man 2 open Ogni manpage di system call
DettagliInter-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).
DettagliI Socket. Laboratorio Software 2008-2009 M. Grotto R. Farina
M. Grotto R. Farina Sommario 1. Applicazioni Distribuite 2. I Socket Introduzione Interfacce e protocolli Descrizione Stile di comunicazione Namespace e protocollo Include e system call Creazione e chiusura
DettagliFile I/O. M. R. Guarracino: File I/O 1
File I/O M. R. Guarracino: File I/O 1 File I/O Gran parte delle operazioni su file in ambiente UNIX possono essere eseguite utilizzando solo cinque funzioni: open read write lseek close M. R. Guarracino:
DettagliInter 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
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
DettagliPronto 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
DettagliLab. di Sistemi Operativi - Esercitazione n 9- -Thread-
Lab. di Sistemi Operativi - Esercitazione n 9- -Thread- 1 Sommario Esercizi su: Comunicazione tra processi: la funzione pipe() Condivisione dati e codice tra due o più processi: concetto di Thread 2 -
DettagliIntroduzione 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
DettagliEsercitazione [8] Pipe e FIFO
Esercitazione [8] Pipe e FIFO Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo Multi-Nodo
DettagliSistemi 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
DettagliDall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni
Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere
DettagliFiles, File I/O, File Sharing. Franco Maria Nardini
Files, File I/O, File Sharing Franco Maria Nardini UNIX file types UNIX non richiede una struttura interna del file. Dal punto di vista del sistema operativo c e un solo tipo di file. Struttura e interpretazione
DettagliDefinizione 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
DettagliI 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)?
DettagliSistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi
Sistemi Operativi Lez. 13: primitive per la concorrenza monitor e messaggi Osservazioni I semafori sono strumenti particolarmente potenti poiché consentono di risolvere ogni problema di sincronizzazione
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16. Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16 Pietro Frasca Lezione 15 Martedì 24-11-2015 Struttura logica del sottosistema di I/O Processi
DettagliComputazione 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:
DettagliMODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it
MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo
DettagliGestione 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
DettagliJ+... J+3 J+2 J+1 K+1 K+2 K+3 K+...
Setup delle ConnessioniTCP Una connessione TCP viene instaurata con le seguenti fasi, che formano il Three-Way Handshake (perchè formato da almeno 3 pacchetti trasmessi): 1) il server si predispone ad
DettagliIl 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:
DettagliLink e permessi. Corso di Laurea Triennale in Ingegneria delle TLC e dell Automazione. Corso di Sistemi Operativi A. A. 2005-2006
Corso di Laurea Triennale in Ingegneria delle TLC e dell Automazione Corso di Sistemi Operativi A. A. 2005-2006 Link e permessi Link Un riferimento ad un file è detto link Ogni file può avere un numero
DettagliTransmission Control Protocol
Transmission Control Protocol Franco Callegati Franco Callegati IC3N 2000 N. 1 Transmission Control Protocol - RFC 793 Protocollo di tipo connection-oriented Ha lo scopo di realizzare una comunicazione
DettagliInizializzazione, Assegnamento e Distruzione di Classi
Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della
DettagliSistemi 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
DettagliEsercizio 2. Client e server comunicano attraverso socket TCP
Esercizio 1 Scrivere una applicazione client/server in cui: Il client, in un ciclo infinito: Legge una stringa da standard input Invia al processo server la stringa. Il server visualizza: L'IP da cui si
DettagliStrutturazione 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
DettagliCapitolo 2 -- Silberschatz
Struttura dei Sistemi Operativi Capitolo 2 -- Silberschatz Struttura di un sistema operativo Servizi di un sistema operativo Interfaccia Utente Chiamate di sistema Tipi di chiamate Programma di sistema
DettagliStruttura di un sistema operativo. Struttura dei Sistemi Operativi. Servizi per l utente generico. Servizi per l utente generico
Impossibile visualizzare l'immagine. Struttura di un sistema operativo Struttura dei Sistemi Operativi Servizi di un sistema operativo Interfaccia Utente Capitolo 2 -- Silberschatz Chiamate di sistema
DettagliTipi 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
DettagliLeggere un messaggio. Copyright 2009 Apogeo
463 Leggere un messaggio SyllabuS 7.6.3.3 Per contrassegnare un messaggio selezionato puoi fare clic anche sulla voce di menu Messaggio > Contrassegna messaggio. Marcare, smarcare un messaggio I messaggi
DettagliCorso 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
Dettagli2. I THREAD. 2.1 Introduzione
2. I THREAD 2.1 Introduzione Il tipo di parallelismo che è opportuno avere a disposizione nelle applicazioni varia in base al grado di cooperazione necessaria tra le diverse attività svolte in parallelo:
DettagliRecord locking con la system call fcntl
Record locking con la system call fcntl Il record locking è un metodo per disciplinare la cooperazione tra processi. Permette ad un processo di poter accedere ad un file in modo esclusivo. È utile quindi
DettagliUniversità 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 22 Martedì 7-1-2014 1 System Call per l'uso dei segnali Un processo che
DettagliSISTEMI OPERATIVI THREAD. Giorgio Giacinto 2013. Sistemi Opera=vi
SISTEMI OPERATIVI THREAD 2 Mo*vazioni» Un programma complesso può eseguire in modo concorrente più funzioni agraverso la creazione e ges=one di processi figli agraverso il meccanismo dei thread» La creazione
DettagliLaboratorio di Sistemi Operativi Marzo-Giugno 2008 Matricole congrue 0 mod 3
Marzo-Giugno 2008 Matricole congrue 0 mod 3 IPC: Memoria condivisa e Semafori Memoria Condivisa Permette a due o più processi di condividere una zona di memoria È l IPC più veloce perché in questo caso
DettagliStrutture. 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
DettagliAprire WEKA Explorer Caricare il file circletrain.arff Selezionare random split al 66% come modalità di test Selezionare J48 come classificatore e
Alberi di decisione Aprire WEKA Explorer Caricare il file circletrain.arff Selezionare random split al 66% come modalità di test Selezionare J48 come classificatore e lanciarlo con i parametri di default.
DettagliScheduling 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
DettagliCenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it
Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale
DettagliIl 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
DettagliSistemi 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
DettagliCapitolo 5: I thread
Capitolo 5: I thread Generalità. Modelli multithread. Problematiche relative ai thread. Pthread. 5.1 I thread Il thread è un flusso di controllo relativo ad un dato processo. Molti sistemi operativi moderni
DettagliGestione Risorse Umane Web
La gestione delle risorse umane Gestione Risorse Umane Web Generazione attestati di partecipazione ai corsi di formazione (Versione V03) Premessa... 2 Configurazione del sistema... 3 Estrattore dati...
DettagliDrivers. Introduzione Tipologie Struttura Interazione con il kernel
Drivers Introduzione Tipologie Struttura Interazione con il kernel Driver Un driver è un modulo del sistema operativo Esterno al kernel Dedicato alla gestione di una specifica periferica Come altre funzionalità
DettagliCapitolo 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
DettagliIntroduzione alle tecnologie informatiche. Strumenti mentali per il futuro
Introduzione alle tecnologie informatiche Strumenti mentali per il futuro Panoramica Affronteremo i seguenti argomenti. I vari tipi di computer e il loro uso Il funzionamento dei computer Il futuro delle
DettagliSoluzione dell esercizio del 2 Febbraio 2004
Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo
DettagliTesti di Esercizi e Quesiti 1
Architettura degli Elaboratori, 2009-2010 Testi di Esercizi e Quesiti 1 1. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica
DettagliI 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à
DettagliProgrammazione dei socket con TCP #2
I Il Server e il Client si scambiano messaggi attraverso la rete mediante un dell API (Application Programming Interface) Telematica II 10. Esercitazione/Laboratorio 3 Server ports Clients user space Socket
DettagliFunzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
DettagliIstituto Centrale per il Catalogo Unico delle Biblioteche Italiane. e per le Informazioni bibliografiche. Manuali utente per SBN WEB. Versione 1.
Istituto Centrale per il Catalogo Unico delle Biblioteche Italiane e per le Informazioni bibliografiche Manuali utente per SBN WEB Versione 1.0 Produzione editoriale Vers. 1.0 27/09/2013 Pagina 1 Sommario
DettagliSincronizzazione e comunicazione tra processi in Unix. usati per trasferire ad un processo l indicazione che un determinato evento si è verificato.
Processi parte III Sincronizzazione e comunicazione tra processi in Unix Segnali: usati per trasferire ad un processo l indicazione che un determinato evento si è verificato. Pipe: struttura dinamica,
DettagliLaboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014
Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Funzioni: Dichiarazione e Definizione La dichiarazione di una funzione serve a comunicare al compilatore quali sono
DettagliPer scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli
CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per
DettagliLaboratorio 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
DettagliInvio SMS. DM Board ICS Invio SMS
Invio SMS In questo programma proveremo ad inviare un SMS ad ogni pressione di uno dei 2 tasti della DM Board ICS. Per prima cosa creiamo un nuovo progetto premendo sul pulsante (Create new project): dove
DettagliMac Application Manager 1.3 (SOLO PER TIGER)
Mac Application Manager 1.3 (SOLO PER TIGER) MacApplicationManager ha lo scopo di raccogliere in maniera centralizzata le informazioni piu salienti dei nostri Mac in rete e di associare a ciascun Mac i
DettagliJava Virtual Machine
Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina
DettagliDatabase. Si ringrazia Marco Bertini per le slides
Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida
DettagliCOLLI. Gestione dei Colli di Spedizione. Release 5.20 Manuale Operativo
Release 5.20 Manuale Operativo COLLI Gestione dei Colli di Spedizione La funzione Gestione Colli consente di generare i colli di spedizione in cui imballare gli articoli presenti negli Ordini Clienti;
DettagliPROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara
LICEO SCIENTIFICO STATALE "FILIPPO LUSSANA" V i a A n g e l o Ma j, 1 2 4 1 2 1 B E R G A M O 035 237502 Fax: 035 236331 Sito e contatti: www.liceolussana.com Codice fiscale: 80026450165 PROGRAMMA SVOLTO
DettagliReti di Telecomunicazione Lezione 8
Reti di Telecomunicazione Lezione 8 Marco Benini Corso di Laurea in Informatica marco.benini@uninsubria.it Livello di trasporto Programma della lezione relazione tra lo strato di trasporto e lo strato
DettagliCAPITOLO 27 SCAMBIO DI MESSAGGI
CAPITOLO 27 SCAMBIO DI MESSAGGI SCAMBIO DI MESSAGGI Sia che si guardi al microkernel, sia a SMP, sia ai sistemi distribuiti, Quando i processi interagiscono fra loro, devono soddisfare due requisiti fondamentali:
DettagliSistemi 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
DettagliCorso di Sistemi Operativi A.A. 2008-2009 - CHIAMATE DI SISTEMA PER IL CONTROLLO DEI PROCESSI. Fabio Buttussi
Corso di Sistemi Operativi A.A. 2008-2009 - CHIAMATE DI SISTEMA PER IL CONTROLLO DEI PROCESSI Fabio Buttussi La programmazione di sistema Il kernel è la parte di Unix che corrisponde al sistema operativo
DettagliCorso di Informatica
Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down
DettagliCoordinazione 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,
DettagliT 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
DettagliIntroduzione al Linguaggio C
Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C
DettagliTRANSAZIONI. Una transazione è una successione di operazioni che si può concludere con successo o con insuccesso.
Una transazione è una successione di operazioni che si può concludere con successo o con insuccesso. Nel caso di successo, i risultati delle operazioni effettuate devono essere resi definitivi; invece,
DettagliImpostazione dell'indirizzo IP del dispositivo di autenticazione di Xerox Secure Access Unified ID System Carta bianca
Impostazione dell'indirizzo IP del dispositivo di autenticazione di Xerox Secure Access Unified ID System Copyright 2007 Xerox Corporation. Tutti i diritti riservati. XEROX e Secure Access Unified ID System
DettagliLa gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni
La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.
DettagliEsercitazione [5] Input/Output su Socket
Esercitazione [5] Input/Output su Socket Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo
DettagliOrganizzazione Monolitica
Principali componenti di un sistema Applicazioni utente Interprete di comandi (shell) Interfaccia grafica (desktop) Gestore del processore / Scheduler(s) Gestore della memoria Gestore delle periferiche/
DettagliFPf per Windows 3.1. Guida all uso
FPf per Windows 3.1 Guida all uso 3 Configurazione di una rete locale Versione 1.0 del 18/05/2004 Guida 03 ver 02.doc Pagina 1 Scenario di riferimento In figura è mostrata una possibile soluzione di rete
Dettagli10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.
ESERCIZIARIO Risposte ai quesiti: 10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. 10.2. Un numero intero in Java è compreso nell'intervallo ( 2 31 ) e (2 31
DettagliSommario. G. Piscitelli
Sommario Interprocess Communication Processi (e thread) cooperanti Il paradigma produttore-consumatore Shared Memory e Inter Process Communication (IPC) facility Proprietà caratteristiche della comunicazione
DettagliArchitettura di un sistema operativo
Architettura di un sistema operativo Dipartimento di Informatica Università di Verona, Italy Struttura di un S.O. Sistemi monolitici Sistemi a struttura semplice Sistemi a livelli Virtual Machine Sistemi
DettagliDigressione: man (2)...
Syscall File I/O Digressione: man (2)... Le funzioni della libreria standard UNIX associate alle system call di Linux sono documentate nella sezione 2 di man e.g.: man 2 open Ogni manpage di system call
DettagliApproccio 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
DettagliAXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema
AXO Architetture dei Calcolatori e Sistema Operativo programmazione di sistema Il sistema operativo Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel
DettagliTelematica II 17. Esercitazione/Laboratorio 6
Multitasking e Multithreading Telematica II 17. Esercitazione/Laboratorio 6 Multitasking si riferisce all abilità di un computer di eseguire processi (jobs) multipli in maniera concorrente si ricorda che
DettagliCon 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
DettagliInterprocess Communications. Franco Maria Nardini
Interprocess Communications Franco Maria Nardini Pipe cat pippo.txt less sort pluto.txt uniq -c less è il metodo più datato di IPC in UNIX half-duplex POSIX.1 consente full-duplex half-duplex sempre per
DettagliCapitolo 13. Interrogare una base di dati
Capitolo 13 Interrogare una base di dati Il database fisico La ridondanza è una cosa molto, molto, molto brutta Non si devono mai replicare informazioni scrivendole in più posti diversi nel database Per
DettagliInformatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1)
Informatica 3 LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1) Modulo 1: Introduzione: oggetti e classi Modulo 2: Link e associazioni Modulo 3: Aggregazione Informatica 3 Lezione 7 -
DettagliIl File System. Il file system
Il File System Il file system Parte di SO che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria di massa Realizza i concetti astratti di file:
DettagliRegione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da
ARPA Fonte Dati Regione Toscana Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.0 Data emissione 06/08/13 Stato DRAFT 1 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 2 Sommario
Dettagli