Corso di Laboratorio di Sistemi Operativi



Documenti analoghi
Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix-

Corso di Sistemi Operativi A.A CHIAMATE DI SISTEMA PER IL CONTROLLO DEI PROCESSI. Fabio Buttussi

Digressione: man 2...

Introduzione al Linguaggio C

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

File I/O. M. R. Guarracino: File I/O 1

Files, File I/O, File Sharing. Franco Maria Nardini

Guida all utilizzo del compilatore lcc-win32 per creare una applicazione console

Corso di Alfabetizzazione Informatica

Lab. di Sistemi Operativi - Esercitazione n 9- -Thread-

Processi in Linux. Igino Corona 20 Ottobre 2009

Processi in Linux. Stru/ura file eseguibili

Sistemi Operativi: Programmazione di Sistema

Gestione dei processi

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

NOZIONI BASE PER ESERCITAZIONI

IBM SPSS Statistics per Linux - Istruzioni di installazione (Licenza per sito)

Programmazione multiprocesso

Il web server Apache Lezione n. 3. Introduzione

Mac Application Manager 1.3 (SOLO PER TIGER)

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Chiamate di sistema per la Gestione dei processi in POSIX. E.Mumolo, DEEI

Gestione dei File in C

Introduzione alla. Alessandra Giordani Lunedì 27 febbraio

Gestione Risorse Umane Web

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

IRSplit. Istruzioni d uso 07/10-01 PC

Registratori di Cassa

Appunti di Informatica 1

Scuola Superiore Sant Anna. Progetto parte Unix. AA : Distributed File Repository

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

DevC++ vers Manuale d uso

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

CREAZIONE PROCESSI IN UNIX 20

Informatica Generale 1 - Esercitazioni Introduzione all uso della command-line shell

Esercitazione n. 10: HTML e primo sito web

Laboratorio di Sistemi Operativi

PORTALE CLIENTI Manuale utente

Link e permessi. Corso di Laurea Triennale in Ingegneria delle TLC e dell Automazione. Corso di Sistemi Operativi A. A

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Processi UNIX. I Processi nel SO UNIX. Gerarchie di processi UNIX. Modello di processo in UNIX

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Sincronizzazione e comunicazione tra processi in Unix. usati per trasferire ad un processo l indicazione che un determinato evento si è verificato.

Introduzione. Installare EMAS Logo Generator

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Sistemi Operativi Teledidattico

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

Introduzione all uso di Eclipse


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

Elementi di Architettura e Sistemi Operativi

I Metacaratteri della Shell Unix

Sistemi Operativi. Esercitazione 2 Compilazione, Makefile e Processi

Funzioni in C. Violetta Lonati

filrbox Guida all uso dell interfaccia WEB Pag. 1 di 44

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per sito)

Laboratorio di Sistemi Operativi

System calls. permettono ai programmi utente di richiedere servizi al Sistema Operativo. servizi come scrittura di file, stampa su video, ecc.

Come si può vedere, la regola è stata fatta in modo da spostare tutti i messaggi di Spam nella cartella del cestino.

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Corso basi di dati Installazione e gestione di PWS

Il Software. Il software del PC. Il BIOS

Il seguente Syllabus è relativo al Modulo 7, Reti informatiche, e fornisce i fondamenti per il test di tipo pratico relativo a questo modulo

Esempio di esecuzione di una pagina JSP: Il client chiede la pagina: sdfonline.unimc.it/info/modulo.jsp;

Introduzione a Quantum GIS (QGIS) - passaggio dal software ArcView 3.x a software GIS OpenSource

ALTRO. v (Maggio 2015)

I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte.

SPSS Statistics per Windows - Istruzioni di installazione per (Licenza per utenti singoli)

ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX

GestVetrine 1.1 versione novembre 2014

4.1 FAX Sollecito consegne via (Nuova funzione)

Guido d uso sito internet Unione Valdera

I.N.A.I.L. Certificati Medici via Internet. Manuale utente

GSP+ Customer Relationship Manager V 7.0. Manuale utente

Protezione. Protezione. Protezione. Obiettivi della protezione

MODEM USB MDC525UP Guida Rapida LINUX

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO e PARAMETRI2015

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

Servizio Telematico Paghe

Configurare Outlook Express

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Software per la diagnostica dei file batch

Calcolatori Elettronici Parte X: l'assemblatore as88

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

OwnCloud Guida all installazione e all uso

