La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Silberschatz and Galvin 1999 21.1 Operating System Concepts Il Sistema Unix Breve storia Principi di progetto Interfaccia per il programmatore Interfaccia.

Presentazioni simili


Presentazione sul tema: "Silberschatz and Galvin 1999 21.1 Operating System Concepts Il Sistema Unix Breve storia Principi di progetto Interfaccia per il programmatore Interfaccia."— Transcript della presentazione:

1 Silberschatz and Galvin Operating System Concepts Il Sistema Unix Breve storia Principi di progetto Interfaccia per il programmatore Interfaccia utente Gestione dei processi Gestione della memoria File System Sistema di I/O Comunicazione fra processi

2 Silberschatz and Galvin Operating System Concepts Breve storia 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). –4BSD UNIX è il risultato di un finanziamento DARPA per lo sviluppo di uno standard UNIX ad uso governativo. –Sviluppato per il VAX, 4.3BSD è una delle versioni più importanti e ne è stato fatto il porting su varie piattaforme. Vari progetti di standardizzazione hanno tentato di consolidare le varianti di UNIX, per ottenere ununica interfaccia di programmazione verso il sistema.

3 Silberschatz and Galvin Operating System Concepts Storia delle versioni UNIX

4 Silberschatz and Galvin Operating System Concepts Vantaggi principali di UNIX Scritto 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.

5 Silberschatz and Galvin Operating System Concepts Principi di progetto di UNIX Progettato per realizzare il time–sharing. Possiede uninterfaccia 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 senza struttura. Supporta processi multipli; un processo può creare facilmente altri processi. Sistema altamente interattivo, fornisce facilities per lo sviluppo di programmi.

6 Silberschatz and Galvin Operating System Concepts Interfaccia del programmatore Kernel: tutto ciò che si trova sotto linterfaccia delle system-call e sopra lhardware fisico. –Fornisce il file system, lo scheduling della CPU, la gestione della memoria ed altre funzioni di SO, tramite le chiamate di sistema. Programmi di sistema: impiegano le chiamate di sistema, supportate dal kernel, per fornire funzioni utili, come compilazione e manipolazione di file. Come molti sistemi operativi, UNIX consiste di due parti separate:

7 Silberschatz and Galvin Operating System Concepts Struttura a strati di 4.3BSD UNIX

8 Silberschatz and Galvin Operating System Concepts System Call Le chiamate di sistema definiscono linterfaccia del programmatore verso UNIX. Linsieme dei programmi di sistema comunemente disponibili definisce linterfaccia utente. Le interfaccie del programmatore ed utente definiscono il contesto che deve essere supportato dal kernel. Si hanno, approssimativamente, tre categorie di chiamate di sistema in UNIX: –Manipolazione di file (le stesse chiamate di sistema supportano anche la manipolazione dei dispositivi). –Controllo dei processi. –Manipolazione dellinformazione.

9 Silberschatz and Galvin Operating System Concepts Manipolazione di file Un file è una sequenza di byte; il kernel non impone ai file nessuna struttura. I file sono raccolti in directory, organizzate ad albero. Le directory sono file che contengono informazioni su come reperire altri 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.

10 Silberschatz and Galvin Operating System Concepts Struttura delle directory in UNIX

11 Silberschatz and Galvin Operating System Concepts Controllo dei processi 1 Un processo è un programma in esecuzione, identificato univocamente dallidentificatore di processo (un intero). System call per il controllo dei processi: –fork crea un nuovo processo –execve viene impiegata dopo una fork per rimpiazzare la memoria virtuale di uno dei due processi (generalmente il figlio) con un nuovo programma –exit termina un processo –Un padre può attendere (wait) la terminazione di un processo figlio; wait fornisce il process id (pid) del figlio terminato, così da renderne nota lidentità al padre –wait3 consente al padre di produrre statistiche sulla performance dei figli Processo zombie: processo terminato dopo il padre.

12 Silberschatz and Galvin Operating System Concepts System call di gestione dei processi

13 Silberschatz and Galvin Operating System Concepts 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, che inizializza i parametri della linea del terminale e attende il login name dellutente per passarlo al processo login. –Login confronta luser identifier per verificarne i diritti di accesso al sistema. –esegue una shell che crea sottoprocessi per ciascun comando utente.

