Sistemi Operativi. 7 Gestione dei processi in Unix
|
|
- Benvenuto Damiani
- 8 anni fa
- Visualizzazioni
Transcript
1 Gestione dei processi in Unix Creazione e terminazione dei processi: fork: crea un nuovo processo duplicando il processo chiamante exec: attiva l esecuzione di un programma memorizzato in un file eseguibile. wait: sospende l esecuzione di un processo in attesa del completamento di un altro processo ad esso legato. exit termina un processo. Sincronizzazione e comunicazione in Unix: Segnali: trasferiscono ad un processo l indicazione che un determinato evento si è verificato. Pipe: struttura dinamica, creata ed usata dal processo che la genera. Fifo: struttura simile alla Pipe, ma statica. Sopravvive ai processi che la usano. Ad ogni segnale è associato un nome simbolico usato dall utente e un numero intero usato dal sistema. La corrispondenza è stabilita nel file signal.h Un processo può specificare una specifica azione da intraprendere all arrivo di un segnale (tramite la system call signal). La signal deve essere chiamata prima che il segnale sia ricevuto, altrimenti, si ha il comportamento di default (terminazione). Unix fornisce altre primitive per la gestione dei segnali: installazione di un allarme: ALARM(sec) (non è bloccante) sospensione in attesa di un qualunque segnale: PAUSE. sospensione temporizzata: SLEEP(sec) invio di segnali ad altri processi: KILL(pid,sig) Pipe: canale di comunicazione unidirezionale: accessibile ad un estremo in lettura ed all altro estremo in scrittura. Gestione Fifo, dimensione fissa (es byte) Sincronizzazione tra processi con pipe: un processo che legge si blocca se la pipe è vuota. un processo che scrive si blocca se la pipe è piena. Sintassi: int retval, fd[2]; retval = pipe(fd); fd[0] identificatore del file aperto in lettura, fd[1] identificatore del file aperto in scrittura. Comunicazione con pipe nella gerarchia di processi: tra processi figli (ereditano il pipe dal padre) tra un processo padre e un processo figlio. Politecnico di Torino Pagina 1 di 8
2 Gestione dei file. Apertura: create e open. L apertura di un file provoca: l allocazione di un elemento nella prima posizione libera dalla tabella dei file aperti del processo. l inserimento di un nuovo record nella tabella dei file aperti di sistema. la copia dell i-node nella tabella dei file attivi (se il file non è già stato aperto da un altro processo). Apertura di file già esistenti: int fd, flags; char *nomefile; fd=open(nomefile,flags); flags esprimono le modalità di accesso: O_RDONLY, O_WRONLY, O_RDWR ecc. definite in fcntl.h. fd = file descriptor. Apertura di nuovi file: fd=creat(nomefile,perm); perm rappresenta i 12 bit di protezione. se un file esiste già viene sovrascritto. Lettura e scrittura di file Accesso attraverso la specifica del file descriptor. Ogni operazione di lettura o scrittura agisce sequenzialmente sul file, a partire dalla posizione corrente del puntatore (I/O pointer). Possibilità di alternare operazioni di lettura e scrittura. Atomicità delle singole operazioni. Read: int fd,n,let; char *buf; let=read(fd,buf,n); buf: area in cui trasferire i byte letti, let: numero di byte effettivamente letti, è previsto un EOF (^D). Write: int fd,n,scritti; char *buf; scritti=write(fd,buf,n); se scritti è < n -> errore Accesso diretto: per spostare l I/O pointer: int fd,offset,origine,dest; dest=lseek(fd,offset,origine); offset = spostamento in byte dall origine, origine: 0 inizio file, 1 posizione corr., 2 fine file. Chiusura file: int fd,rit; rit=close(fd); rit = risultato dell operazione. Politecnico di Torino Pagina 2 di 8
3 Esercizi Esercizio 1 Si scriva un programma C per ambiente Unix in cui due processi, uno padre e l altro figlio, concorrono a realizzare un meccanismo di codifica di stringhe di caratteri. Il processo padre legge da tastiera una stringa di 5 caratteri che possono essere solo lettere minuscole; tale stringa è passata al processo figlio che legge dal file permut.dat le corrispondenti codifiche per i caratteri della stringa. Infine, il figlio stampa su video la stringa codificata. Si assuma che nel file permut.dat vi siano, una per riga (si supponga ci siano 21 righe), corrispondenze di questo tipo: ag bt cv du eo etc. In pratica il carattere a nella stringa originale deve essere sostituito con una g, il carattere b con una t ecc. Si usino il più possibile chiamate di sistema a basso livello (fork, read, write etc). #include <fcntl.h> main() int pid, canale[2],status,fp,ind; char buf[5],lettere[26][2]; pipe(canale); pid=fork(); if(pid > 0) /*CODICE PADRE*/ close(canale[0]); read(0,buf,5); write(canale[1],buf,5); wait(&status); /*CODICE FIGLIO*/ close(canale[1]); fp=open("permut.dat",o_rdonly); for(ind=0;ind<26;ind++) read(fp,&lettere[ind][0],3); close(fp); Politecnico di Torino Pagina 3 di 8
4 read(canale[0],buf,5); for(ind=0;ind<5;ind++) buf[ind]=lettere[(buf[ind]-'a')][1]; write(1,buf,5); Esercizio 2 Si realizzi un programma C per ambiente Unix in cui due processi concorrono a determinare il fattoriale di due numeri minori a 10 introdotti da tastiera. Il processo padre legge i due numeri da tastiera e passa il primo al processo figlio il quale calcola il fattoriale. Il figlio restituisce il risultato al padre che gli passa il secondo numero; mentre il figlio calcola il secondo fattoriale il padre scrive il primo risultato nel file fattorial.txt creato con permessi Quando il figlio ha terminato anche il secondo calcolo, passa il risultato al padre che lo scrive sempre nel file fattorial.txt. #include <fcntl.h> #define PERM 0666 main() int pid, canale[2], canale2[2], status,fp,valore,fatt; char num1[3],num2[3]; pipe(canale); pipe(canale2); pid=fork(); if(pid > 0) close(canale[0]); close(canale2[1]); fp=creat("fattorial.txt",perm); read(0,num1,2); read(0,num2,2); write(canale[1],num1,3); read(canale2[0],num1,3); write(fp,num1,3); write(canale[1],num2,3); read(canale2[0],num2,3); write(fp,num2,3); close(fp); wait(&status); Politecnico di Torino Pagina 4 di 8
5 close(canale[1]); close(canale2[0]); read(canale[0],num1,3); sscanf(num1,"%d",&valore); fatt=1; while(valore > 1) fatt *= valore; valore --; sprintf(num1,"%d\n",fatt); write(canale2[1],num1,3); read(canale[0],num2,3); sscanf(num2,"%d",&valore); fatt=1; while(valore > 1) fatt *= valore; valore --; sprintf(num2,"%d\n",fatt); write(canale2[1],num2,3); Esercizio 3 Scrivere un programma in linguaggio C per ambiente Unix che generi due processi uno padre e uno figlio. Il processo padre legge da tastiera una stringa lunga al massimo 10 caratteri, dopodiché la passa al processo figlio che converte maiuscole in minuscole e viceversa (simboli diversi da lettere compresi nella stringa devono rimanere inalterati). Dopo la conversione, il processo figlio crea un file result.dat con permessi 766 e vi scrive la stringa convertita. Per realizzare il programma si utilizzino solamente le system call a basso livello (read, write, execl etc.). #include <fcntl.h> #define PERM 0766 main() char buf[10]; int pid, canale[2],status; int i, scarto, filedes, car; pipe(canale); pid = fork(); Politecnico di Torino Pagina 5 di 8
6 if(pid > 0) close(canale[0]); read(0,buf,10); write(canale[1],buf,10); wait(&status); close(canale[1]); read(canale[0],buf,10); car=strlen(buf); for(i=0;i<car;i++) if((buf[i] >= 'A') && (buf[i] <= 'Z')) buf[i]=tolower(buf[i]); if ((buf[i] >= 'a') && (buf[i]<='z')) buf[i]=toupper(buf[i]); filedes = creat("result.dat",perm); write(filedes,buf,car); write(1,buf,car); close(filedes); Esercizio 4 Si realizzi un programma C per ambiente Unix tale che vengano generati due processi: uno padre e uno figlio. Padre e figlio comunicano mediante pipe. Il padre genera 10 valori interi casuali minori di 100 e li passa al figlio che a sua volta li scrive nel file random.dat (creato con permessi 0640), uno per riga. Si faccia, il più possibile, uso delle system call di basso livello (read, write, pipe etc.). #include <fcntl.h> #define PERM 0640 main() int pid,pip[2],fd,valore,status,i; char buf[3]; pipe(pip); pid = fork(); if(pid==0) Politecnico di Torino Pagina 6 di 8
7 fd = creat("random.dat",perm); close(pip[1]); for(i=0;i<10;i++) read(pip[0],buf,3); write(fd,buf,3); close(fd); close(pip[0]); for(i=0;i<10;i++) valore = rand()%100; sprintf(buf,"%d\n",valore); printf("%d\n",valore); write(pip[1],buf,3); wait(&status); return; Esercizio 5 Si scriva un programma C per ambiente Unix tale che venga emulata una struttura di processi organizzati master slave; si supponga di dover gestire 3 slave. Ogni slave deve mandare un segnale di tipo SIGUSR1 al master; tale messaggio può essere mandato solo previa autorizzazione del master mediante un segnale di tipo SIGUSR2. Quando il master ha ricevuto tutti e tre i messaggi, uccide gli slave con un messaggio di tipo SIGKILL. #include <signal.h> void azione(void) printf("ricevuto segnale dal padre\n"); void azione2(void) printf("ricevuto segnale da un figlio\n"); void main() int pid1, pid2, pid3; signal(sigusr2,azione); pid1=fork(); if(pid1==0) Politecnico di Torino Pagina 7 di 8
8 kill(getppid(),sigusr1); pid2=fork(); if(pid2==0) kill(getppid(),sigusr1); pid3=fork(); if(pid3==0) kill(getppid(),sigusr1); signal(sigusr1,azione2); kill(pid1,sigusr2); signal(sigusr1,azione2); kill(pid2,sigusr2); signal(sigusr1,azione2); kill(pid3,sigusr2); kill(pid1,sigkill); kill(pid2,sigkill); kill(pid3,sigkill); Politecnico di Torino Pagina 8 di 8
Sistemi Operativi Teledidattico
Sistemi Operativi Teledidattico Anno 2002 3a esercitazione 5/10/2002 Paolo Torroni processi fork (creazione di un figlio) exec (sostituzione di codice del programma in esecuzione) wait (attesa della terminazione
DettagliLaboratorio di Sistemi Operativi primavera 2009
primavera 2009 Forme di comunicazione tra processi La comunicazione tra processi può avvenire: Le pipe Passando dei files aperti tramite fork Attraverso il filesystem Utilizzando le pipes Utilizzando le
DettagliLaboratorio di Sistemi Operativi Marzo-Giugno 2008 Matricole congrue 0 mod 3
Marzo-Giugno 2008 Matricole congrue 0 mod 3 IPC: pipe e FIFO (1) Forme di comunicazione tra processi La comunicazione tra processi può avvenire: Passando dei files aperti tramite fork Attraverso il filesystem
DettagliDiplomi Universitari Teledidattici. Sistemi Operativi
Compito di esonero del 3 luglio 1996 1. Si illustri brevemente il concetto di short term scheduling e si discutano i principali algoritmi usati per l assegnazione della CPU. Si prenda inoltre in considerazione
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,
DettagliESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX
ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX Introduzione In questa dispensa sono stati raccolti alcuni esercizi di programmazione C in ambiente Unix, tratti dagli esami di Sistemi Operativi svoltisi
DettagliEsercizio sulla gestione di file in Unix. Sistemi Operativi T AA
Esercizio sulla gestione di file in Unix Sistemi Operativi T AA 2011-2012 1 Esercizio Si vuole realizzare un programma C che, utilizzando le system call di Unix, realizzi uno schema di comunicazione tra
DettagliEsercitazione 4. Gestione dei file in Unix
Esercitazione 4 Gestione dei file in Unix Primitive fondamentali (1/2) open close Apre il file specificato e restituisce il suo file descriptor (fd) Crea una nuova entry nella tabella dei file aperti di
DettagliComunicazione tra processi: pipe Le pipe sono un meccanismo UNIX di Inter Process Communication (IPC)
Comunicazione tra processi: pipe Le pipe sono un meccanismo UNIX di Inter Process Communication (IPC) Le pipe sono canali di comunicazione unidirezionali Limitazione pipe: permettono la comunicazione solo
DettagliGestione di periferici e file
Gestione di periferici e file Dispositivi di I/O Gestore di sottosistemi di I/O: esiste una differenza concettuale tra i compiti di un gestore di CPU o memoria e un gestore di un sottosistema di I/O. I
DettagliGESTIONE DELLA COMUNICAZIONE LOCALE TRA PROCESSI IN UNIX:
GESTIONE DELLA COMUNICAZIONE LOCALE TRA PROCESSI IN UNIX: Il primo meccanismo di comunicazione tra processi locali in ambiente Unix e stato il meccanismo delle pipe. Per processo locale si intende un processo
DettagliLINUX: struttura generale
LINUX: struttura generale User Interface The layers of a UNIX system. 1 Processi in LINUX Ogni processo nasce con un solo thread Un processo gira in modalità utente; quando effettua una system call passa
DettagliUniversità 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
DettagliSistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo Multi-Nodo
www.dis.uniroma1.it/~midlab Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo Multi-Nodo Corso di Laurea in Ingegneria Informatica e Automatica A.A. 2014-2015 Prof. Roberto
DettagliUniversità 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. 2018-2019 Pietro Frasca Lezione 22 Martedì 08-01-2019 Struttura logica del file system una tipica organizzazione
DettagliLa Comunicazione tra Processi in Unix
La Comunicazione tra Processi in Unix 1 Interazione tra processi Unix I processi Unix non possono condividere memoria (modello ad ambiente locale ) L interazione tra processi può avvenire: mediante la
DettagliIl processo figlio : utilizza lo stesso codice che sta eseguendo il padre ;
La creazione di un nuovo processo in UNIX int fork(void); Viene creato un nuovo processo (figlio) identico (stesso codice, area dati copiata) al processo (padre) che ha invocato la fork Solo il valore
DettagliLa Comunicazione tra Processi in Unix
La Comunicazione tra Processi in Unix La è un canale di comunicazione tra processi: unidirezionale: accessibile ad un estremo in lettura ed all'altro in scrittura molti-a-molti: più processi possono spedire
DettagliUniversità 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. 2017-18 Pietro Frasca Lezione 9 Giovedì 2-11-2017 Comunicazione con pipe Oltre che con la memoria condivisa
DettagliSistemi Operativi. Risorse usate P P2 2 2 P3 1 4 P4 1 5 P5 0 3
Compiti d esame Compito di esonero del 14 giugno 1997 Durata del compito: 1 ora e ½. Non è possibile consultare libri e appunti; unica eccezione il manuale del linguaggio C. 1. Supponendo di avere a disposizione
DettagliSistemi 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
DettagliSistemi 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
DettagliLa creazione di un nuovo processo in UNIX
La creazione di un nuovo processo in UNIX #include int fork(void); Viene creato un nuovo processo (figlio) identico (stesso codice, area dati copiata) al processo (padre) che ha invocato la
DettagliLABORATORIO DI SISTEMI OPERATIVI
LABORATORIO DI SISTEMI OPERATIVI Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019 Guglielmo Cola Email: g.cola@iet.unipi.it Web: iet.unipi.it/g.cola Organizzazione del filesystem Meccanismo
DettagliCapitolo 3 -- Stevens
I/O non bufferizzato (1) Capitolo 3 -- Stevens System Call open close read write lseek 1.2 sono degli interi non negativi file descriptor il kernel assegna un file descriptor ad ogni file aperto le funzioni
DettagliSystem 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:
DettagliLABORATORIO DI SISTEMI OPERATIVI
LABORATORIO DI SISTEMI OPERATIVI Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019 Guglielmo Cola Email: g.cola@iet.unipi.it Web: iet.unipi.it/g.cola Processi in Unix/Linux (parte II)
DettagliSystem 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:
DettagliUniversità 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. 2017-18 Pietro Frasca Lezione 6 Martedì 24-10-2017 1 Sostituzione del codice Tipicamente, dopo una
DettagliUniversità 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. 2018-2019 Pietro Frasca Lezione 5 Martedì 16-10-2018 Operazioni sui processi Nella maggior parte dei
DettagliSystem call per l accesso a file
System call per l accesso a file Nome open creat close read write lseek unlink remove fcntl Significato apre un file in lettura e/o scrittura o crea un nuovo file crea un file nuovo chiude un file precedentemente
DettagliQuinta Esercitazione. Principali primitive di accesso ai File
Esempio: processi padre e figlio condividono di file aperti PRIMA della creazione Quinta Esercitazione Gestione File-System Segnali processo padre fork() Sistema tabella dei file attivi i-node Eugenio
DettagliSISTEMI OPERATIVI. Processi in Linux. Giorgio Giacinto Sistemi Operativi
SISTEMI OPERATIVI Processi in Linux 2 Creazione di processi concorrenti» La creazione di un processo figlio consente di far eseguire alcune funzionalità del programma in modo concorrente» Opzione 1 il
DettagliIgino Corona
Sistemi Operativi Esercitazione 6: Comunicazione fra processi in Linux PIPE Igino Corona igino.corona@diee.unica.it 17 Novembre 2009 File In Linux, un le può essere un contenitore di informazione o uno
DettagliChiamate di sistema. Pipe Flussi di I/O
Chiamate di sistema Pipe Flussi di I/O Esempio di chiamata di sistema #include int main(int argc, char ** argv) FILE * f; f = fopen("nuovo-file", "w"); fprintf(f, "Hello World!\n"); fclose(f);
DettagliUniversità 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. 2018-2019 Pietro Frasca Lezione 8 Giovedì 25-10-2018 Comunicazione con pipe Oltre che con la memoria
DettagliChiamate di sistema. Pipe Flus s i di I/O
Chiamate di sistema Pipe Flus s i di I/O Esempio di chiamata di sistema #include int main(int argc, char ** argv) { FILE * f; f = fopen("nuovo-file", "w"); fprintf(f, "Hello World!\n"); fclose(f);
Dettagli(9) pid1 = waitpid (pid1, &status, 0); (10) exit (0); } / end if / } / main.c / File system_
File system_ 2.3.22 Si considerino i seguenti frammenti di programma: / programma main.c / main ( ) { int pid, pid2; int fd, fd2; char v = abcdefghil ; char c []; () pid = fork ( ); (2) fd = open ( /user/acso/prova,
DettagliCORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 4
UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Elettronica e delle Telecomunicazioni a.a. 2005-2006 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 4 1 Funzioni per il
Dettagli2. Teoria. [7 punti] La comunicazione tra processi nel sistema UNIX.
1. Unix [12 punti] Prova Scritta di Recupero del 5 Aprile 2004 Si scriva un programma C che utilizzi le system call di UNIX e che realizzi un comando UNIX avente la seguente sintassi: esame fsize fin fout
DettagliEsercizio sulla gestione di file in Unix
Esercizio sulla gestione di file in Unix 1 Esercizio Si vuole realizzare un programma C che, utilizzando le system call di Unix, realizzi uno schema di comunicazione tra due processi (padre e figlio) mediante
DettagliUniversità 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 23 Martedì 17-01-2017 Il file system Il file system si basa sulle astrazioni
DettagliSeconda Esercitazione. Gestione di processi in Unix Primitive Fork, Wait, Exec
Seconda Esercitazione Gestione di processi in Unix Primitive Fork, Wait, Exec System call fondamentali fork exit wait exec Generazione di un processo figlio, che condivide il codice con il padre e possiede
DettagliUniversità 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
DettagliEsercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012
Sommario: Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012 - System Call Parte 1 open (apertura file) creat (creazione file) close (chiusura file) write (scrittura file) read (lettura file)
DettagliSistemi 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
DettagliLezione 21. #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <sys/types.h> #include <sys/wait.
Lezione 21 Scrivere un programma che simuli il sistema di prenotazione di voli AC- ME. Il programma acquisisce da std input il numero di posti da riservare rispettivamente dall ufficio A e dall ufficio
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 1 febbraio 2016 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare
DettagliLaboratorio di Sistemi Operativi
II Semestre - Marzo/Giugno 2008 matricole congr. 0 mod 3 I/O non bufferizzato System Call open close read write lseek 2 1 file descriptor sono degli interi non negativi il kernel assegna un file descriptor
DettagliCorso di Sistemi Operativi A.A CHIAMATE DI SISTEMA PER FILE E SEMAFORI. Fabio Buttussi
Corso di Sistemi Operativi A.A. 2008-2009 - CHIAMATE DI SISTEMA PER FILE E SEMAFORI Fabio Buttussi System call per l accesso a file Nome open close read write lseek creat remove unlink stat Significato
DettagliEsercitazione di Lab. di Sistemi Operativi. - I/0 di basso livello
Esercitazione di Lab. di Sistemi Operativi - I/0 di basso livello 1 System Call Fasi delle compilazione Il compilatore GNU gcc Esercizi Sommario 2 - System call - 3 Richiami sulle System Call Unix permette
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
DettagliInput/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
DettagliProcessore Danilo Dessì. Architettura degli Elaboratori.
Processore 8088 Architettura degli Elaboratori Danilo Dessì danilo_dessi@unica.it Subroutine Anche nel linguaggio assemblativo è possibile suddividere un programma in subroutine Per invocare una subroutine
DettagliTerza Esercitazione. Gestione di segnali in Unix Primitive signal e kill!
Terza Esercitazione Gestione di segnali in Unix Primitive signal e kill! Primitive fondamentali signal kill pause alarm sleep Imposta la reazione del processo all eventuale ricezione di un segnale (può
DettagliEsercitazione di Lab. di Sistemi Operativi a.a. 2012/2013. - I processi Unix -
Esercitazione di Lab. di Sistemi Operativi a.a. 2012/2013 - I processi Unix - 1 Sommario Gestione dei processi: Creazione di un nuovo processo: fork Sincronizzazione tra processi: wait Esercizi: fork fork
DettagliI 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
DettagliSystem Calls per la Gestione dei Processi
System Calls per la Gestione dei Processi Domenico Cotroneo Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II Roadmap Process Context Identificativi getpid() getppid()
DettagliCrea un nuovo processo. Al processo padre ritorna il PID del figlio. Al processo figlio ritorna 0
Crea un nuovo processo. Al processo padre ritorna il PID del figlio. Al processo figlio ritorna 0 Sequenza di operazioni di fork: * alloca una entry nella tabella dei processi * assegna un unico ID al
DettagliTerza Esercitazione. Gestione di segnali in Unix Primitive signal e kill
Terza Esercitazione Gestione di segnali in Unix Primitive signal e kill signal kill pause alarm sleep Primitive fondamentali Imposta la reazione del processo all eventuale ricezione di un segnale (può
DettagliFondamenti di informatica, Sez. Ing. Informatica, Ing. Gestionale, Ing. Ambientale II prova in itinere, 29 Gennaio 2009
Fondamenti di informatica, Sez. Ing. Informatica, Ing. Gestionale, Ing. Ambientale II prova in itinere, 29 Gennaio 2009 Esercizio 1 (punti 3) Sia data la funzione ricorsiva seguente: void elabora (unsigned
DettagliI segnali. First the signals described in the original POSIX standard.
I segnali Prof.ssa Sara Michelangeli I segnali sono interruzioni inviate ai processi dal kernel, da un altro processo utente, oppure da un processo a se' stesso. Possono essere utilizzati dal sistema operativo
DettagliUniversità degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria Elettronica. SISTEMI OPERATIVI A.A. 2004/2005 Docente: Giorgio Giacinto
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria Elettronica SISTEMI OPERATIVI A.A. 2004/2005 Docente: Giorgio Giacinto fork() & exec() Roberto Perdisci A.A. 2004/2005 1 Dettagli
DettagliInter-process communication
Primitive di Comunicazione 1 Inter-process communication Nell'attività del sistema si rende necessario la cooperazione tra processi per realizzare le diverse funzionalità offerte all'utente. La cooperazione
DettagliLABORATORIO DI SISTEMI OPERATIVI
LABORATORIO DI SISTEMI OPERATIVI Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019 Guglielmo Cola Email: g.cola@iet.unipi.it Web: iet.unipi.it/g.cola Processi in Unix/Linux caratteristiche
DettagliUniversità 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. 2017-18 Pietro Frasca Lezione 23 Giovedì 11-01-2018 Organizzazione fisica del file system Il file system
DettagliAddendum alle chiamate di sistema per la gestione processi. E Mumolo
Addendum alle chiamate di sistema per la gestione processi E Mumolo Definiamo un processo proc.c che scrive l'argomento passato in linea: void main(int argc, char *argv[]){ printf("sono il processo %s\n",
DettagliI SISTEMI OPERATIVI (1)
I SISTEMI OPERATIVI () un computer può essere pensato come una stratificazione di macchine virtuali, ciascuna delle quali mette a disposizione alcuni servizi, che sono utilizzabili mediante chiamate effettuate
DettagliOperazioni su file di caratteri
Operazioni su file di caratteri Apertura fopen Chiusura fclose Scrittura fprintf Lettura fscanf Controllo fine file feof Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Apertura di un file: Si
DettagliModulo 13: System call relative al File System
Modulo 13: System call relative al File System Chiamate di sistema relative ai file Restituzione descrittore Uso di namei Assegnazione inode Attributi I/O File System Struttura Manipolazione open creat
Dettagli&& (nessun altro processo ha il file aperto) && (il fd e chiuso) Cancella il file;
CREAZIONE ritorna fd o 1 Pseudocodice dell operazione: If(file esiste) If(Write permission) Tronca la lunghezza a 0 e lascia il file aperto in scrittura; Else Exit(-1); Else Alloca un nuovo INODE con link=1
DettagliLaboratorio di Sistemi Operativi primavera 2009 open
primavera 2009 open System Call close read I/O non bufferizzato write lseek 2 file descriptor file descriptor...ancora sono degli interi non negativi il kernel assegna un file descriptor ad ogni file aperto
DettagliSC per Inter Process Comminication. Pipe senza nome e con nome (FIFO)
SC per Inter Process Comminication Pipe senza nome e con nome (FIFO) 1 Pipe Pipe : file speciali utilizzati per connettere due processi con un canale di comunicazione Possono essere utilizzati in modo
DettagliEsercizi di Verifica Aprile 2005 Università disalerno
Laboratorio di Sistemi Operativi: Prof.ssa A. Rescigno Anno Acc. 2004-2005 Esercizi di Verifica Aprile 2005 Università disalerno Nome e Cognome: Matricola: Classe 1 Classe 2 p-p p-d 1 2 3 4 5 6 7 tot /10
Dettagli2. Nucleo del sistema operativo (la gestione dei processi)
Struttura interna del sistema operativo Linux 2. Nucleo del sistema operativo (la gestione dei processi) Architettura (struttura) del sistema operativo shell Programmi utente Modo utente Interfaccia delle
DettagliSincronizzazione tra processi in Unix: i segnali
Sincronizzazione tra processi in Unix: i segnali 1 Sincronizzazione tra processi I processi interagenti possono avere bisogno di sincronizzazione. Unix: non c è condivisione di variabili tra processi:
DettagliIl comando make. Per produrre un eseguibile da un programma C sono necessari tre passi compiuti dai seguenti moduli:
Il comando make Sviluppando programmi complessi, si è spesso portati a suddividere il codice sorgente in diversi file. La fase di compilazione quindi richiede maggior tempo, anche se le modifiche apportate
DettagliGestione di files Motivazioni
Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)
DettagliSC per Inter Process Communication. Pipe senza nome e con nome (FIFO)
SC per Inter Process Communication Pipe senza nome e con nome (FIFO) 1 Pipe Pipe : file speciali utilizzati per connettere due processi con un canale di comunicazione Possono essere utilizzati in modo
DettagliGestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico
Gestione dei file Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2016 2017 Gli stream Si dice stream qualsiasi sorgente di dati in ingresso e qualsiasi
DettagliPag. 1. modello di esecuzione parallela
Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel calcolatore. Costituisce la parte essenziale del cosiddetto software di sistema (o di base) in quanto
DettagliLaboratorio di Sistemi Operativi
II Semestre - Marzo/Giugno 2008 matricole congr. 0 mod 3 I/O non bufferizzato-2 dup, dup2 System Call sync, fsync, fdatasync fcntl 2 1 Condivisione di file Unix supporta la possibilità che più processi
DettagliLaboratorio di Sistemi Operativi
primavera 2009 pipe vs fifo la pipe può essere usata solo tra processi "imparentati" (che hanno un antenato comune che ha creato la pipe) Le FIFO la fifo consente di scambiare dati tra processi qualsiasi
DettagliSISTEMI OPERATIVI L-A Prova scritta parziale finale del 18 Marzo 2003
COMPITO A Domanda 1 [13 punti] Si scriva un programma in C che realizzi un comando che, utilizzando le system call di unix, preveda la seguente sintassi: dove: esame filein car n1 n2 filein e` un file
DettagliGestione dei File. Credits Prof. Campi
Gestione dei File Credits Prof. Campi 1 Perché i file? Sono strutture dati persistenti Sono solitamente memorizzati sui dischi Si usano dall'interno dei programmi Realizzano la persistenza dei dati cioè
DettagliCorso di Reti di Calcolatori T
Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 0 (proposta) Lettura e Scrittura File in Java e C Luca Foschini Michele Solimando, Giuseppe Martuscelli
DettagliRichiami sui Concetti Fondamentali dei Processi
Processi Processi 1 Richiami sui Concetti Fondamentali dei Processi Processi 2 Definizione Nell ambito dei sistemi operativi esistono diverse definizioni di processo, ad es. un programma in esecuzione
DettagliAXO Architettura dei Calcolatori e Sistemi Operativi
Politecnico di Milano Dipartimento di Elettronica e Informazione prof.ssa Anna Antola prof. Luca Breveglieri prof. Giuseppe Pelagatti prof.ssa Donatella Sciuto prof.ssa Cristina Silvano AXO Architettura
DettagliIntroduzione al linguaggio C
Linguaggio C Introduzione al linguaggio C Sistemi di sviluppo integrati Noti anche come IDE: Integrated Development Environment Un pacchetto software che permette di scrivere, preprocessare, compilare,
DettagliCorso di Informatica Modulo T3 1-Nucleo e processi
Corso di Informatica Modulo T3 1-Nucleo e processi 1 Prerequisiti Concetto stack Programmazione elementare Struttura elementare del computer Concetto intuitivo di sottoprogramma 2 1 Introduzione Vediamo
DettagliDirectory. Le directory unix sono file.
Le directory unix sono file. Directory Molte system call per i file ordinari possono essere utilizzate per le directory. E.g. open, read, fstat, close. Tuttavia le directory non possono essere create con
DettagliI files in C. A cura del prof. Ghezzi
I files in C A cura del prof. Ghezzi 1 Perchè i files? Realizzano la persistenza dei dati dati che sopravvivono all esecuzione del programma Sono delle strutture di dati sequenziali 2 Files e S.O. I files
DettagliLaboratorio di Sistemi Operativi Marzo-Giugno 2008 matricole congrue 0 mod 3
Marzo-Giugno 2008 matricole congrue 0 mod 3 Controllo dei processi - I Controllo dei processi Creazione di nuovi processi Esecuzione di programmi Processo di terminazione Altro 2 1 Identificatori di processi
DettagliCREAZIONE 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
DettagliStruttura dei programmi e Variabili
Linguaggio C Struttura dei programmi e Variabili 1 La struttura generale dei programmi! Struttura del programma: Direttive Funzioni Dichiarazioni Istruzioni Di assegnamento direttive Di ingresso e uscita
DettagliStandard I/O. Franco Maria Nardini
Standard I/O Franco Maria Nardini Standard I/O Library Standard I/O Library Definita da ISO C Standard I/O Library Definita da ISO C implementata non solo in sistemi operativi UNIX Standard I/O Library
DettagliÎ Modello ad Ambiente Locale P1 P1. File System P2 P2 P3 P3. Processi in UNIX. Modello di Processo in UNIX
Processi in UNIX Spazio di sistema (residente) Modello di Processo in UNIX 1 Tabella dei processi i PROCESS CODE Tabella dei codici Tabella dei file APERTI OPEN FILE ACTIVE FILE Tabella dei file ATTIVI
DettagliEsercizio n. 4 File system
Esercizio n. 4 File system Un processo P esegue il programma seguente, creando un processo figlio Q, che crea a sua volta un figlio R: int main ( ) { /* processo P */ / dichiarazioni varie / fd = open
DettagliCorso di laurea in ingegneria informatica Esame di sistemi operativi 21 gennaio 2009 SOLUZIONI
Corso di laurea in ingegneria informatica Esame di sistemi operativi 21 gennaio 2009 SOLUZIONI 1. Si consideri il programma C seguente (gli #include necessari sono omessi): / programma principale / 1.
Dettagli