14
Un Sistema Operativo multiuser-multitask UNIX I lucidi che seguono sono stati prodotti sulla base dei seguenti riferimenti: lucidi del corso di Architettura degli Elaboratori Dip. Informatica dell’Università di Bari a cura di Pizzutilo, Tangorra, De Carolis Corso UNIX di Roberto Polillo dell’Università di Milano Corso Unix di Marco Liverani dell’Università di Roma Corso di Laboratorio di sistemi Operativi – Dip. Informatica dell’Università di Bari a cura di De Carolis, Bianchi. I SISTEMI OPERATIVI DI RETE Obiettivo principale Implementazione servizi di rete – Configurazione automatica delle workstation (DHCP) – Gestione centralizzata degli utenti (NIS) – Condivisione di risorse (NFS, SAMBA) – Servizi base per Internet (HTTP, FTP, TELNET, SSH) – Servizi di Forwarding e Routing – Servizi di Firewall e NAT (IPTABLES) – Servizi di Virtual Private Network – Servizi avanzati per Internet (DNS, SMTP, POP, IMAP) Scelta degli strumenti Occorre un sistema operativo adatto • UNIX – Multiutente (multiuser) – Concorrente (multitasking) – Tradizionalmente adottato per servizi di rete – Ne esistono distribuzioni sia commerciali che “libere” • Windows – Generalmente considerato meno affidabile – Alti costi per acquisizione licenze

Un Sistema Operativo multiuser-multitask UNIXdisys/intrunix.pdf · sistema, supportate dal kernel, per fornire funzioni utili, come compilazione e manipolazione di file. Come molti

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Un Sistema Operativo multiuser-multitask UNIXdisys/intrunix.pdf · sistema, supportate dal kernel, per fornire funzioni utili, come compilazione e manipolazione di file. Come molti

1

Un Sistema Operativo multiuser-multitaskUNIX

I lucidi che seguono sono stati prodotti sulla base dei seguenti riferimenti:lucidi del corso di Architettura degli Elaboratori Dip. Informatica dell’Università di Bari a cura di Pizzutilo, Tangorra, De CarolisCorso UNIX di Roberto Polillo dell’Università di MilanoCorso Unix di Marco Liverani dell’Università di RomaCorso di Laboratorio di sistemi Operativi – Dip. Informatica dell’Università di Bari a cura di De Carolis, Bianchi.

I SISTEMI OPERATIVI DI RETE

Obiettivo principale Implementazione servizi di rete– Configurazione automatica delle workstation (DHCP)– Gestione centralizzata degli utenti (NIS)– Condivisione di risorse (NFS, SAMBA)– Servizi base per Internet (HTTP, FTP, TELNET, SSH)– Servizi di Forwarding e Routing– Servizi di Firewall e NAT (IPTABLES)– Servizi di Virtual Private Network– Servizi avanzati per Internet (DNS, SMTP, POP, IMAP)

Scelta degli strumenti Occorre un sistema operativo adatto• UNIX

– Multiutente (multiuser)– Concorrente (multitasking)– Tradizionalmente adottato per servizi di rete– Ne esistono distribuzioni sia commerciali che “libere”

• Windows– Generalmente considerato meno affidabile– Alti costi per acquisizione licenze

Page 2: Un Sistema Operativo multiuser-multitask UNIXdisys/intrunix.pdf · sistema, supportate dal kernel, per fornire funzioni utili, come compilazione e manipolazione di file. Come molti

2

Breve storia di UNIX

Sviluppato inizialmente, a partire dal 1969, da Ken Thompson e Dennis Ritchie del gruppo di ricerca dei Bell Laboratories. Incorporò caratteristiche di altri sistemi operativi (es. MULTICS).La terza versione, scritta in C, fu sviluppata ai Bell Labs appositamente per supportare UNIX.La più significativa delle versioni UNIX non-Bell fu sviluppata alla University of California at Berkeley (Berkeley Software Distributions).

Sviluppato per il VAX, 4.3BSD è una delle versioni piùimportanti e ne è stato fatto il porting su varie piattaforme.4BSD UNIX è il risultato di un finanziamento DARPA per lo sviluppo di uno standard UNIX ad uso governativo.

Vari progetti di standardizzazione hanno tentato di consolidarele varianti di UNIX, per ottenere un’unica interfaccia di programmazione verso il sistema.

Storia delle versioni UNIX

Page 3: Un Sistema Operativo multiuser-multitask UNIXdisys/intrunix.pdf · sistema, supportate dal kernel, per fornire funzioni utili, come compilazione e manipolazione di file. Come molti

3

Architettura di UNIX

