• Non ci sono risultati.

Laboratorio di Sistemi Operativi - programmazione in c

N/A
N/A
Protected

Academic year: 2021

Condividi "Laboratorio di Sistemi Operativi - programmazione in c"

Copied!
8
0
0

Testo completo

(1)

Laboratorio di Sistemi Operativi - programmazione in c

Alessandro Valenti 3 marzo 2003

(2)

ii

(3)

Indice

1 Fork e paginazione/segmentazione 3

2 Pipe e IPC 5

1

(4)

2 INDICE

(5)

Capitolo 1

Fork e paginazione/segmentazione

3

(6)

4 CAPITOLO 1. FORK E PAGINAZIONE/SEGMENTAZIONE

Laboratorio di Sistemi Operativi Università di Modena e Reggio Emilia

Cosa accade ai puntatori dopo una fork()? Gestione della memoria in unix

Memoria "dati" del processo figlio int *iptr

int valore

?

?

?

ptr = ? Memoria "dati" del processo padre

int *iptr int valore

0x10 0x14 0x18

ptr = 0x18

Figura 1.1: fork1

Laboratorio di Sistemi Operativi Università di Modena e Reggio Emilia

In unix ogni locazione di memoria ha due indirizzi "logici" e, ovviamente, uno solo "fisico"

Kernel mode User mode

indirizzo=fisico indirizzo=logico

Memoria Pagina

Pagina

variabile del figlio variabile del padre

indirizzi fisici distinti

relativo all’inizio della pagina

Indirizzi logici uguali ma in pagine distinte

Figura 1.2: fork2

(7)

Capitolo 2

Pipe e IPC

5

(8)

6 CAPITOLO 2. PIPE E IPC

padre:

pipe() fork()

chiude lato rd loop

write()

se finelavoro

figlio:

eredita la pipe chiude lato wr loop

exit()

fineloop se nr==0 read() chiude l.wr

wait()

Laboratorio di Sistemi Operativi Università di Modena e Reggio Emilia

Sincronizzazione sulla chiusura del lato di scrittura pipe

Figura 2.1: c pipe1

Laboratorio di Sistemi Operativi Università di Modena e Reggio Emilia

Padre con n link verso n figli

alloca spezio per N pipe crea le N pipe

crea gli N processi

recupera risultati produce dati

chiude il lato di lettura il figlio eredita tutto!

pd=malloc(N*sizeof(pipe_t));

for(i=0;i<N;i++) pipe(pd[i]);

for(i=0;i<N;i++) { switch(fork()) {

case 0: for(j=0;j<N;j++) {

child_fun();

break;

default: /*padre*/

close(pd[i][0]);

} } ...

for(i=0;i<N;i++) wait(&s);

più ordinato!

close(pd[j][1]);

if(j>i) close(pd[j][0];

}

Figura 2.2: c pipe2

Riferimenti

Documenti correlati

[r]

[r]

risposta non e' stata data, oppure e' stata ottenuta con un procedimento completamente errato, oppure non e' stato trovato il procedimento stesso sui fogli consegnati. - quando tra

Se compare &#34;.&#34; significa che la risposta non e' stata data, oppure e' stata ottenuta con un procedimento. completamente errato, oppure non e' stato trovato il procedimento

COMPITI DI MATEMATICA per le applicazioni economiche e finanziarie AA.. Si determini invece quali variabili pos-.. sono essere assunte come variabile dipendente, e si

[r]

- :l (A.T.R.) Alluvioni sciolte di rocce palcozoichc delle sponde occidcutu li della rossa tcuonica, sopra banchi sino a 40150 metri di spessore di argille plastiche bianche o grigie

T1b Tumor incidental histologic finding in more than 5% of tissue resected (Figure 34.3).. T1c Tumor identified by needle biopsy (e.g., because of elevated PSA) T2 Tumor confined