PROCESS MANAGEMENT: STRUTTURE DATI - PowerPoint PPT Presentation

About This Presentation
Title:

PROCESS MANAGEMENT: STRUTTURE DATI

Description:

Title: No Slide Title Author: Roberto Polillo Last modified by: rpolillo Created Date: 8/25/1999 11:22:04 AM Document presentation format: On-screen Show – PowerPoint PPT presentation

Number of Views:33
Avg rating:3.0/5.0
Slides: 46
Provided by: RobertoP151
Category:

less

Transcript and Presenter's Notes

Title: PROCESS MANAGEMENT: STRUTTURE DATI


1
PROCESS MANAGEMENT STRUTTURE DATI
2
Sintesi fin qui
Switcher

Residente
Daemon
Processi utente
Non residente
Processo 2
Processo n
Processo 1
Memoria centrale
Periferiche
3
Immagine di un processo
  • Limmagine di memoria di un processo è
    organizzata in tre regioni

E rientrante, e può essere condiviso fra più
processi
  • Ogni regione è uno spazio di indirizzamento
    autonomo

4
Che cosa genera il compilatore C
include ...
NON
char buffer1000
INIZIALIZZATI
int version1

DATI
main(int argc, char argv)
INIZIALIZZATI
int i

while ...
...
STACK
exit (0)

int fun(int n)
int j

if ...
TESTO
...

3
5
Formato di un eseguibile
Un eseguibile è costituito da un insieme di
header e un insieme di sezioni, contenenti codice
o dati
6
Sintesi fin qui
Switcher

Residente
Stack
Stack
Stack
Non residente
Dati
Dati
Dati
Testo
Testo
Testo
Processo 2
Processo n
Processo 1
Memoria centrale
Periferiche
7
Strutture dati per la gestione dei processi
  • Process Table
  • si trova nel kernel, ed è residente
  • contiene una entry per ogni processo, ed è
    dimensionata staticamente al momento della
    configurazione del sistema
  • per ogni processo contiene le informazioni che ne
    permettono la schedulazione, e che devono essere
    sempre residenti
  • U-Area (user area)
  • si trova nel kernel, ma non è residente
  • contiene quelle informazioni necessarie al kernel
    per la gestione del processo, ma che non è
    necessario che siano sempre residenti in memoria
  • Ready Queue
  • Liste dei processi ready (una per ciascun livello
    di priorità)

8
Strutture dati per la gestione dei processi
9
Strutture dati per la gestione dei processi
0
1
2
3

4
Process Table
U-Area
Processo
10
Strutture dati per la gestione dei processi
0
1
2
3

4
Process Table
U-Area
11
Sintesi fin qui
12
MEMORY MANAGEMENT
13
Paginazione
  • Le versioni non antiche di Unix utilizzano
    tecniche di paginazione
  • Per eseguire un processo è sufficiente che in
    memoria siano presenti almeno
  • la sua u-area
  • la sua tabella delle pagine
  • Le pagine di testo, dati e stack sono portate
    dinamicamente in memoria dal kernel, una alla
    volta, quando servono (cioè a seguito di un page
    fault)
  • Se u-area e tabella delle pagine non sono in
    memoria, ve le porta il processo swapper

14
Pagedaemon
  • E un demone che viene eseguito periodicamente
    per controllare il numero di pagine libere in
    memoria
  • Se è troppo basso, libera qualche pagina
  • Se è ok, ritorna inattivo

15
Swapper
  • E un processo di sistema che
  • Se le pagine libere sono sotto il minimo, rimuove
    uno o più processi dalla memoria (in genere
    quelli inattivi da più tempo) SWAPOUT
  • Verifica periodicamente la esistenza di processi
    pronti su disco e, se possibile, li carica in
    memoria (solo u-area e tabella delle pagine)(in
    genere quelli fuori da più tempo, a meno che non
    siano troppo grossi) SWAPIN

16
PROCESS MANAGEMENT SYSTEM CALL
17
Processi in Unix
  • In Unix, ogni processo viene creato dal kernel
    su richiesta di un altro processo (detto processo
    padre), mediante una apposita system call (fork)
  • Esiste un processo iniziale (PID0) che non ha
    padre, e che viene creato dal kernel al momento
    della inizializzazione del sistema
  • Ogni processo si termina attraverso una apposita
    system call (exit)