Kernel: tutto ciò che si trova sotto l’interfaccia dellesystem-call e sopra l’hardware fisico.Fornisce il file system, lo scheduling della CPU,

la gestione della memoria ed altre funzioni di SO, tramite le chiamate di sistema (system call);

Programmi di sistema: impiegano le chiamate di sistema, supportate dal kernel, per fornire funzioniutili, come compilazione e manipolazione di file.

Come molti sistemi operativi, UNIX consiste di 2 parti separate:

UNIXÈ un sistema operativo:

MultiuserMultitask : multiprocessing - multithreadingTime-sharing

kernel

shell

tools

Page 4: Un Sistema Operativo multiuser-multitask UNIXdisys/intrunix.pdf · sistema, supportate dal kernel, per fornire funzioni utili, come compilazione e manipolazione di file. Come molti

4

UNIX : Sistema Operativo multistrato

Librerie standard di sistema

gui Xwindow

HARDWARE

utente

Programmi di utilità(shell, editor, compilatori ed interpreti,…)

KE

RN

EL

Gestione dei processiLa rappresentazione dei processi è il principale problema di

progetto di un sistema operativo.UNIX si distingue dagli altri sistemi operativi per la semplicità con cui processi multipli possono essere creati e manipolati.I processi vengono raprresentati in UNIX per mezzo di variblocchi di controllo (control blocks).

I blocchi di controllo associati ad un processo vengonomemorizzati nel kernel.L’informazione contenuta nei blocchi di controllo vieneutilizzata dal kernel per controllare i processi ed effettuare lo scheduling della CPU.

Page 5: Un Sistema Operativo multiuser-multitask UNIXdisys/intrunix.pdf · sistema, supportate dal kernel, per fornire funzioni utili, come compilazione e manipolazione di file. Come molti

5

System Call

Le chiamate di sistema definiscono l’interfaccia del programmatore verso UNIX.L’insieme dei programmi di sistema disponibili definiscel’interfaccia utente.Le interfacce del programmatore ed utente definiscono ilcontesto che deve essere supportato dal kernel.Si hanno, approssimativamente, tre categorie di system call in UNIX:

Manipolazione di file (le stesse chiamate di sistemasupportano anche la manipolazione dei dispositivi).Controllo dei processi.Manipolazione dell’informazione.

Controllo dei processi -1

Un processo è un programma in esecuzione identificato univocamentedall’identificatore di processo (un intero).

. Un processo necessita di alcune risorse per assolvere il propriocompito: tempo di CPU, memoria, file e dispositivi di I/O.

Il SO è responsabile delle attività di gestione dei processi:Creazione e cancellazione di processi.Sospensione e riattivazione di processi.Fornire meccanismi per:

sincronizzazione di processicomunicazione fra processi

System call per il controllo dei processi:Fork, execve, exit, wait….

Processo zombie: processo terminato dopo il padre.

Page 6: Un Sistema Operativo multiuser-multitask UNIXdisys/intrunix.pdf · sistema, supportate dal kernel, per fornire funzioni utili, come compilazione e manipolazione di file. Come molti

6

System call di gestione dei processi

Stati di un processoReady pronto ad essere eseguito, ma non in esecuzione

running in esecuzione

waiting in attesa di un evento o di un dato

Controllo dei processi — 2

I processi comunicano fra loro attraverso pipe, code di byte che sono accessibili tramite un descrittore di file.Tutti i processi utente sono figli di un unico processo, init.

• init crea un processo getty, cheinizializza i parametri dellalinea del terminale e attende illogin name dell’utente per passarlo al processo login.• Login confronta l’useridentifier per verificarne i dirittidi accesso al sistema.esegue unashell che crea sottoprocessi per ciascun comando utente.

Page 7: Un Sistema Operativo multiuser-multitask UNIXdisys/intrunix.pdf · sistema, supportate dal kernel, per fornire funzioni utili, come compilazione e manipolazione di file. Come molti

7

Gruppi di processi

In ogni istante, un unico gruppo di processi può utilizzare un certo terminale di I/O.

Il processo (unico) in foreground si svolge sotto gli occhidall’utente al terminale.I processi in background realizzano il loro compito senzainteragire direttamente con l’utente.

Ciascun processo eredita il proprio terminale di controllo dalprocesso padre.

Un insieme di processi correlati che concorrono allarealizzazione di un task comune.

Comunicazione tra processiLa maggior parte dei sistemi UNIX non permette la condivisione dellamemoria in quanto l’hardware nativo PDP-11 non la incoraggiava.La pipe è il meccanismo IPC più caratteristico di UNIX, che garantisce un flusso unidirezionale affidabile di byte tra due processi. Nel 4.3BSD, le pipe sono implementate come un caso speciale del meccanismo delle socket, il quale non fornisce un’interfaccia generale solo a funzioni tipo pipe, che sono locali su una macchina, ma anche a funzionidi rete.

