Escolar Documentos
Profissional Documentos
Cultura Documentos
1 Suponha que exista um processador P5, 5x mais poderoso que um processador P1. Em
principio poderamos usar 5 processadores P1 ou um processador P5, com sistema operacional
para executar as mesmas 5 tarefas distintas. Explique, em ambos os casos como seriam
resolvidos dois problemas:
Resposta:
0|P1|5|P2|10|P3|15|P4|20|P5|25
8 16 24
Utilizar um hardware de memoria (latch) para armazenar evento e quando tarefa
rodar novamente, liberar evento para tratamento.
Na prtica do jantar dos filsofos, uma equipe relatou que o sistema inteiro entrava em
deadlock. Considerar o cdigo ao lado e estabelecer as condies para que isto ocorra.
medita e come so funes cujo parmetro n representa seu tempo de execuo em ms.
As condies podem envolver a escolha do tipo de escalonamento, quantum (q) se
necessrio e ajuste separado ou conjunto de m e n.
01 #define N 5
02 sem_t garfo[5];//5 semforos iniciados em 1
03 void filosofo (int i){
04 while(1){
05 medita (int n);
06 sem_down (garfo [i]) ;
07 sem_down (garfo [(i+1) % N]) ;
08 come (int m);
09 sem_up (garfo [(i+1) % N]) ;
10 sem_up (garfo [i]) ;
11 }
12 }
Resposta:
Para que ocorra um deadlock, necessitamos:
diminuir o quantum, para que no seja possvel que o mesmo filosofo pegue dois garfos
consecutivos.
aumentar m, para numero absurdamente grande.
3) Processos / Threads: a) O que chaveamento de contexto? Descreva as aces executadas
pelo kernel para realizar o chaveamento de contexto entre processos (1,0)
O kernel recebe um comando, normalmente uma interrupo de timer, para que analise qual
programa atualmente no estado de PRONTO deva tomar conta da CPU. Escolhido o programa,
o kernel salva o contexto (registradores, PC, SP e outras informaes do estado do programa
em uma rea especfica). Da ele restaura nos regs. as informaes desta mesma rea, porm
do programa que passar a rodar, e promove um salto (jump ou branch) para o novo PC.
RESPOSTA:
Chaveamento de contexto, o processo pelo qual o sistema operacional salva o contexto do
atual programa antes de troca-lo, repassando registradores PC, PSW, para que ao retornar a
esse programa no haja perda de dados.
4) processos / threads
Considerando o diagrama de estados dos processos apresentado na figura ao lado:
a) complete o diagrama com a transio de estado que est faltando - t6 (0.3).
b) Identifique os estados: NEW, READY, TERMINATED, BLOCKED, RUNNING (0.5).
c) Apresente o significado de cada um dos estados (0.5) e transies (1.2).
resposta:
a) Desenhar o T6 ao lado de T4, porm sentido oposto. E6 = run -> ready
b) e1 = NEW, e2 = TERM., e3 = RUN, e4 = BLOCKED, e5 = READY
c) E1 novo processo a ser escalonado
E2 terminou execuo
E3 processo atualmente escalonado
E4 processo bloqueado enquanto executava
E5 processo preparado e na fila para ser excalonado
5) Escalonamento de CPU:
Esquematize um sistema que possua trs tasks:
T1: processa os elementos de um buffer de N elementos (unsigned 8). Este processamento
simples e consiste em somar todos os elementos do buffer em uma varivel sem sinal de 8
bits. Quando este clculo terminar T1 manda uma mensagem para T2 e bloqueia.
T2: permanece bloqueada at que a recepo de uma mensagem ocorra. Quando a mensagem
recebida contabiliza o pacote recebido, imprime mensagem sobre o evento e devolve o
controle ao S.O (Yield()).
Handler de interrupo: Este handler chamado pelo controlador de recepo de dados
quando um pacote de N dados recebido. Neste momento o handler manda uma mensagem
para T1, que a desbloqueia.
Montar um diagrama explicativo usando o diagrama abaixo para situar T1, T2 e o handler de
interrupo.
Rotinas existentes:
send(TaskId, dados_tx): Dados_tx um Unsigned de 32 bits.
recv(TaskId): recebe um unsigned 32.
A funo de inicializao das taks create_task (int ID, *void func(void *)).
(3,0)
Pede-se:
a) Fragmentos de cdigo em C com a inicializao das tasks T1 e T2 e eventualmente algum
trecho para o handler de interrupo.
b) Parte dos cdigos que ficaro em loop para cada task T1 e T2. No caso do handler de
interrupo, este trecho de cdigo o que chamado quando a interrupo de HW ocorre e
termina quando o trabalho do handler terminado.
Resposta:
Int cont=0
Uint dados_tx
#define N 32
Uint_8_t buffer [N]