Modello a Processi nei sistemi operativi, esecuzione e gerarchia

Slide sul Modello a Processi. Il Pdf esplora il modello a processi nei sistemi operativi, trattando l'esecuzione sequenziale e parallela, lo stack e gli stati di un processo. Questo materiale di Informatica, adatto per l'Università, offre una panoramica chiara e concisa degli argomenti.

Mostra di più

32 pagine

Modello a Processi
Esecuzione sequenziale, parallela, spazio d’indirizzamento,
gerarchia processi
Esecuzione Sequenziale
La semplicità
Il determinismo della sequenza e dei tempi
di esecuzione
L'assenza di conflitti per l'accesso alle risorse
condivise
Software: File, Dati
Hardware: Memoria, Dispositivi
Accesso di un solo utente alla volta
Esecuzione di un solo programma alla
volta
Mancanza del supporto per
applicazioni distribuite
Scarso sfruttamento delle risorse
hardware
Dispositivi
Processore/i
I sistemi di calcolo più semplici consentono unicamente l'esecuzione sequenziale
Un programma può essere eseguito se e solo se il programma precedente è terminato
Vantaggi:
Limiti:

Visualizza gratis il Pdf completo

Registrati per accedere all’intero documento e trasformarlo con l’AI.

Anteprima

Modello a Processi

Esecuzione sequenziale, parallela, spazio d'indirizzamento,
gerarchia processi

Esecuzione Sequenziale

  • I sistemi di calcolo più semplici consentono unicamente l'esecuzione sequenziale
  • Un programma può essere eseguito se e solo se il programma precedente è terminato

Vantaggi dell'Esecuzione Sequenziale

  • La semplicità
  • Il determinismo della sequenza e dei tempi
    di esecuzione
  • L'assenza di conflitti per l'accesso alle risorse
    condivise
    • Software: File, Dati
    • Hardware: Memoria, Dispositivi

Limiti dell'Esecuzione Sequenziale

  • Accesso di un solo utente alla volta
  • Esecuzione di un solo programma alla
    volta
  • Mancanza del supporto per
    applicazioni distribuite
  • Scarso sfruttamento delle risorse
    hardware
    • Dispositivi
    • Processore/i

Esecuzione Parallela

  • I moderni sistemi di calcolo offrono il supporto all'esecuzione parallela
    • Più programmi eseguiti contemporaneamente
      • Il parallelismo è "simulato", se la macchina hardware dispone di un solo processore
      • Il parallelismo è "reale", se la macchina dispone di più processori
  • Questo schema supera tutti i limiti dell'esecuzione sequenziale ma introduce
    alcuni problemi
    • Il determinismo non è garantito automaticamente
    • L'ordine di esecuzione dei programmi non è fissato
    • L'esecuzione sequenziale di più programmi deve essere gestita esplicitamente dall'utente o dal
      programmatore
    • I conflitti di accesso alle risorse devono essere gestiti
  • Questi problemi sono risolti grazie al Sistema Operativo
    • In modo automatic
      • Scheduling, memoria virtuale, periferiche virtuali
        , ...
    • Offrendo opportuni servizi al programmatore
      • Gestione dei processi, sincronizzazione, ...

Processo

A supporto dell'esecuzione parallela i sistemi operativi hanno introdotto il
concetto di processo
Un processo
- rappresenta un'istanza di esecuzione di un programma
- può essere considerato un "esecutore virtuale"
- permette di gestire l'accesso concorrente alle risorse

Esecuzione Sequenziale senza S.O.

Programma
1
Programma
2
Programma
N
Risorse condivise
Hardware

Esecuzione Parallela con S.O.

Programma
1
Programma
2
Programma
N
>
Processo 1
Processo 2
Processo N
Risorse
virtuali
Risorse
virtuali
Risorse
virtuali
Sistema Operativo
V
Hardware

Esecuzione Sequenziale senza S.O. Dettagli

  • Un programma è eseguito solo quando
    termina il programma precedente
  • Un programma accede direttamente alle
    risorse condivise
    • Non si hanno conflitti per costruzione
  • Un programma accede direttamente ai driver
    delle periferiche e alle risorse condivise