L’interfaccia delle chiamate di sistema in UNIX viene supportata ed ampliata da una notevole collezione di routine di libreria. I file header forniscono la definizione di strutture dati complesse impiegatenelle chiamate di sistema. Librerie addizionali sono fornite per funzioni matematiche, accesso allarete, conversioni di dati, ecc.

Routine di libreria

Page 8: Un Sistema Operativo multiuser-multitask UNIXdisys/intrunix.pdf · sistema, supportate dal kernel, per fornire funzioni utili, come compilazione e manipolazione di file. Come molti

8

Scheduling della CPUCiascun processo ha associata una propria priorità di scheduling; numeri più alti indicano priorità più basse.La presenza di feedback negativo nello scheduling della CPU diminuisce il rischio che un processo ne prenda possesso in modoesclusivo.Tecniche di invecchiamento (aging) dei processi vengono impiegate per impedire l’attesa indefinita (starvation).Quando un processo decide di rilasciare la CPU, si pone in stato di sleep per un evento.Quando tale evento accade, il processo di sistema che lo gestiscechiama wakeup con l’indirizzo corrispondente all’evento, e tutti i processi che si trovano in stato di sleep allo stesso indirizzo vengonospostati nella coda ready per essere eseguiti.

Interfaccia utente

Programmatori ed utenti interagiscono prevalentemente con programmi di sistema già esistenti: Le chiamate di sistemarichieste sono incorporate nel programma e non devono essereconosciute dall’utente.

I programmi di sistema più comuni sono orientati alla gestionedi file e directory.

Directory: mkdir, rmdir, cd, pwdFile: ls, cp, mv, rm

Altri programmi sono relativi a editor (e.g., emacs, vi) formattatori di testo (e.g., troff, TEX), e altro.

Page 9: Un Sistema Operativo multiuser-multitask UNIXdisys/intrunix.pdf · sistema, supportate dal kernel, per fornire funzioni utili, come compilazione e manipolazione di file. Come molti

9

Shell e comandi

Shell o interprete dei comandi – il processo utente che esegue i programmi.Viene chiamata shell perché “ingloba” il kernel.La shell indica che è pronta ad accettare un nuovo comandovisualizzando un prompt e l’utente introduce comandi su unasingola linea.La shell naviga attraverso il percorso di ricerca per trovare il file relativo al comando, che viene in seguito caricato ed eseguito.Le directory /bin e /usr/bin (che contengono la maggior parte deicomandi) sono quasi sempre nel percorso di ricerca.La shell normalmente sospende la propria esecuzione fino al termine del comando.

Standard I/O

La maggior parte dei processi, quando iniziano la loro esecuzione, siaspettano di poter disporre di tre descrittori di file aperti:

standard input – il processo può leggere cosa viene scrittodall’utentestandard output – il processo può inviare l’output sullo schermodell’utentestandard error – uscita dell’errore

Molti programmi possono anche utilizzare file (piuttosto che un terminale) per lo standard input e lo standard output.Redirezione dell’I/O: Le shell più comuni dispongono di una semplicesintassi per cambiare i file aperti per l’I/O standard di un processo.

Page 10: Un Sistema Operativo multiuser-multitask UNIXdisys/intrunix.pdf · sistema, supportate dal kernel, per fornire funzioni utili, come compilazione e manipolazione di file. Come molti

10

Classi di comandi

Amministrazione di sistemaGestione filesElaborazione testiSviluppo softwareComunicazione….

Pipeline, Filtri, e Shell ScriptI singoli comandi possono essere “accodati” per mezzo di una barra verticale | (pipe). In questo modo, l’outputdel comando a sinistra della pipe costituisce l’input per ilcomando alla sua destra.

% ls | pr | lprFiltro – un comando che passa il proprio standard input allo standard output, compiendo qualche elaborazione(es. pr).Programmare una nuova shell personalizzata, con sintassi e semantica diverse, cambia la visionedell’utente, ma non modifica il kernel o l’interfaccia del programmatore. XWindow è un’interfaccia utente a icone molto diffusasui sistemi UNIX.

Page 11: Un Sistema Operativo multiuser-multitask UNIXdisys/intrunix.pdf · sistema, supportate dal kernel, per fornire funzioni utili, come compilazione e manipolazione di file. Come molti

11

Redirezione dell’I/O standard

