Il Sistema Unix - PowerPoint PPT Presentation

1 / 31
About This Presentation
Title:

Il Sistema Unix

Description:

Title: No Slide Title Author: Marilyn Turnamian Last modified by: monica Created Date: 8/24/1999 6:18:06 PM Document presentation format: Presentazione su schermo – PowerPoint PPT presentation

Number of Views:55
Avg rating:3.0/5.0
Slides: 32
Provided by: Maril53
Category:
Tags: sigint | sistema | unix

less

Transcript and Presenter's Notes

Title: Il Sistema Unix


1
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
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
Storia delle versioni UNIX
4
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
Principi di progetto di UNIX
  • Progettato per realizzare il timesharing.
  • 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
Interfaccia del programmatore
Come molti sistemi operativi, UNIX consiste di
due parti separate
  • 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.

7
Struttura a strati di 4.3BSD UNIX
8
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
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
Struttura delle directory in UNIX
11
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
System call di gestione dei processi
13
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
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
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
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
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
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
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
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
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
Redirezione dellI/O standard
  • Comando Significato del comando
  • ls gt filea dirige loutput di ls sul file filea
  • pr lt filea gt fileb input da filea e output su
    fileb
  • lpr lt fileb input da fileb
  • make program gt errs salva sia lo standard
    output che lo
  • standard error su un file

23
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
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
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
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
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
Localizzazione delle parti di un processo
29
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
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
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.
Write a Comment
User Comments (0)
About PowerShow.com