18
Creazione di un processo
  • In Unix un nuovo processo viene creato
    esclusivamente per duplicazione di un processo
    esistente, attraverso la system call
  • pid_t fork(void)
  • che crea un processo figlio identico al padre,
    e restituisce
  • al figlio 0
  • al padre PID del figlio in caso di
    errore -1
  • Lunica eccezione è il processo 0, che viene
    creato alla inizializzazione del sistema

19
Fork esempio
  • p fork()
  • if p lt 0 / la fork è fallita /
  • else if p0 / operazioni del figlio /
  • else / operazioni del padre /

In Unix non esiste alcuna system call per creare
un processo che esegue leseguibile x Devo
farlo utilizzando più system call
20
Creazione di un processo
Pfork()
21
Che cosa fa la fork
  • Alloca una entry nella Process Table per il nuovo
    processo
  • Assegna un PID unico al nuovo processo e
    inizializza i campi della Process Table entry
  • Crea una copia della immagine del processo padre
    (il testo non viene duplicato ma si incrementa un
    reference count)
  • Incrementa opportuni contatori dei file aperti
  • Inizializza i contatori di accounting nella
    u-area del nuovo processo
  • Pone il nuovo processo nello stato di pronto
  • Restituisce il PID del figlio al padre, 0 al
    figlio o -1 in caso di errore

22
Le system call exec
  • exec (pathname, argomenti)
  • sostituisce limmagine del chiamante con il file
    eseguibile pathname, e lo manda in esecuzione
    passandogli gli argomenti

23
Creazione di un processo
U-Area
Stack
Dati
Processo Figlio
24
Exec
U-Area
U-Area
Stack
Stack
Dati
Dati
Testo
Testo
Processo Figlio
Processo Padre
25
Terminazione di un processo
  • In Unix un processo si termina attraverso la
    system call void _exit(int status)
  • che
  • - termina il processo chiamante
  • - rende disponibile al processo padre il valore
    di status, mettendolo nella propria process table
    entry
  • - (il padre potrà ottenerlo tramite la primitiva
    wait)

26
Wait
  • pid_t wait (int status)
  • sospende il processo chiamante fino a che uno dei
    suoi figli termina
  • restituisce il PID del figlio terminato (di uno a
    caso se sono più di uno) o 1 se non ci sono
    figli
  • assegna a status lexit status del figlio

27
Exit esempio
padre int st . wait ( st )
figlio exit (0) .
28
Exit
La process table entry del figlio non può essere
rimossa fino a quando il valore di status in essa
contenuto non è stato prelevato dal padre
U-Area
U-Area
Stack
Stack
Dati
Dati
Testo
Testo
Processo Figlio
Processo Padre
29
Zombie e orfani
  • un processo terminato passa nello stato di
    zombie, e viene definitivamente rimosso dopo che
    il padre ha ricevuto il suo stato di terminazione
    con una wait
  • un processo zombie occupa un insieme minimo di
    risorse (process table entry)
  • un processo orfano (cioè il cui padre è
    terminato) viene adottato dal processo init,
    quindi un processo ha sempre un padre

30
Altri stati di un processo
31
INIZIALIZZAZIONEDEL SISTEMA
32
BOOTSTRAP
  • Allaccensione della macchina, lhardware lancia
    il programma di boostrap
  • che carica in memoria il blocco di boot da
    disco, il quale contiene un programma
  • . che carica in memoria il kernel
  • e quindi trasferisce il controllo a un entry
    point (start), che crea il processo 0

33
Inizializzazione del sistema
  • inizializza le strutture dati del kernel
  • crea processo 1 (init) forkexec)

Start
  • crea un processo per ogni terminale attivo e i
    demoni è il padre di tutti i processi è in loop

1
1
comando
è la shell di login
effettua il login
inizializza il terminale
kernel mode
user mode
34
STRUTTURA DELLA SHELL
35
Shell interfaccia utente
  • file args esecuzione in foreground
  • ltoutputgt
  • file args esecuzione in background

