Sistemas Operacionais Concorrência Entre Processos
Por: Felipe Ribeiro • 5/12/2020 • Abstract • 964 Palavras (4 Páginas) • 324 Visualizações
1 Var
2
3 // Variaveis de controle das threads
4
5 thread thread_A, thread_B, thread_C: thread;
6
7 // Semaforos de controle
8
9 sema_ impressora, sema_plotter, sema_scanner: semaforo;
10
11
12
13 Procedimento Proc_A( )
14
15 Início
16
17 Enquanto (verdadeiro) Faça // Procedimento nunca termina
18
19 processa_algo();
20
21 aloca_plotter();
22
23 processa_algo();
24
25 libera_plotter();
26
27 Fim Enquanto;
28
29 Fim;
30
31
32
33 Procedimento Proc_B( )
34
35 Início
36
37 Enquanto (verdadeiro) Faça // Procedimento nunca termina
38
39 pro cessa_algo();
40
41 aloca_scanner();
42
43 processa_algo();
44
45 aloca_impressora();
46
47 processa_algo();
48
49 aloca_plotter();
50
51 processa_algo();
52
53 libera_plotter();
54
55 libera_impressora();
56
57 libera_scanner();
58
59 Fim E nquanto;
60
61 Fim;
62
63
64
65 Procedimento Proc_C( )
66
67 Início
68
69 Enquanto (verdadeiro) Faça // Procedimento nunca termina
70
71 processa_algo();
72
73 aloca_impressora();
74
75 processa_algo();
76
77 aloca_scanner();
78
79 processa_algo();
80
81 libera_impressora();
82
83 libera_scan ner();
84
85 Fim Enquanto;
86
87 Fim;
88
89
90
91 Início
92
93 sema_ impressora = 1; // Inicia semaforo de controle da impressora
94
95 sema_ plotter = 1; // Inicia sem aforo de controle do plotter
96
97 sema_ scanner = 1; // Inicia sem aforo de controle do scanner
98
99 // Inicia as threads colocando- as em execução paralelamente
100
101 pthread_cria(thread_A, Proc_A ); // Inicia Proc_A como uma threa d
102
103 pthre ad_create(thr ead_B, Proc_B ); // Inicia Proc_A como uma threa d
104
105 pthre ad_create(thr ead_C, Proc_C ); // Inicia Proc_A como uma threa d
106
107 // fa z com que a t hread princip al espere as demais acaba rem
...