14 Silberschatz and Galvin Operating System Concepts Segnali Strumenti per gestire condizioni eccezionali. Simili alle interruzioni software. Il segnale di interrupt, SIGINT, viene impiegato per interrompere un comando prima che sia completato (in genere prodotto da un ^C). Limpiego di segnali è stato recentemente esteso e non è più relativo esclusivamente ad eventi eccezionali. –Inizio ed interruzione di processi on demand. –SIGWINCH informa un processo che la finestra nella quale verrà visualizzato loutput da esso prodotto ha cambiato dimensioni. –Invio di dati urgenti attraverso connessione di rete.

15 Silberschatz and Galvin Operating System Concepts Gruppi di processi 1 Un insieme di processi correlati che concorrono alla realizzazione di un task comune. 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 occhi dallutente al terminale. –I processi in background realizzano il loro compito senza interagire direttamente con lutente. Laccesso al terminale è controllato da signal di gruppo di processi.

16 Silberschatz and Galvin Operating System Concepts Gruppi di processi 2 Ciascun processo eredita il proprio terminale di controllo dal processo padre. –Se il gruppo di processi associato ad un terminale di controllo coincide con il gruppo di un dato processo, quel processo si trova in foreground e gli è concesso di eseguire lI/O. –SIGTTIN o SIGTTOU congela un processo background che tentasse di produrre output; se il processo viene portato in foreground, SIGCONT indica che lI/O richiesto può ora essere eseguito. –SIGSTOP congela un processo foreground.

17 Silberschatz and Galvin Operating System Concepts Manipolazione dellinformazione Chiamate di sistema per impostare e restituire il valore di un timer getitmer/setitmer o lora corrente gettimeofday/settimeofday. I processi possono richiedere: –il loro identificatore di processo: getpid –il loro identificatore di gruppo: getgid –il nome della macchina su cui sono in esecuzione: gethostname

18 Silberschatz and Galvin Operating System Concepts Routine di libreria Linterfaccia 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 impiegate nelle chiamate di sistema. Librerie addizionali sono fornite per funzioni matematiche, accesso alla rete, conversioni di dati, ecc.

19 Silberschatz and Galvin Operating System Concepts Interfaccia utente Programmatori ed utenti interagiscono prevalentemente con programmi di sistema già esistenti: Le chiamate di sistema richieste sono incorporate nel programma e non devono essere conosciute dallutente. I programmi di sistema più comuni sono orientati alla gestione di file e directory. –Directory: mkdir, rmdir, cd, pwd –File: ls, cp, mv, rm Altri programmi sono relativi a editor (e.g., emacs, vi) formattatori di testo (e.g., troff, TEX), e altro.

20 Silberschatz and Galvin Operating System Concepts 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 comando visualizzando un prompt e lutente introduce comandi su una singola linea. Il comando tipico è il nome di un file binario eseguibile. 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 sono quasi sempre nel percorso di ricerca. Un tipico cammino di ricerca in un sistema BSD è: (./home/prof/avi/bin /usr/local/bin /usr/ucb/bin/usr/bin ) La shell normalmente sospende la propria esecuzione fino al termine del comando.

21 Silberschatz and Galvin Operating System Concepts Standard I/O La maggior parte dei processi, quando iniziano la loro esecuzione, si aspettano di poter disporre di tre descrittori di file aperti: –standard input – il processo può leggere cosa viene scritto dallutente –standard output – il processo può inviare loutput sullo schermo dellutente –standard error – uscita dellerrore Molti programmi possono anche utilizzare file (piuttosto che un terminale) per lo standard input e lo standard output. Redirezione dellI/O: Le shell più comuni dispongono di una semplice sintassi per cambiare i file aperti per lI/O standard di un processo.

22 Silberschatz and Galvin Operating System Concepts Redirezione dellI/O standard ComandoSignificato del comando % ls > fileadirige loutput di ls sul file filea % pr filebinput da filea e output su fileb % lpr < filebinput da fileb % make program > & errssalva sia lo standard output che lo standard error su un file

23 Silberschatz and Galvin Operating System Concepts Pipeline, Filtri, e Shell Script I singoli comandi possono essere accodati per mezzo di una barra verticale | (pipe). In questo modo, loutput del comando a sinistra della pipe costituisce linput per il comando alla sua destra. % ls | pr | lpr Filtro – 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 visione dellutente, ma non modifica il kernel o linterfaccia del programmatore. X Window è uninterfaccia utente a icone molto diffusa sui sistemi UNIX.