2010 Ing. Punzenberger COPA-DATA Srl. Tutti i diritti riservati.

Esercitazione [8] Pipe e FIFO

Drivers. Introduzione Tipologie Struttura Interazione con il kernel

POSTECERT POST CERTIFICATA GUIDA ALL USO DELLA WEBMAIL

Tutorial KISSsoft: versione di prova e fasi iniziali

Manuale NetSupport v Liceo G. Cotta Marco Bolzon

SQL Server Integration Services. SQL Server 2005: ETL - 1. Integration Services Project

Programma di configurazione di reti NetWare

IPC System V. Code di messaggi

ALTRO. v (Aprile 2015)

ARCHIVIAZIONE DOCUMENTALE NEiTdoc

Esercizio 2. Client e server comunicano attraverso socket TCP

Manuale del Docente - Scienze Politiche

Transcript:

Corso di Laboratorio di Sistemi Operativi Lezione 5 Alessandro Dal Palù email: alessandro.dalpalu@unipr.it web: www.unipr.it/~dalpalu

Processi in Unix Approfondimenti: http://gapil.gnulinux.it/download/

Processi in Unix In Unix i processi vengono creati dalla syscall fork(); il processo figlio è una copia identica del processo padre, ma ha un nuovo pid e viene eseguito in maniera indipendente. Il padre può attendere la fine del processo figlio con wait() o waitpid() Usi tipici di fork(): - unico programma con 2 sezioni, una per il padre, l altra per i figli (tipica del client server) - il figlio esegue un altro programma mediante le syscall della famiglia exec() (tipica della shell) Il processo figlio condivide con il padre la lista dei file descriptors.

Syscalls in Unix getenv(), getpid(), getppid(), getuid(), getcwd() Informazioni sull ambiente. putenv(), setuid(), setgid(), chdir() Modificare ambiente del processo. fork(), exit() Creazione/terminazione nuovo processo. execve(), execl(), execlp(), execle(), execv(), excvp() Sostituire il programma in esecuzione con un altro. wait(), waitpid() Sospendere esecuzione fino alla terminazione del figlio/processo.

Esempio padre figlio #include <unistd.h> #include <stdio.h> #include <sys/wait.h> int main(int argc, char *argv[]) { int pid,retv; switch(pid=fork()){ case -1: printf("errore in creazione figlio\n"); exit(-1); case 0 : sleep(2); // figlio exit(3); default: wait(&retv); // padre printf("figlio ha terminato con exit status %d\n",wexitstatus(retv)); } }

Esercizio Scaricare il file esempiofork.c Modificare il codice, aggiungendo la stampa del proprio pid e ppid (usando getpid e getppid) Compilare con make esempiofork (osservare che make possiede delle regole implicite che compilano i files.c etc) NON scrivete la documentazione in latex (vediamo poi come farla in doxygen) Tempo 20 minuti

Doxygen Tool per la generazione automatica di documentazione di software (C, Java,...) Documentazione completa www.doxygen.org Utilizza i commenti inseriti nei files sorgente per impaginare una documentazione. Utilizza un file di configurazione Doxyfile, in cui si può scegliere il formato di output (html, man, latex, rtf...)

Esercizio Scaricare il file Doxyfile nella stessa directory di esempiofork.c e lanciare doxygen Entrare nella sottodirectory doc creata e osservare (ls) i vari output generati Copiare i files html (tutta la cartella) in una sottocartella di ~/html/ e creare un link dalla directory della lezione Entrare nella sottodir latex e lanciare make, che compila il manuale in PDF. Analizzare il Makefile generato automaticamente da doxygen Analizzare il file Doxyfile e identificare i punti da toccare per: cambiare nome al progetto, cambiare directory di output, selezionare i tipi di files in output. Tempo 30 minuti

Eseguire programmi Per eseguire un programma usare la famiglia exec. Per maggiori informazioni: man execl o su gapil. Esempio: execl("/bin/ls","ls","-l",0) execl prende il path, seguito dagli argomenti (il primo è il comando vero e proprio). L ultimo argomento DEVE essere 0, per segnalare il termine della lista. Esercizio: includere nel file esempiofork.c il comando exec

I files - Accesso bufferizzato Linux possiede 2 interfacce per l accesso ai file: bufferizzato e non bufferizzato. Interfaccia standard ANSI C (che avrete già usato). E bufferizzata (da glibc) e si basa sul concetto di stream (FILE *). L interfaccia è definita in stdio.h fornisce un alto livello di astrazione e di indipendenza dal sistema operativo (infatti può essere compilata su qualunque sistema).

