• Non ci sono risultati.

Esercitazione di ripasso

N/A
N/A
Protected

Academic year: 2021

Condividi "Esercitazione di ripasso"

Copied!
6
0
0

Testo completo

(1)

Esercitazione di ripasso

Es 1

Float matrix [2][2];

Float avg_value Sem_t sum_finished

Pthread_mutex_initializer sum_mutex Void * compute_avg(void * arg){

Int row = int Arg;

Int Col;

For (Col=0;col<5;col++) { Mutex_lock

Avg_val = Avg_val + matrix [Row][Col];

Mutex_uno();

}

Return NULL;

Compute_AVG { Int Row;

For (Row=0; Row<Rows,Row++) Wait (Sum mutex);

Avg_value = Avg_value / (Rows * cols), Return NULL;

} Main {

Init semaphores

For (Row = 0; Row < Rows; Row ++) {

Pthread_create ( ... & compute_sum, (Void *) Row), }

Pthread create (……….. & compute_avg, NULL);

For (…..)

Pthread_Join (Threads compute_sum) Pthread_join (compute_avg)

Es 2 (TDE 8/5/08)

Main () {

Fd=open (……… ,O_RDWR);

Pid1=fork();

If (pid1= =0) {

Write(FD,C,5000);

Exit(1);

} Else {

Pid2=Fork();

If (Pid2==0) { execl(________);

exit(2);

} Else {

(2)

Pid = Waitpid (Pid1,&status);

Seek(FD,OL,0);

Read(FD,C,2000);

Exit (0);

} } }

// Processo eseguito da exec: read(0,&temp,1); exit(3);

R > Q > P > IDLE DMA Block = 512

Evento Info Kernel Modules Contesto Stato P Stato Q Stato R

P: OPEN DMA INIT G_SVC_1 P Wait (E1) X X

OPEN P

SLEEP_ON_(E1)_1 P CHANGE P -> IDLE

G_SVC_2/3 IDLE

IDLE: 4 INT DMA RINT(DMA_IN)_1 IDLE Exec U X X

WAKE_UP (E1) IDLE CHANGE IDLE -> P SLEEP_ON_(E1)_2 P

OPEN P

G_SVC_2/3 P

P: FORK Fine

quanto P

G_SVC_1 P Ready Exec X

FORK P

G_SVC_2 P

PREEMPT_1 P

CHANGE P->Q

G_SVC_2/3 Q

Q: WRITE INIT DMA G_SVC_1 Q Exec (U) Wait (E1) X

WRITE Q

SLEEP_ON(E2)_1 Q CHANGE Q -> P

PREEMPT_2 P

G_SVC_3 P

P: FORK P NON HA FINITO IL QUANTO

G_SVC_1 P Exec Wait (E2) Ready

FORK P

G_SVC_2/3 P

P: 10 INT DMA R_INT(DMA)_1 P Exec Ready Ready

WAKE_UP(E2) P

R_INT(DMA)_2/3 P

P: CLOCK INT R_INT(CK)_1 P Ready Ready Exec

PREEMPT_1 P

CHANGE P -> R

G_SVC_2/3 R

(3)

SLEEP_ON(E2) Q

WRITE Q

G_SVC_2/3 Q

Q CLK R_INT(CLK)_1 Q Exec Ready X

PREEMPT_1 Q

CHANGE Q -> P

PREEMPT_2 P

R_INT(CLK)_2 P

P WAITPID G_SVC_1 P Wait (E3) Exec X

WAITPID P

SLEEP_ON(E3) P

CHANGE P->Q

PREEMPT_2 Q

R_INT(CLK)_2 Q

Q: EXIT G_SVC_1 Q Exec X X

EXIT_1 Q

WAKE_UP(E3) Q

EXIT_2 Q->P

SLEEP_ON(E3) P

G_SVC_2/3 P

(4)

Es 3 (tde 17/11/09)

Phy = 32 K 15 bit Log = 32 k 15 bit Page size = 4k 12 bit

Phy: NP 3, Offset 12 Vrt: NP 3, Offset 12

X Y

0 Cx0 Cy0 1 Cx1 Cy1 2 Dx0 Cy2

3 Dy0

4 Dy1

5 6

7 Px0 Py0

Phy

Address Content 0

1 2 3 4 5 6 7

MMU

Address NPV NPF Val

0 1 2 3 4 5 6

(5)

Entry point X –> 0x1122

1 1 2 2

Page

Siamo in pagina 1 (2° pagina) In pagina 1 si va da 0x000 a 0x7FFF Phy

Address Content

0 CP1

1 PP0

2 DP0

3 PQ0

4 5 6 7

MMU

Proc NPV NPF Val

P 1 / CP1 0 1

P 7 / PP0 1 1

P 2 / DP0 2 1

Q 7 / PQ0 3 1

Q 1 / CQ1 0 1

Q 2 / DQ0 2 1

Data codice 0x4BBB, devo espandere la zona dati.

X Y

0 Cx0 Cy0 1 Cx1 Cy1 2 Dx0 Cy2 3 Dp1 Dy0 4 Dp2 Dy1 5

6

7 Px0 Py0

(6)

Address Content

0 CP1

1 PP0

2 DP0

3 PQ0

4 DP1

5 DP2

6 7

Proc NPV NPF Val

P 1 / CP1 0 1

P 7 / PP0 1 1

P DP2 / 4 5 1

Q 7 / PQ0 3 1

Q 1 / CQ1 0 1

Q 2 / DQ0 2 1

P 3 / DP1 4 1

Address Content 0 CP1 = (CQ1)

1 PP0

2 DP0

3 (PQ0) / CQ(Y)0

4 DP1

5 DP2

6 PQ(Y)0

7

Proc NPV NPF Val

P 1 / CP1 0 1

P 7 / PP0 1 1

P DP2 / 4 5 1

Q 0 / CQ(Y) 3 0

Q 7 / PQ(Y) 6 1

Q 2 / DQ0 2 1

P 3 / DP1 4 1

Riferimenti

Documenti correlati

● Una slitta di massa 10 Kg viene spinta con forza costante su una superficie ghiacciata di attrito trascurabile.. Se dopo avere percorso 10 m la velocità è di 5 m/s, qual è

– MS Visual Studio segnala che alcune funzioni (es., fopen()) sono &#34;deprecate&#34;; tali warning possono essere ignorati. – Alcune funzioni (es., scanf() ) restituiscono un

Francesco Tortorella http://webuser.unicas.it/tortorella/CalcEl1/Labs/lab4.htm Scrivere un programma in Assembly MIPS che legga da input gli elementi di un array di interi

Si determini la matrice che rappresenta F rispetto alle

Ricorda che devi indicare in modo ordinato tutti i passaggi, svolgi le ultime quattro dietro o in un foglio protocollo.. Punteggio Punteggio Punteggio: mezzo punto per le prime

Ricorda che devi eseguire tutti i passaggi sul foglio protocollo e riportare sul foglio solo le soluzioni delle singole disequazioni, lo schema e le soluzioni del sistema.

Calcolare la velocit`a angolare a cui dobbiamo far ruotare una centri- fuga con raggio del rotore di 0.4 metri affinche’ la velocit`a di centrifu- gazione della stessa cellula

1° mazzo: Calcolare la probabilità che estratte 4 carte siano tutte dello