Esecuzione Parallela con S.O. Dettagli

  • Tutti i programmi sono eseguiti
    contemporaneamente
    • Il sistema operativo gestisce l'alternanza dei
      processi mediante uno "scheduler"
  • Un programma non accede direttamente alle
    risorse condivise
    • Il S.O. si occupa di gestire i conflitti
    • Un programma accede ad un insieme di
      risorse virtuali private associate al processo
  • Un programma delega al S.O. l'accesso alle
    risorse mediante "system call"

Esecuzione Parallela con S.O. Diagramma

Programma
1
Programma
2
Programma
N
>
Processo 1
Processo 2
Processo N
Risorse
virtuali
Risorse
virtuali
Risorse
virtuali
Sistema Operativo
Hardware

Processo: Identificazione e Descrizione

Un processo è identificato da un PID (Process IDentifier) univoco
- ogni processo è creato da un altro processo detto "padre"
- unica eccezione è il processo "init", il primo ad essere eseguito dal S.O.
Il sistema operativo mantiene una tabella che associa ad ogni PID una struttura dati detta Process
Descriptor che contiene tutte le informazioni ad esso relative
Il Process Descriptor
contiene
- PID del processo padre
- Informazioni sul"utente (uid, gid, permessi)
- Informazioni sulla memoria
- Riferimenti alle tabelle di sistema
- Informazioni sui tempi di esecuzione

...
Ogni processo dispone di un insieme di risorse virtuali
- Memoria
- File
- Periferiche

Gerarchia di Processi

In generale, durante la sua esecuzione un processo può creare altri processi
utilizzando opportune chiamate di sistema fornite dal kernel.
· Il processo genitore prende il nome di processo padre ed il processo creato il
nome di processo figlio. Ciascuno di questi nuovi processi può creare a sua volta
altri processi, formando così un albero di processi.
P
P2
P1
P3
P4

Gerarchia di Processi in UNIX/Linux

Quanto segue è vero in generale, ma faremo riferimento specificamente ai sistemi operativi UNIX/Linux
Tutti i processi sono figli del processo "init"
- da questo discende il processo "login" e la relativa "shell"
- da una shell discende la gerarchia dei processi utente
init
login A
login B
login C
shell
shell
shell
P A1
P A2
P C1
P A11
P A12
P A21
P C11
P C12
P C13

Operazioni sui Processi

Creazione di un Processo

  • il processo corrente crea un nuovo processo
  • il processo creato (figlio) è identico al padre

Terminazione di un Processo

  • termina un processo
  • ritorna al padre un codice di terminazione o exit code

Attesa della Terminazione di un Processo

  • permette al processo padre di attendere la terminazione di un figlio
  • l'attesa può essere bloccante o non bloccante

Sostituzione del Codice di un Processo

  • sostituisce il codice eseguito da un processo con quello di un altro programma
  • consente di creare processi che eseguono codice diverso da quello del padre

Analisi di un Processo

  • permette di raccogliere informazioni sul processo corrente

Segnalazione

  • permette di inviare "segnali" ad un processo

La Memoria di un Processo

dal punto di vista logico, la memoria di un processo è organizzata in "segmenti".
Ogni segmento contiene un tipo specifico di informazioni
· Dati
· Codice
· Informazioni di Sistema Operativo

Spazio di Indirizzamento

Come vede la memoria un programma C in esecuzione?
232 - 1
Stack
Pila di FRAME, uno per ogni
chiamata di funzione da cui non
abbiamo ancora fatto ritorno
Area vuota
Heap
Variabili allocate dinamicamente
es. malloc()
Data
Variabili globali inizializzate e non
Text
Traduzione in codice macchina delle
funzioni che compongono il
programma
0

Stack

232 - 1
Stack
Area vuota
Heap
Data
Text
All'inizio dell'esecuzione lo stack contiene solo il FRAME
per la funzione main
Successivamente :

ogni volta che viene chiamata una nuova funzione
viene inserito un nuovo frame nello stack