Comando Significato del comando% ls > file_a dirige l’output di ls sul file file_a% pr < file_a > file_b input da file_a e output su file_b% lpr < file_b input da file_b

%% make program > & errs salva sia lo standard output che lo standard error su un file

Manipolazione di file

Un file è una sequenza di byte; il kernel non impone ai file nessunastruttura.I file sono raccolti in directory, organizzate ad albero.Le directory sono file che contengono informazioni su come reperirealtri file.Path name (nome di percorso): identifica un file specificando un cammino che, attraverso la struttura a directory, raggiunge il file.

Un path name assoluto inizia nella radice del file system.Un path name relativo inizia nella directory corrente.

System call per la manipolazione di file: create, open, read, write, close, unlink, trunc.

Page 12: Un Sistema Operativo multiuser-multitask UNIXdisys/intrunix.pdf · sistema, supportate dal kernel, per fornire funzioni utili, come compilazione e manipolazione di file. Come molti

12

Struttura delle directory in UNIX

Vantaggi principali di UNIXScritto in linguaggio ad alto livello.Distribuito sotto forma di sorgenti.Fornisce le primitive di un sistema operativo potente su di una

piattaforma economica.Piccola dimensione, modulare, progetto “pulito”.

Progettato per realizzare il time–sharing.Possiede un’interfaccia utente (shell) semplice da usare e standard, che può essere facilmente sostituita e personalizzata.File system con directory a più livelli, strutturate ad albero.I file sono supportati dal kernel come sequenze di byte senzastruttura.Supporta processi multipli; un processo può creare facilmente altriprocessi.Sistema altamente interattivo, fornisce facilities per lo sviluppo di programmi.

Page 13: Un Sistema Operativo multiuser-multitask UNIXdisys/intrunix.pdf · sistema, supportate dal kernel, per fornire funzioni utili, come compilazione e manipolazione di file. Come molti

13

Cosa è LINUX

È un SO UNIX standardTesi di laurea di Linus Torwalds all’università di Helsinki in

FinlandiaSviluppato a partire da Minix, un sistema UNIX molto piccolo1991 è stata rilasciata la prima versione (0.02)Nel 1994 fu rilasciata la versione 1.0 del Kernel LinuxL’ultima versione corrente è la 2.4 (Gennaio 2001) e … lo

sviluppo di Linux continua. È considerato un SO eccellente, economico alternativo ad altri

SO molto costosi.(i.e.UNIX,NT, W2000).

LinuxLinux: le caratteristiche: le caratteristiche

Multitasking: più programmi funzionano contemporaneamente.Multiuser: più utenti nella stessa macchina contemporaneamente.Scalabile: in modo testo ha pretese hardware minime.Funziona su diverse architetture: PC, SPARC, Mac,…Affianca diversi SO: Windows, Solaris, MS-DOS, MacOs,…Ha infatti accesso trasparente a partizioni MS-DOS (o partizioni OS/2 FAT)tramite il filesystem.Gestisce multiprocessor.

Supporto rete TCP/IP, incluso ftp, telnet, NFS... Modalità protetta: ogni programma in esecuzione occupa specifici indirizzi di

memoria, "protetti" dalla possibilità che altri programmi vadano ad occupare gli stessi indirizzi causando in tal modo il blocco del sistema.

Possibilità di utilizzare un completo ambiente grafico, una GUI (GraphicalUser Interface) conosciuta con il nome di X Windows.

Page 14: Un Sistema Operativo multiuser-multitask UNIXdisys/intrunix.pdf · sistema, supportate dal kernel, per fornire funzioni utili, come compilazione e manipolazione di file. Come molti

14

Vantaggi di Linux• Libertà: codici sorgenti aperti; chiunque può utilizzarli, modificarli, etc. sempre in evoluzione• Stabilità: Linux non si blocca praticamente, mai. È un sistema completamente multitasking e multiutente. Se un programma si blocca è possibile terminarlo senza alterare la stabilità dell’intero sistema.•Sicurezza: accesso ad utenti autorizzati. Diritti d’accesso differenziati per ogni utente.•Trasparenza: Gli errori Linux hanno la tendenza ad essere scoperti e corretti rapidamente per mezzo di patch scaricabili da internet.• Gratuità: è gratuito (si paga eventualmente solo il prezzo della distribuzione) - anche molti applicativi sono gratuiti

•Mancanza di una “controparte” a cui gli utenti possono far riferimento per esigenze specifiche•Applicazioni ridondanti•Applicazioni difficili da manutenere perché poco o per nulla documentate

Svantaggi di Linux

Le varie distribuzioni

www.redhat.com

www.linux-mandrake.com

www.debian.org

www.slackware.org

www.suse.de/fr