36
Struttura generale della shell
file argsltgt ltoutputgt
  • write (1, PROMPT)
  • while ((nread(0,buffer,80)!0)
  • riconosci nome file e args
  • If ( (pidfork()) 0) / I/O redirection
    / if (exec(file, args)-1) exit (1)
  • procidwait(status)
  • If (status !0) write (2, error)
  • write(1,PROMPT)

Se il comando è eseguito in background, non viene
eseguita la wait
37
COMUNICAZIONE FRA PROCESSI
38
Interprocess communication in Unix
  • Unix fornisce diversi meccanismi
  • Segnali
  • Pipes
  • Sockets

39
Che cosè un segnale
  • Un segnale è una notifica a un processo che è
    occorso un particolare evento
  • Un errore di floating point
  • La morte di un figlio
  • Una richiesta di terminazione
  • I segnali possono essere pensati come degli
    interrupts software
  • I segnali possono essere inviati
  • da un processo a un altro processo
  • da un processo a se stesso
  • dal kernel a un processo
  • Ogni segnale è identificato da un numero intero
    associato a un nome simbolico

40
Segnali in POSIX
  • Segnale Significato (default)
  • SIGABRT Abortisce un processo (termina con
    dump)
  • SIGALRM Invia un segnale di "sveglia" (termina)
  • SIGCHLD Lo stato di un figlio è cambiato
    (ignora)
  • SIGCONT Continua un processo stoppato (continua
    o ignora)
  • SIGFPE Floating Point Error (termina con dump)
  • SIGHUP Hangup su un terminale (termina)
  • SIGILL Istruzione di macchina illegale (termina
    con dump)
  • SIGINT Premuto il tasto DEL per interrompere il
    processo (termina)
  • SIGKILL Segnale per terminare un processo (non
    può essere ignorato) (termina)
  • SIGPIPE Tentativo di scrivere su una pipe che
    non ha lettori (termina)
  • SIGQUIT L'utente ha usato il tasto di quit del
    terminale (termina con dump)
  • SIGSEGV Riferimento a un indirizzo di memoria
    non valido (termina con dump)
  • SIGSTOP Per stoppare un processo (non può essere
    ignorato) (stoppa il processo)
  • SIGTERM Segnale per terminare un processo
    (termina)
  • SIGTSTP L'utente ha usato il tasto "suspend" del
    terminale (stoppa il processo)
  • SIGTTIN Un processo in background tenta di
    leggere dal suo terminale di controllo (stoppa
    il processo)
  • SIGTTOU Un processo in background tenta di
    scrivere sul su terminale di controllo (stoppa
    il processo)
  • SIGUSR1 Disponibile per scopi definiti
    dall'applicazione

41
System call per gestire i segnali
  • kill (PID, sig)
  • invia il segnale specificato al processo o al
    gruppo di processi specificato
  • sigaction (sig, action, ..)
  • associa a un segnale la sua funzione di
    trattamento
  • (inizialmente signal non POSIX)

42
Come viene trattato un segnale
  • Quando un processo riceve un segnale, può
  • Trattarlo mediante una specificata funzione
    (handler)
  • Ignorarlo
  • Attivare lazione di default associata al segnale
    stesso (termina o sospendi il processo, ignora)

43
Esempio
  • Per terminare o sospendere un processo in
    foreground, lutente può premere i tasti CTRL-C o
    CTRL-Z (rispettivamente)
  • Tale carattere viene acquisito dal driver del
    terminale, che notifica al processo il segnale
    SIGINT o SIGTSTP (rispettivamente)
  • Per default, SIGINT termina il processo e SIGTSTP
    lo sospende
  • NB Tali segnali vengono inviati a tutto il
    gruppo di processi

44
Protezione
  • Per motivi di protezione, deve valere almeno una
    delle seguenti condizioni
  • Il processo che riceve e il processo che invia il
    segnale devono avere lo stesso owner
  • Lowner del processo che invia il segnale è il
    superuser

45
Strutture dati per la gestione dei segnali
0
1
2
3

4
Process Table
U-Area
Write a Comment
User Comments (0)
About PowerShow.com