ogni volta che una funzione termina (es. return 0)
viene eliminato il frame in cima dello stack e
l'esecuzione viene continuata a partire dall'indirizzo di
ritorno
0

Contenuti di un FRAME

232 - 1
Stack
Area vuota
Heap
Data
Text
Contenuti tipici di un FRAME :

variabili locali della funzione
· indirizzo di ritorno (indirizzo dell'istruzione successiva
a quella che ha effettuato la chiamata alla funzione)
· copia del valore parametri attuali
0

Stati di un Processo

Un processo durante la sua esecuzione, esegue transizioni di stato che sono causate sia dall'esecuzione
delle istruzioni del processo stesso, come ad esempio quando esso esegue operazioni di I/O, sia da
eventi esterni asincroni con la sua esecuzione, come ad esempio la ricezione di segnali.
· Un processo entra nello stato nuovo quando è creato, ad esempio quando si avvia un programma.
· Un processo passa dallo stato nuovo allo stato di pronto dopo che il SO ha verificato che esso può
essere effettivamente eseguito (ad esempio il processo ha i diritti di esecuzione).
· Un processo passa dallo stato di pronto allo stato di esecuzione quando ad esso è assegnato il
processore.
· Un processo è nello stato attivo quando si trova nello stato di pronto o di esecuzione.
· Un processo passa dallo stato di esecuzione allo stato di bloccato quando è in attesa di qualche
evento.

Diagramma Stati di un Processo

terminazione
esecuzione
terminato
sospensione
scheduler
Assegnazione cpu
prerilascio
bloccato
pronto
riattivazione
nuovo

Transizioni di Stato dei Processi

Il processo ritorna nello stato di pronto quando l'evento atteso si è verificato.
· La transizione dallo stato di esecuzione allo stato di pronto è chiamato prerilascio (preemption) o revoca.
· Il prerilascio può avvenire per vari motivi, come ad esempio, quando un processo ha esaurito il suo quanto di
tempo (nei sistemi timesharing), o è presente nella coda di pronto un altro processo con priorità più alta.
· Il passaggio dallo stato di pronto allo stato di esecuzione è gestito dallo scheduler, un componente del kernel
che seleziona un processo cui assegnare la CPU, tra tutti i processi che si trovano nello stato di pronto. Lo
scheduler ha il compito di garantire che tutti i processi pronti possano avanzare nella loro esecuzione.
· Il processo passa nello stato terminato quando ha terminato l'esecuzione del suo programma o quando si è
verificato un'eccezione di vario tipo.
In molti sistemi è previsto che un processo sia trasferito dalla memoria principale alla memoria secondaria
(disco) in modo da ottenere spazio per altri processi. Tale operazione prende il nome di swapping (scambio) e
lo stato relativo è detto swapped.
· Vedremo un diagramma di transizione di stato con lo stato swapped quando parleremo della gestione della
memoria.

Caratteristiche e Gestione dei Processi

  • Un processo è univocamente identificato con un numero intero detto PID (Process
    IDentifier).
  • Quando un processo crea nuovi processi, esistono due possibilità per l'esecuzione del
    padre. La prima prevede che esso continui la sua esecuzione concorrentemente con i suoi
    figli; la seconda che si sospenda fino a che alcuni o tutti i suoi figli siano terminati.
  • La condivisione di dati e risorse tra processi padri e figli e della loro sincronizzazione
    variano da sistema a sistema. Anche nel caso di terminazione di un processo, questa può
    avvenire secondo diverse politiche di segnalazione al processo padre.
  • Generalmente, il kernel offre System Call (SC) per la creazione e terminazione dei
    processi. La SC di creazione dovrà inizializzare il descrittore del processo da creare ed
    inserirlo nella coda dei processi pronti. Analogamente, la funzione di terminazione
    provocherà l'eliminazione del descrittore dalla tabella dei descrittori di processo e la
    notifica che l'area di memoria può essere recuperata dal sistema operativo.

Non hai trovato quello che cercavi?

Esplora altri argomenti nella Algor library o crea direttamente i tuoi materiali con l’AI.