Processi parte IV. Processi parte IV
|
|
|
- Mariangela Baldi
- 9 anni fa
- Visualizzazioni
Transcript
1 Processi parte IV Processi parte IV Grafi di precedenza Sincronizzazione dei processi Unix mediante: fork-join cobegin-coend semafori
2 Grafi di precedenza Un grafo di precedenza è un grafo diretto aciclico dove i nodi rappresentano attività sequenziali e gli archi, ad esempio dal nodo i al nodo j, indicano l ordine in cui devono essere completate le attività (l attività i deve essere completata prima che l attività j possa partire). Un nodo in un grafo di precedenza potrebbe essere: Un task software Un insieme di istruzioni all interno di un programma che possono essere eseguite in modo concorrente Attività che hanno luogo durante l esecuzione di una singola istruzione macchina. Grafi di precedenza A seconda della dimensione di queste attività concorrenti si parla di granularità di concorrenza della rappresentazione: Coarse granularity: concorrenza a livello di task di sistema operativo Fine granularity: concorrenza a livello di singola istruzione o gruppo di istruzioni Very fine granularity: concorrenza nell hardware durante l esecuzione della singola istruzione
3 Esempio Si supponga di avere il seguente programma sequenziale: a := x + y; /* Statement s1 */ b := z + 1; /* Statement s2 */ c := a - b; /* Statement s3 */ w := c + 1; /* Statement s4 */ d := a + e; /* Statement s5 */ w := w * d; /* Statement s6 */ Esempio Il grafo di precedenza della slide precedente potrebbe essere eseguito usando due processori Un processore potrebbe eseguire in ordine S1, S5 e S6 Il secondo processore S2, S3 e S4 I due processori dovrebbero sincronizzarsi in modo tale da eseguire S3 dopo S2 e S6 dopo S4 Questo grafo di precedenza è quello che più parallelizza le attività di un dato programma: Le sole dipendenze che appaiono nel grafo sono quelle richieste dalla logica del programma
4 Sincronizzazione Un linguaggio di alto livello per la programmazione concorrente deve fornire un insieme di costrutti linguistici che permettano di dichiarare, creare, attivare e terminare processi sequenziali. Due esempi di costrutti per la creazione/terminazione di processi sono fork/join e cobegin/coend N.B. anche se simile alla system call fork() di UNIX, la fork del costrutto fork/join è concettualmente diversa: si tratta di una istruzione di un ipotetico linguaggio concorrente di alto livello. Fork-join Fork e Join furono introdotte nel 1963 da Dennis e VanHorne. Quando viene eseguita l istruzione: Fork(label); dal programma in esecuzione è generato un secondo processo a partire dall etichetta specificata nell istruzione. I due processi procedono in parallelo. Quando viene eseguita l istruzione: Join(count); (dove cont è una variabile intera non negativa) il valore di cont è decrementato; se il valore risultante è positivo il processo che ha eseguito la join è terminato
5 Grafi di precedenza e fork-join Qualunque grafo di precedenza può essere espresso in termini di fork e join senza perdita di concorrenza. N.B. Qualunque grafo di precedenza può essere eseguito come programma sequenziale a scapito della concorrenza. Esempio 1
6 Esempio 2 Esempio 3
7 Join tra processi join tra coppie di processi; la sintassi di questo tipo di join è: join P dove P è un identificatore di processo (restituito dalla fork al padre quando viene creato un nuovo processo). L'esecuzione di questa istruzione fa in modo che il processo chiamante si sospenda in attesa della terminazione del processo con identificatore P (simile alla system call wait() di Unix). Esempio A var P1, P2 : process; procedure E1; begin C;F; end D B G E C begin A; P1 := fork E1; F B; P2 := fork E; D; join P1; join P2; G; end
8 Sincronizzazione di processi UNIX S1 fork() P34 fork() S2 S3 S4 wait() wait() S5 Sincronizzazione di processi UNIX #include <sys/types.h> #include <sys/wait.h> main() { pid_t childpid; } printf( "parent - S1 - pid = %d\n", getpid() ); if ( ( childpid = fork() ) == -1 ) err_sys( "can't fork" ); if ( childpid == 0 ){ printf( "child: child pid = %d, parent pid = %d\n", getpid(), getppid() ); P34();
9 Sincronizzazione di processi UNIX else { printf( "parent - S2 - pid = %d\n", getpid() ); printf( parent: child pid = %d, parent pid = %d\n", childpid, getpid() ); printf( "wait - P34 - \n" ); while ( wait( (int *)0 )!= childpid ); /* wait for child termination */ printf( "parent - S5 - pid = %d/n", getpid() ); exit( 0 ); } } Sincronizzazione di processi UNIX P34() { pid_t pid4; } printf( "fork - P34 - \n" ); if ( ( pid4 = fork() ) == -1 ) err_sys( "can't fork" ); if ( pid4 == 0 ){ printf( "- S4 - pid = %d, parent pid = %d\n", getpid(), getppid() ); }
10 Sincronizzazione di processi UNIX else { printf( "- S3 - pid = %d, parent pid = %d\n", getpid(), getppid() ); printf( "wait - S3 - \n" ); while ( wait( (int *)0 )!= pid4 ) ; /* wait for child termination */ printf( "end of - P34 -\n" ); } exit( 0 ); } Cobegin-coend I costrutti fork-join permettono di realizzare qualsiasi grafo di precedenza fra task. Il costrutto cobegin-coend, è più restrittivo del fork-join, infatti non permette di realizzare qualsiasi grafo di precedenza, tuttavia garantisce una buona strutturazione del codice (l'uso di fork-join è paragonabile all'uso del goto per salti incondizionati nei linguaggi di programmazione sequenziali). La sintassi del comando è: cobegin S1 S2 S3 coend
11 Cobegin-coend L'esecuzione dell'istruzione causa l'attivazione dei tre processi che eseguono in parallelo le istruzioni S1, S2, S3, e la sospensione del processo padre fino alla terminazione di tutti i processi attivati. Le istruzioni S1, S2, S3 possono a loro volta essere costrutti di tipo cobegin-coend, ovvero i costrutti cobegin-coend possono essere annidati. Cobegin-coend COBEGIN Statement 1 Statement 2 Statement n COEND
12 Esempio begin A; cobegin begin C;F; end; begin B; cobegin D; E; coend; end; coend; G; end Esercizio Realizzare mediante i costrutti fork-join e cobegincoend il seguente grafo di precedenze
13 Semafori Il tipo di dato semaforo è utilizzabile per risolvere problemi di sincronizzazione di processi concorrenti che interagiscono secondo il modello a memoria condivisa. I semafori sono delle risorse di sistema e come tali devono essere: allocati, gestiti deallocati Semafori Non esistono in Unix primitive di gestione dei semafori come wait e signal bensì delle funzioni con le quali queste primitive possono essere realizzate Per utilizzare i semafori è necessario includere i seguenti file: <sys/ipc.h> <sys/msg.h> <sys/sem.h> Per una corretta gestione degli errori sarebbe necessario includere anche: <sys/types.h> <unistd.h> <errno.h>
14 Semafori: creazione In Unix non è possibile allocare un semaforo singolarmente ma è necessario crearne un insieme. Tale insieme viene identificato tramite un identificatore di struttura di semafori. Ogni semaforo all interno dell insieme è identificato con un numero progressivo a partire da 0 Per creare un semaforo si usa la funzione semget: sem_id semget (key_t chiave, int num_sem, short flags) Semafori: creazione La semget restituisce un numero non negativo (se l insieme di semafori può essere allocato) corrispondente all identificativo dell insieme di semafori (altrimenti ritorna 1): Il codice di errore viene posto in errno Il campo chiave può assumere un qualunque valore, ma esiste una funzione C creata apposta per la sua inizializzazione: ftok Se il campo chiave assume il valore IPC_PRIVATE un insieme di semafori viene comunque creato
15 Semafori: creazione Il campo num_sem indica il numero di semafori appartenenti all insieme: Deve essere maggiore di 0 Il campo flags specifica il comportamento da seguire nella gestione dell insieme di semafori: È possibile gestire l accesso alla risorsa semaforo nel modo solito dei file Alcuni valori sono predefiniti in <sys/ipc.h>: IPC_CREAT crea il semaforo IPC_EXCL verifica se il semaforo esiste I valori possono essere messi in OR aritmetico 0644 IPC_CREAT Semafori: operazioni di controllo La funzione semctl permette di operare varie funzioni di controllo sui semafori: Leggere lo stato di un semaforo Impostare il valore Rimuovere l insieme di semafori dal sistema... La sintassi è la seguente: int semctl (int sem_id, int num_sem, operazione, union semun *argomenti)
16 Semafori: operazioni di controllo sem_id è l identificatore dell insieme di semafori num_sem indica il semaforo dell insieme Il campo operazione indica il tipo di operazione che si vuole eseguire sul semaforo: IPC_RMID: rimuove l insieme di semafori dall insieme GETVAL: legge il valore del semaforo SETVAL: imposta il valore del semaforo GETPID: legge il pid dell ultimo processo che ha agito sul semaforo Il campo argomenti serve per passare alla funzione i valori da impostare o per il ritorno dei valori letti. Il campo più importante della union è val: Rappresenta il valore a cui il semaforo va impostato (SETVAL) Rappresenta il valore corrente del semaforo (GETVAL) Semafori: operazioni La funzione che permette di realizzare le primitive wait-signal (o up-down) è semop La sintassi è la seguente: int semop (int sem_id, struct sembuf *operazione, int num_elementi) sem_id è l identificatore dell insieme di semafori La struct sembuf operazione è il campo (vettore) che specifica l operazione e il semaforo sul quale l operazione deve essere applicata: Nella struct sembuf sono presenti i seguenti campi: short sem_num short sem_op short sem_flg
17 Semafori: operazioni Il campo sem_num è il numero del semaforo all interno dell insieme Il campo sem_op specifica l operazione da eseguire: Se < 0 l operazione da eseguire è una wait Se >0 l operazione da eseguire è equivalente ad una signal Il campo sem_flg può assumere i valori: SEM_UNDO: ripristina il vecchio valore di sem_val quando il processo termina IPC_NOWAIT: non sospende il processo ma ritorna 1; molto utile se si vogliono realizzare operazioni di wait e signal non bloccanti Semafori: operazioni Il campo num_elementi indica quanti elementi sono presenti nel vettore struct sembuf *operazione
18 Esempio #include <stdio.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> #include <sys/sem.h> #include <sys/errno.h> #if defined( GNU_LIBRARY ) &&!defined(_sem_semun_undefined) /* union semun is defined by including <sys/sem.h> */ #else /* according to X/OPEN we have to define it ourselves */ union semun { int val; /* value for SETVAL */ struct semid_ds *buf; /* buffer for IPC_STAT, IPC_SET */ unsigned short int *array; /* array for GETALL, SETALL */ struct seminfo * buf; /* buffer for IPC_INFO */ } pippo; #endif struct sembuf pluto; main(){ int semaforo; Esempio semaforo = semget(ipc_private, 1, 0777); if(semaforo > 0){ printf("creato semaforo: %d\n", semaforo); printf("leggo il valore del semaforo\n"); semctl(semaforo,0,getall,&pippo); printf("valore: %d\n",pippo.val); printf("setto il valore del semaforo a 3\n"); pippo.val = 3; semctl(semaforo,0,setval,pippo); printf("leggo il valore del semaforo\n"); semctl(semaforo,0,getall,&pippo); printf("valore: %d\n",pippo.val); pluto.sem_num = 0; pluto.sem_op = -1;
19 Esempio printf("faccio una wait sul semaforo\n"); semop(semaforo,&pluto,1); printf("leggo il valore del semaforo\n"); semctl(semaforo,0,getall,&pippo); printf("valore: %d\n",pippo.val); pluto.sem_num = 0; pluto.sem_op = 1; printf("faccio una signal sul semaforo\n"); semop(semaforo,&pluto,1); } printf("leggo il valore del semaforo\n"); semctl(semaforo,0,getall,&pippo); printf("valore: %d\n",pippo.val); } Semafori: multiprocessore Sistemi monoprocessore: Disable interrupt come prologo all entrata in Regione Critica. Enable interrupt come prologo all uscita della Regione Critica. Sistemi multiprocessore con memoria comune Istruzione test-and-set su una variabile di lock Se il byte è 0 la Regione Critica è libera Se il byte è 1 la Regione Critica è occupata L istruzione testa il contenuto della variabile e lo pone a 1 in un solo ciclo indivisibile
20 Test and set Controlla e modifica atomicamente il contenuto di un byte. char Test-and-Set(char *target) { Test-and-Set = *target; *target = TRUE; }
Il sistema operativo LINUX Semafori. Semaforo. Sommario. Sommario. Uso delle pipe. Gestione di semafori tramite pipe. Sistemi operativi Modulo II
Il sistema operativo LINUX Semafori Semaforo Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica Un semaforo è una variabile
Corso di Laboratorio di Sistemi Operativi
Corso di Laboratorio di Sistemi Operativi Lezione 6 Alessandro Dal Palù email: [email protected] web: www.unipr.it/~dalpalu Interazione tra Processi I processi concorrenti possono interagire
System Call per la gestione dei semafori in Linux. Semafori: modello concettuale. Creazione ed inizializzazione di un semaforo
System Call per la gestione dei semafori in Linux Domenico Cotroneo Dipartimento di Informatica e Sistemistica Semafori: modello concettuale Processore D C B (sq)coda proc.sospesi s.count=1 semaforo A
Corso di Programmazione Concorrente Produttori / Consumatori. Valter Crescenzi
Corso di Programmazione Concorrente Produttori / Consumatori Valter Crescenzi http://crescenzi.inf.uniroma3.it Problema Produttori / Consumatori Alcuni processi produttori devono continuamente inviare
Principles of Concurrent Programming
Principles of Giuseppe Anastasi [email protected] Pervasive Computing & Networking Lab. () Dept. of Information Engineering, University of Pisa Overview Concetti preliminari Interazione fra processi
System call per la gestione di processi
System call per la gestione di processi Chiamate di sistema per creazione di processi: fork() sostituzione di codice e dati: exec...() terminazione: exit() sospensione in attesa della terminazione di figli:
INTERPROCESS COMMUNICATION 27
INTERPROCESS COMMUNICATION 27 - Le comunicazioni tra processi (IPC, Intreprocess Communication) sono realizzate mediante strutture dati rese disponibili dal kernel. Sono disponibili 3 tipologie di comunicazioni
Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.
Il compito è costituito da domande chiuse, domande aperte ed esercizi. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio
I Processi nel Sistema Operativo Unix. Gerarchie di processi Unix. Stati di un processo Unix. Stati di un processo Unix.
I Processi nel Sistema Operativo Unix Processi Unix Unix è un sistema operativo multiprogrammato a divisione di tempo: l unità di computazione è il processo. Caratteristiche del processo Unix: processo
Esercitazione sui grafi di precedenza, fork/join, cobegin/coend.
Esercitazione sui grafi di precedenza, fork/join, co/coend. Esercizio 1. Realizzare mediante il costrutto fork/join il seguente grafo di precedenze. Risposta. cont5 := 2; cont6 := 3; cont7 := 2; S1; fork(l1);
System call fcntl e record locking
System call fcntl e record locking Esempio: prenotazione di voli aerei La compagnia ACME Airlines usa un sistema di prenotazione dei voli basato su unix. Possiede due uffici per la prenotazione, A e B,
ACSO Programmazione di Sistema e Concorrente
ACSO Programmazione di Sistema e Concorrente P2 Modello Thread 2/12/2015 programma e parallelismo il tipo di parallelismo dipende dal grado di cooperazione (scambio di informazione) necessario tra attività
Corso di Programmazione Concorrente Processi. Valter Crescenzi
Corso di Programmazione Concorrente Processi Valter Crescenzi http://crescenzi.inf.uniroma3.it Sommario Processi vs Thread Creazione e terminazione di processi chiamata di sistema fork() chiamata di sistema
Sincronizzazione. Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino
Sincronizzazione Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Soluzioni hardware Le soluzioni hardware al problema della SC possono essere classificate
I Processi nel Sistema Operativo Unix
I Processi nel Sistema Operativo Unix Processi Unix Unix è un sistema operativo multiprogrammato a divisione di tempo: l unità di computazione è il processo. Caratteristiche del processo Unix: processo
Soluzioni ai problemi di Mutua Esclusione Primitive di sincronizzazione. Soluzioni ai problemi di Mutua EsclusionePrimitive di sincronizzazione
Soluzioni ai problemi di Mutua Esclusione Primitive di sincronizzazione Soluzioni basate su primitive di sincronizzazione Le primitive di sincronizzazione piú comuni sono: Lock (mutex) - realizzati in
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Pietro Frasca Lezione 20 Martedì 16-12-2014 1 System call per la gestione dei processi Creazione
Modelli di programmazione parallela
Modelli di programmazione parallela Oggi sono comunemente utilizzati diversi modelli di programmazione parallela: Shared Memory Multi Thread Message Passing Data Parallel Tali modelli non sono specifici
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).
Sistemi Operativi T. Esercizi
Sistemi Operativi T Esercizi Esercizio monitor Si consideri la toilette di un ristorante. La toilette è unica per uomini e donne. Utilizzando la libreria pthread, si realizzi un'applicazione concorrente
CREAZIONE 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.
Sistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni
Anno Accademico 2011/2012 Segnali: Interrupt software per la gestione di eventi asincroni Concetto di segnale Un segnale è un interrupt software Un segnale può essere generato da un processo utente o dal
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 20 Giovedì 22-12-2016 Comunicazione: pipe In Unix, processi possono comunicare
Le risorse. Alcune definizioni
Le risorse Dicesi risorsa un qualunque oggetto, fisico o logico, di cui un processo necessita per portare a termine la sua evoluzione. Poiché un processo evolve eseguendo istruzioni (procedure), una risorsa
Processore Danilo Dessì. Architettura degli Elaboratori.
Processore 8088 Architettura degli Elaboratori Danilo Dessì [email protected] Subroutine Anche nel linguaggio assemblativo è possibile suddividere un programma in subroutine Per invocare una subroutine
Sincronizzazione. I semafori Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino
Sincronizzazione I semafori Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Introduzione Le soluzioni Software sono complesse da utilizzare dal punto di vista del programmatore
Chiamate di sistema per la Gestione dei processi in POSIX. E.Mumolo, DEEI [email protected]
Chiamate di sistema per la Gestione dei processi in POSIX E.Mumolo, DEEI [email protected] Process id ed altri identificatori pid_t getpid(); // Process id del processo chiamante pid_t getppid(); // Process
SEMAFORI SEMAFORI. Sul semaforo sono ammesse solo due operazioni (primitive)
SEMAFORI 1 SEMAFORI Variabile intera non negativa con valore iniziale >= 0 Al semaforo è associata una lista di attesa Qs nella quale sono posti i descrittori dei processi che attono l autorizzazione a
PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE
PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE 1 ALGORITMO, PROGRAMMA, PROCESSO Algoritmo Procedimento logico che deve essere eseguito per risolvere un determinato problema. Programma Descrizione di un
Sistemi operativi Modulo II I semafori 2 Select
Il sistema operativo LINUX Semafori 2 Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica La system call read è bloccante Non
Introduzione al Multithreading
Introduzione al Multithreading Claudia Calidonna Istituto di di Cibernetica C.N.R. Argomenti principali Parleremo di : Processi & Threads Operazioni sui threads ed eventuali confronti tra operazioni sui
AXO. 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
Programmazione di sistema in Linux: System Call per i Segnali. E. Mumolo
Programmazione di sistema in Linux: System Call per i Segnali E. Mumolo Eventi asincroni: segnali I segnali permettono la gestione di eventi asincroni che interrompono il normale funzionamento di un processo
Sincronizzazione tra processi in Unix: : i segnali. Sistemi Operativi T AA
Sincronizzazione tra processi in Unix: : i segnali Sistemi Operativi T AA 2009-2010 1 Sincronizzazione tra processi La sincronizzazione permette di imporre vincoli sull'ordine di esecuzione delle operazioni
Il linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
PROGRAMMA DISCIPLINARE SVOLTO a. s. 2015 / 2016
PROGRAMMA DISCIPLINARE SVOLTO a. s. 2015 / 2016 DOCENTI: TESTARDO CINZIA, VALERIO FELICI CLASSE 4 a IA DISCIPLINA TPSI MACROARGOMENTI che sono stati trattati nel corso del corrente anno scolastico (in
Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione
Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE
Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente
Inter-Process Communication
Inter-Process Communication (IPC) IPCS 1 1. Code di messaggi 2. Semafori 3. Memoria condivisa send receive 2? 3 p1 p3 p2 CODE DI MESSAGGI Modello di Comunicazione Code di Messaggi Il processo ricevente
Programmazione multiprocesso
DTI / ISIN / Titolo principale della presentazione 1 Programmazione multiprocesso Amos Brocco, Ricercatore, DTI / ISIN 20 febbraio 2012 2 Processi Cos'è un processo? Un programma in esecuzione Spazio di
Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.
Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti
Processi. Descrittore di Processo (PCB) Context Switch Primitive per la creazione e terminazione dei processi. Il descrittore di processo (PCB)
Processi Descrittore di Processo (PCB) Context Switch Primitive per la creazione e terminazione dei processi 1 Il descrittore di processo (PCB) Il S.O. gestisce i processi associando a ciascuno di essi
Il linguaggio C. Notate che...
Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
Programmazione di sistema in Linux: System Call per il controllo processi. E. Mumolo, DIA
Programmazione di sistema in Linux: System Call per il controllo processi E. Mumolo, DIA Struttura generica di Linux Chiamate delle System call (Trap) interfaccia Utente Shell comandi di linea Compilatori
Struttura interna del sistema operativo Linux
Struttura interna del sistema operativo Linux 5. I device driver A cura di: Anna Antola Giuseppe Pozzi DEI, Politecnico di Milano anna.antola/[email protected] -versione del 30 marzo 2004-1-04.-04
Corso di Laboratorio di Sistemi Operativi
Corso di Laboratorio di Sistemi Operativi Lezione 7 Alessandro Dal Palù email: [email protected] web: www.unipr.it/~dalpalu Threads Un thread è l unità di base per l utilizzo della CPU. Composto
Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto
Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto 14 1. Dato un numero dire se è positivo o negativo 2. e se il numero fosse nullo? 3. Eseguire il prodotto tra
Architettura dei calcolatori e sistemi operativi. M2 Organizzazione della memoria virtuale Struttura dello spazio virtuale kernel e utente
Architettura dei calcolatori e sistemi operativi M2 Organizzazione della memoria virtuale Struttura dello spazio virtuale kernel e utente 18.01.2015 Architettura Intel x64 Lo spazio di indirizzamento virtuale
Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione
Linguaggio C - sezione dichiarativa: costanti e variabili
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente
Sistemi Operativi. Compito d esame 08 Settembre Versione A
Sistemi Operativi Compito d esame 08 Settembre 2014 Versione A Caselle riservate Ex. 1 Ex. 2 Ex. 3 Ex. 4 Ex. 5 Ex. 6 Tot. Matricola Cognome Nome Docente: Laface Quer Non si possono consultare testi, appunti