I files - Accesso non bufferizzato Interfaccia standard di Unix. E una interfaccia non bufferizzata basata sui file descriptor (numeri interi). L interfaccia è definita nell header unistd.h. E una interfaccia di piu basso livello, strettamente legata alle syscalls di Unix, ed e quindi adatta per la programmazione di sistema.

Per questi 3 interi in unistd.h sono definite 3 costanti simboliche: STDIN FILENO STDOUT FILENO e STDERR FILENO I file descriptor e i file standard I file descriptor sono interi (indici di un vettore) che vengono assegnati progressivamente a partire da 0 ai nuovi file aperti di un processo. Ogni nuovo processo viene lanciato con almeno tre file aperti. fd0 : standard input. E sempre associato al file da cui ci si aspetta di ricevere i dati di ingresso. Nel caso si una shell e la tastiera del teminale. fd1 : standard output. E sempre associato al file da cui ci si aspetta debbano essere inviati i dati di uscita. Nel caso si una shell e il video del teminale. fd2 : standard error. E sempre associato al file da cui ci si aspetta debbano essere inviati i messaggi di errore. Nel caso si una shell e il video del teminale.

Operazioni su files Apertura di un file: fd=open(nomefile, flags) (vedere man 2 open) Esempi: fd=open(filename, O_RDONLY) fd=open(filename,o_creat O_WRONLY O_TRUNC,S_IRWXU S_IRGRP S_IROTH) Chiusura di un file close(fd) Quando un processo termina vengono chiusi tutti i suoi fd. Se non rimangono altri fd sul file aperto viene chiuso anche il file.

Operazioni su files Lettura di un file: n=read(int fd, char* buffer, int num_byte); La funzione ritorna il numero di byte letti oppure -1 in caso di errore Scrittura di un file: n=write(int fd, char* buffer, int num_byte); La funzione ritorna il numero di byte scritti oppure -1 in caso di errore

Esercizi Approfondire: http://scuola.linux.it/docs/prg_c/cgiprg15.html Provare i due esempi contenuti creando i files scrivi.c e leggi.c Tempo 20 minuti

Operazioni su files Modifica della posizione corrente di un file: n=lseek(fd, offset, whence); Valori possibili di whence: SEEK_SET SEEK_CUR SEEK_END La funzione ritorna la nuova posizione. Per conoscere la posizione corrente di un file: lseek(fd,0,seek_cur); Per riportare all inizio del file la posizione corrente: lseek(fd,0, SEEK_SET); Approfondire con man 2 lseek

Esercizio Esericzio: modificare il file leggi.c. Leggere e stampare a video gruppi di 2 caratteri saltando i successivi 3 (usare lseek) Esempio: file contiene abcdefghiljkl Output: abfgjk Tempo 20 minuti

Condivisione files Forzare lo scarico dei buffer del kernel: sync() Forzare lo scarico dei buffer di un singolo file: fsync(fd) Duplicazione di un FD su un nuovo FD: newfd=dup(oldfd) Duplicazione si un FD su un FD esistente: dup2(oldfd,newfd) Operazioni ausiliarie su un fd: fcntl(fd,comando) Operazioni su file speciali: ioctl(fd,request) (Esegue operazioni specifiche dell hardware) Cambiamento dei font di un terminale Esecuzione di una traccia audio di un CDROM Impostazione della velocità di trasmmissione di una linea seriale Espulsione di un dispositivo removibile

Una shell minimale - esercizio (i) Scaricare il file mysh-0.1.tar.gz dal sito del corso Estrarre il contenuto in una nuova directory Osservare come è scritto il makefile Studiare il codice nelle sue parti Espandere la shell con il comando which, che restituisce il path completo di un comando immesso da prompt (se esiste). Prototipo funzione: which(char *cmd, char *cmdfq) cmd è il nome del comando cmdfq è il nome fully qualified, comprensivo del path Utilizzare la variabile path per ricavare le directory che potrebbero contenere il comando (cmd[0]) Utilizzare la funzione access() (man 2 access) per testare l esistenza del percorso + nome comando

Una shell minimale - esercizio (ii) Commentare il codice per doxygen, produrre una nuova versione 0.2 della shell e la relativa documentazione. Estendere la shell e permettere l esecuzione di comandi, utilizzando la funzione which, fork, wait ed exec.