Unix e GNU/Linux -...

of 5/5
Prima Esercitazione Fork Stefano Monti [email protected] Eugenio Magistretti [email protected] Unix e GNU/Linux 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
  • date post

    09-Jun-2019
  • Category

    Documents

  • view

    212
  • download

    0

Embed Size (px)

Transcript of Unix e GNU/Linux -...

Prima Esercitazione

Fork

Stefano [email protected]

Eugenio [email protected]

Unix e GNU/LinuxUnix: sviluppato negli anni '60-'70 presso Bell Labs di AT&T,

attualmente sotto il controllo del consorzio The Open GroupUNIX 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-likeobiettivo raggiunto nel '92, con l'adozione del kernel Linux

Linuxprimo kernel rilasciato nel 1991 ad opera di Torvalds, successivamente, adozione di software dal progetto GNUattualmente kernel ufficiale Linux nome in codice Vanilla

Distribuzioni GNU/LinuxAttualmente varie distribuzioni GNU/Linux (comunemente distro):

personalizzazione del kernel vanillacollezione 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 voltadifferenti per famiglie di distribuzioni (RPM, APT, Portage, ecc...)operazioni di installazione, rimozione, aggiornamento di pacchetti softwaregestione 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 CDnessuna installazione, ambiente di lavoro stateless e ripetibile, prestazioni penalizzate

Virtualizzazioneinstallazione ugualmente complessa ma priva di complicazioni per la macchina fisica, prestazioni ragionevoli

Virtualizzazione

HARDWARE

Host OS (e.g., Windows or GNU/LINUX)

Virtualization Software

Virtual Machine

Guest OS GNU/LINUX

Virtual Machine

Guest OS Windows

Virtual Machine

Guest OS GNU/LINUX

VMWareSoftware di virtualizzazione largamente diffuso

diversi prodotti, sia commerciali che gratuiti per piattaforme Windows e GNU/Linuxhttp://www.vmware.com/products/free_virtualization.html

VMWare Player: esecuzione di macchine virtuali esistentiVMWare Server: creazione e configurazione di nuove macchine virtualiVirtual 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 baseman

manuale del comando e opzionicd

Permette di spostarsi allinterno del file systemPosizioni relative:

. (direttorio corrente) e .. (direttorio padre)

mkdir Creazione di un nuovo direttorio

ls Lista il contenuto del direttorio corrente

emacs (o vi) Programmi per lediting; se il file non esiste, lo creano

Compilazione di un programmaComando gcc

Compilatore C e C++Compila producendo il file eseguibile a.outPer dare un nome diverso al file prodotto opzione -o

Es: gcc file_exec.c -o f_exEsecuzione: ./f_ex

Comandi fondamentali

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?)

wait

Terminazione di un processoSi indica lo stato di terminazione; normalmente stato=0 se il processo termina correttamente, un valore diverso da 0 in caso di problemi

exit

Generazione di un processo figlio, che condivide il codice col padre e possiede dati replicatiRestituisce il pid del figlio per il padre, 0 per il figlio o unnumero

Esempio 2 - fork e waitScrivere 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 dellalfabeto, ottenuta scostandosi dalla lettera a un numero di lettere pari allordine 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 2for(i=0;i

Esercizio 1 2/2In particolare

Il processo padre genera un numero di figli pari al valore indicato dallargomento Ciascun figlio genera un numero di figli (nipoti del processo padre) pari al valore corrispondente nella sequenza individuata dagli argomenti *Il parallelismo determinato dal flag

Come fa il padre a gestirlo?

Father

417416 420i=0

i=1 i=2

./hierarchy 0 3 2 1 3

422

421 423i=0

i=1

i=2

418i=0419 424

i=0 i=1

Attenzione ai pid dei processi: con =0 non

abbiamo ordine di precedenza nelle

sequenze di generazione*

*N.B.: localmente ad ogni processo I figli verranno generati in ordine comunque

Father

419416 421i=0

i=1 i=2

./hierarchy 1 3 2 1 3

423

422 424i=0

i=1

i=2

420i=0417 418

i=0 i=1

Attenzione ai pid dei processi: con

=1 ciascun processo padre deve

attendere la terminazione

dellultimo figlio generato prima di

generarne altri