24 Silberschatz and Galvin Operating System Concepts Gestione dei processi La 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 vari blocchi di controllo (control blocks). –I blocchi di controllo associati ad un processo vengono memorizzati nel kernel. –Linformazione contenuta nei blocchi di controllo viene utilizzata dal kernel per controllare i processi ed effettuare lo scheduling della CPU.

25 Silberschatz and Galvin Operating System Concepts Process Control Block 1 Ai processi viene associata una struttura dati elementare chiamata struttura del processo (process structure). –identificatore di processo (unico) –informazioni per lo scheduling (e.g., priorità) –puntatori ad altri control block Lo spazio degli indirizzi virtuale di un processo utente è suddiviso in una sezione testo (codice del programma), una sezione dati ed uno stack. Ogni processo che condivide la sezione testo ha un puntatore dalla propria struttura di processo ad una struttura di testo, che... –è sempre residente nella memoria principale; –memorizza quanti processi condividono il segmento di testo; –memorizza dove è reperibile su disco (quando viene effettuato lo swap) la tabella delle pagine per la sezione testo.

26 Silberschatz and Galvin Operating System Concepts Process Control Block 2 La tabella delle pagine memorizza informazioni per la mappatura fra la memoria virtuale del processo e la memoria fisica Le informazioni sul processo, necessarie solo quando esso risiede in memoria principale, sono mantenute nella struttura utente (o u structure) che… –è mappata a sola lettura nello spazio degli indirizzi virtuale dellutente; –è scrivibile dal kernel; –mantiene informazioni sulla directory corrente e la tabella dei file aperti.

27 Silberschatz and Galvin Operating System Concepts Segmento dati di sistema Il lavoro ordinario viene normalmente eseguito in modo utente (user mode); le system call sono effettuate in modo sistema (system mode). Le fasi sistema ed utente di un processo non vengono mai eseguite simultaneamente. Lo stack del kernel (anziché lo stack utente) viene impiegato per un processo eseguito in modo sistema. Lo stack del kernel e l u structure costituiscono insieme il segmento dati di sistema per il processo.

28 Silberschatz and Galvin Operating System Concepts Localizzazione delle parti di un processo

29 Silberschatz and Galvin Operating System Concepts Allocazione di una nuova struttura di processo 1 fork alloca una nuova struttura di processo per il processo figlio e copia la struttura utente. –Viene costruita una nuova tabella delle pagine. –Viene allocata nuova memoria per il segmento dati e lo stack del processo figlio. –Copiando la struttura utente si conservano i descrittori dei file aperti, gli identificatori di utente e di gruppo, la manipolazione dei segnali, etc. vfork non copia i dati e lo stack al nuovo processo; il nuovo processo semplicemente condivide la tabella delle pagine del processo padre. –Una nuova struttura utente ed una nuova struttura di processo vengono comunque create. –Viene comunemente utilizzata dalla shell per eseguire un comando ed attendere il suo completamento.

30 Silberschatz and Galvin Operating System Concepts Allocazione di una nuova struttura di processo 2 Il processo padre impiega vfork per produrre un processo figlio; il figlio impiega execve per cambiare il proprio spazio degli indirizzi virtuale. Impiegare vfork per un processo padre oneroso equivale ad un notevole risparmio di CPU time, ma può essere pericoloso dato che ogni cambiamento in memoria avviene in entrambi i processi, fino a che non viene eseguita una execve. execve non crea un nuovo processo o struttura utente, piuttosto il testo ed i dati del processo (padre) vengono rimpiazzati.

31 Silberschatz and Galvin Operating System Concepts Scheduling della CPU Ciascun processo ha associata una propria piorità 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 modo esclusivo. Tecniche di invecchiamento (aging) dei processi vengono impiegate per impedire lattesa 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 gestisce chiama wakeup con lindirizzo corrispondente allevento, e tutti i processi che si trovano in stato di sleep allo stesso indirizzo vengono spostati nella coda ready per essere eseguiti.


Scaricare ppt "Silberschatz and Galvin 1999 21.1 Operating System Concepts Il Sistema Unix Breve storia Principi di progetto Interfaccia per il programmatore Interfaccia."

Presentazioni simili


Annunci Google