Buscar

SISTEMAS OPERACIONAIS av2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

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 processa_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 Enquanto;
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_scanner();
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 semaforo de controle do plotter
96 
97 sema_scanner = 1; // Inicia semaforo de controle do scanner
98 
99 // Inicia as threads colocando-as em execução paralelamente
100 
101 pthread_create(thread_A, Proc_A); // Inicia Proc_A como uma thread
102 
103 pthread_create(thread_B, Proc_B); // Inicia Proc_A como uma thread
104 
105 pthread_create(thread_C, Proc_C); // Inicia Proc_A como uma thread
106 
107 // faz com que a thread principal espere as demais acabarem
108 
109 pthread_join(thread_A);
110 
111 pthread_join(thread_B);
112 
113 pthread_join(thread_C);
114 
115 Fim.
116 
117 
118 
119 RESPOSTAS:
120 
121 A identificação das linhas do sistema que podem causar problemas durante sua execução.
122 
123 R: LINHAS 53, 55, 57
124 
125 A explicação dos problemas que podem ocorrer.
126 
127 R:Liberação dos processos fora de ordem de execução, pode ocasionar a perda de 
informações ou bloqueio de um dos processos em execução.
128 
129 Uma proposta de correção no algoritmo para que os problemas sejam corrigidos e o 
sistema execute sem erros.
130 
131 R: libera_scanner(); 
132 libera_impressora(); 
133 libera_plotter();
134 
135 
136 
137

Continue navegando