Похожие документы
Prima Esercitazione. Unix e GNU/Linux. GNU/Linux e linguaggio C. Stefano Monti smonti@deis.unibo.it

NOZIONI BASE PER ESERCITAZIONI

Il Sistema Operativo Linux

Terza Esercitazione. Unix - Esercizio 1. Unix System Call Exec Java Introduzione Thread

Il Software. Il software del PC. Il BIOS

Corso base GNU/Linux Latina Linux Group. Sito web: Mailing list:

Guida di Installazione GCC

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

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

Il Sistema Operativo (1)

Parte V. Sistemi Operativi & Reti. Sistemi Operativi. Sistemi Operativi

VMware. Gestione dello shutdown con UPS MetaSystem

Premessa Le indicazioni seguenti sono parzialmente tratte da Wikipedia ( e da un tutorial di Pierlauro Sciarelli su comefare.

Il software del PC. Il BIOS

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

Il computer: primi elementi

Seminari Acmesystems. NerInformatica. Relatore : Luciano Neri. Ingegnere libero professionista Ordine degli Ingegneri di Vicenza

Informatica. Il software (S.O.) e ancora sulle basi numeriche

LPIC-1 Junior Level Linux Certification

PROGRAMMA DEL CORSO AMMINISTRATORE DI SISTEMI LINUX

Laboratorio di Programmazione

MagiCum S.r.l. Progetto Inno-School

LINUX. Che cos'e` un sistema operativo?

Modello dei processi. Riedizione delle slide della Prof. Di Stefano

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

Potenza Elaborativa, Sistemi Operativi e Virtualizzazione

Introduzione a Dev-C++

Architettura di un sistema operativo

Corso ForTIC C2 LEZIONE n. 1

I Sistemi Operativi. Installazione Ubuntu Linux su Macchina Virtuale

Riferimento rapido per l'installazione SUSE Linux Enterprise Server 11 SP1

Online Help StruxureWare Data Center Expert

Il web server Apache Lezione n. 3. Introduzione

START Easy GO! Il gestionale sempre in tasca! Procedura di aggiornamento. Documentazione utente Pagina 1 di 18

Rsync su GNU/Linux e su Windows? (Backup sincronizzato su disco di rete e/o RAID1 su server FreeNAS)

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

MODEM USB MDC525UP Guida Rapida LINUX

IL SOFTWARE. Giada Agostinacchio Classe 2^ Beat ISIS G.Meroni Lissone Anno Scolastico 2007/2008

Approccio stratificato

Riferimento rapido per l'installazione SUSE Linux Enterprise Server 11

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

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Mac Application Manager 1.3 (SOLO PER TIGER)

Linux e Open Source: Libero! Non "gratis"...

Gestione dei processi

Terza lezione: Directory e File system di Linux

Primi Passi con GNU/Linux

Elementi di Architettura e Sistemi Operativi

PORTALE CLIENTI Manuale utente

Gestione del software

NOZIONI BASE SHELL E SCRIPT LINUX

Multisentry ASE-V (v. 1.0) - Guida rapida all installazione

Sistemi Operativi (modulo di Informatica II) I processi

ISTVAS Ancona Introduzione ai sistemi operativi Tecnologie Informatiche

Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica. Ing. Domenico De Guglielmo Vanessa Gardellin & Sara Lioba Volpi

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

Usare Python in Linux

POLINUX. Linux for Polimi people

Acronis Universal Restore

Applicazioni di Ubuntu

DINAMIC: gestione assistenza tecnica

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

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Corso Linux Corso Online Amministratore di Sistemi Linux

Virtualizzazione VirtualBox su Host Windows

Corso di Laboratorio di Sistemi Operativi

Introduzione al Python

VIRTUALIZZAZIONE. Docente: Marco Sechi Modulo 1

EyeOS - intranet desktop mini howto

Introduzione ai Sistemi Operativi

1. opzione 1, ubuntu accanto a windows

Pacchettizzazione e distribuzione del software

Eclipse e Subversion

OwnCloud Guida all installazione e all uso

NAL DI STAGING. Versione 1.0

Laboratorio virtuale Progetto dei dipartimenti di Astronomia, Fisica, Matematica e Scienze dell Informazione

L'Informatico tra ubuntu e.. altri OS

Risolvere i problemi di avvio di Windows XP

Protezione del Kernel Tramite Macchine Virtuali

SquashFS, AuFS ed i segreti delle distribuzioni live

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

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

Транскрипт:

Unix e GNU/Linux Eugenio Magistretti emagistretti@deis.unibo.it Prima Esercitazione Fork Stefano Monti smonti@deis.unibo.it Unix: sviluppato negli anni '60-'70 presso Bell Labs di AT&T, attualmente sotto il controllo del consorzio The Open Group UNIX certified: sistemi fully-compliant (IBM AIX, Solaris 10,...) Unix-like: sistemi NON fully-compliant (GNU/Linux, BSD,...) GNU (GNU's Not Unix) progetto annunciato da Stallman '83; obiettivo la creazione di un sistema operativo free Unix-like obiettivo raggiunto nel '92, con l'adozione del kernel Linux Linux primo kernel rilasciato nel 1991 ad opera di Torvalds, successivamente, adozione di software dal progetto GNU attualmente kernel ufficiale Linux nome in codice Vanilla Distribuzioni GNU/Linux Attualmente varie distribuzioni GNU/Linux (comunemente distro): personalizzazione del kernel vanilla collezione di pacchetti (applicativi) software: archivi compressi usati per automatizzare e semplificare l'installazione di applicazioni (compilazione dei sorgenti, impostazione delle variabili di ambiente, configurazione di permessi, ecc...) alcuni esempi: Redhat/Fedora, Slackware, Debian, Gentoo, Ubuntu, SUSE, ecc... Gestori di pacchetti: sono pacchetti a loro volta differenti per famiglie di distribuzioni (RPM, APT, Portage, ecc...) operazioni di installazione, rimozione, aggiornamento di pacchetti software gestione dipendenze tra pacchetti Ai fini del corso... Necessità di utilizzare un sistema operativo Unix-like; varie possibilità: Installazione di una distribuzione Linux su una macchina fisica: maggiore apprendimento ma complessità e problematiche maggiori (partizionamento del disco fisso, dual booting, ecc...) Uso distribuzioni Linux Live CD nessuna installazione, ambiente di lavoro stateless e ripetibile, prestazioni penalizzate Virtualizzazione installazione ugualmente complessa ma priva di complicazioni per la macchina fisica, prestazioni ragionevoli

Virtualizzazione VMWare GNU/LINUX Windows Virtualization Software Host OS (e.g., Windows or GNU/LINUX) HARDWARE GNU/LINUX Software di virtualizzazione largamente diffuso diversi prodotti, sia commerciali che gratuiti per piattaforme Windows e GNU/Linux http://www.vmware.com/products/free_virtualization.html VMWare Player: esecuzione di macchine virtuali esistenti VMWare Server: creazione e configurazione di nuove macchine virtuali Virtual Appliances Marketplace: repository di macchine virtuali preconfezionate (ad es., installazioni di base delle maggiori distro) VMWare Converter: creazione di macchine virtuali a partire da macchine fisiche (solo per piattaforma Windows) già esistenti Shell - comandi di base man <nome_comando> manuale del comando e opzioni cd <nome_directory> Permette di spostarsi all interno del file system Posizioni relative:. (direttorio corrente) e.. (direttorio padre) mkdir <nome_nuova_directory> Creazione di un nuovo direttorio ls <parametri> Lista il contenuto del direttorio corrente emacs (o vi) <nome_file> Programmi per l editing; se il file non esiste, lo creano Compilazione di un programma Comando gcc <file> Compilatore C e C++ Compila <file> producendo il file eseguibile a.out Per dare un nome diverso al file prodotto opzione -o Es: gcc file_exec.c -o f_ex Esecuzione:./f_ex <parametri>

Comandi fondamentali Esempio 1 - fork e exit fork exit wait Generazione di un processo figlio, che condivide il codice col padre e possiede dati replicati Restituisce il pid del figlio per il padre, 0 per il figlio o un numero <0 in caso di errore Terminazione di un processo Si indica lo stato di terminazione; normalmente stato=0 se il processo termina correttamente, un valore diverso da 0 in caso di problemi Raccoglimento dello stato di terminazione di un figlio (con eventuale attesa) Restituisce il pid del figlio terminato e permette di capire il motivo della terminazione (Volontaria? Con quale stato? Involontaria? A causa di quale segnale?) Scrivere un programma in cui il processo padre procede alla istanziazione di un numero N di figli Attenzione all indicazione di terminazione dei figli Cosa succede se ci si dimentica di effettuare la exit()? Esempio 1 Assenza della exit() int main (int argc, char * argv[]) int i,j,k,pid,status,childs; char term; childs=atoi(argv[1]); 1 for(;i<childs;i++) if(pid==0) term=argv[2][0]; for(;i<childs;i++) if(pid==0) else if(pid>0) created(pid=%d)\n", getpid(),pid); else perror("fork error:"); printf("%d)child for(;i<childs;i++) if(pid==0) 2 4 for(;i<childs;i++) if(pid==0) 3 for(;i<childs;i++) if(pid==0)

Esempio 2 - fork e wait Scrivere un programma in cui il processo padre procede alla istanziazione di un numero N di figli. Ciascun figlio è incaricato di stampare a terminale 10 volte una lettera dell alfabeto, ottenuta scostandosi dalla lettera a un numero di lettere pari all ordine di generazione del figlio stesso. Si richiede un output ordinato: prima dovranno essere stampate le 10 a, quindi le 10 b Problema di sincronizzazione tra il padre ed i figli Quale grado di parallelismo? Esempio 2 for(;i<childs;i++) if(pid==0) c='a'+i; for(j=0;j<iteration;j++) printf("%c",c); fflush(0); for(k=0;k<active_wait;k++); //Ciclo di attesa attiva printf( \n"); else if(pid>0) wait(&status); else perror("fork error:"); Assenza della wait() i=1 2 1 i=10 3 N Esercizio 1 1/2 Scrivere un comando che abbia la sintassi hierarchy <flag> <#_cldr> <#_grandcldr>* a b m acdamd Standard output Flag per controllare il grado di concorrenza: 1 figli in ordine sequenziale altrimenti figli in parallelo Numero di figli al primo livello della gerarchia Lista del numero di nipoti (grandchildren) corrispondenti a ciascun figlio

Esercizio 1 2/2 In particolare Il processo padre genera un numero di figli pari al valore indicato dall argomento <#_cldr> Ciascun figlio genera un numero di figli (nipoti del processo padre) pari al valore corrispondente nella sequenza individuata dagli argomenti <#_grandcldr>* Il parallelismo è determinato dal flag Come fa il padre a gestirlo? 416 i=1 419 424./hierarchy 0 3 2 1 3 Father 417 418 Attenzione ai pid dei processi: con <flag>=0 non abbiamo ordine di precedenza nelle sequenze di generazione* 420 i=1 422 421 423 *N.B.: localmente ad ogni processo I figli verranno generati in ordine comunque 416./hierarchy 1 3 2 1 3 Father 419 Attenzione ai pid dei processi: con <flag>=1 ciascun processo padre deve attendere la terminazione dell ultimo figlio generato prima di generarne altri 421 i=1 417 418 420 i=1 423 422 424