Buscar

AV2 Joao_Vitor_Ferreira_Luz_202002006161 ADS - Sistema Operacioanl

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

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
Você viu 3, do total de 5 páginas

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

________________________________________________________________________________ 
 
FACULDADE ESTÁCIO DE CURITIBA 
 
 
Curso: ADS Turma: ADS - 2021 
Disciplina: Sistemas Operacionais Professor(a): Douglas Rocha Mendes 
Data: 18/06/2021 Avaliação: AV2 
 
Aluno: Joao Vitor Ferreira da Luz 
Matrícula: 202002006161 
 
Nota: 
 
INSTRUÇÕES PARA A AVALIAÇÃO: 
a) Leia atentamente todas as questões antes de iniciar; 
b) A interpretação das questões faz parte da avaliação; 
c) Para as respostas, utilize caneta azul ou preta; 
d) prova individual, com consulta etc. Vale 80 pontos. 20 pontos do trabalho bimestral. 
Boa Prova! 
 
 
1. (Vale 10 pontos) Comente sobre a técnica de overlay? 
R: Esta técnica consiste em dividir o programa em partes para poupar recursos 
de memória, o programa é dividido em um arquivo principal e outros com as 
“funções” assim os arquivos de segundo plano são “ativados” somente quando 
chamados. 
 
2. (Vale 10 pontos) O quê acontece quando há pouca RAM em um sistema 
computacional, como ele se comporta? 
R: A falta de memória RAM faz com que o sistema fique lento ou pare, pós é 
ela que armazena arquivos de curto tempo ou dados de giro do sistema. 
 
3. (Vale 10 pontos) Suponha que um programador precisou desenvolver um 
programa para solucionar a seguinte equação: 
X = (100 x 3) + (2 x (A + 30)) + (20 - 2) + (3 x B). 
Para otimizar o processamento, este programador optou por dividir a equação 
em partes menores e distribuí-las em diferentes threads. O resultado foi: 
 
⚫ PROGRAM EQUACAO; 
⚫ VAR X, A, B, C, D: integer; 
⚫ INICIO 
⚫ QA := (100*3); 
⚫ QB := 2 * (A + 30); 
⚫ QC := (20-2); 
⚫ QD := (3 * B); 
⚫ QX := A + B + C + D; 
⚫ FIM 
 
 
________________________________________________________________________________ 
 
O algoritmo acima contém um erro, que ilustra a complexidade do uso de threads. 
Descreva o erro do algoritmo acima e apresente uma solução para este problema. 
R: O erro ocorre pois a threads vão se “bater”e não serão executadas ao mesmo 
tempo, seria uma solução dividir o programa e fazer somente uma operação com 
threads. 
 
4. (Vale 10 pontos) Apresentar os 15 primeiro números da sequência de 
Fibonacci, utilizando RECURSIVIDADE. 
R: O sistema de recursividade consiste em reutilizar uma “função”, Fibonacci 
poderia ser resolvida logicamente da seguinte maneira: 
 
for{ 
x=1 
xant = 0 
xant = x + xant 
} 
 
 
5. (Vale 10 pontos) Quais ações não devemos aplicar a um programa que o levaria 
a gerar um Stack Overflow e Outof Memory. 
R: não devemos gerar loops infinitos, não ocupar mais memoria do que possui, 
desalocar memoria, utilizar threads para diminuir os recursos utilizados. 
 
6. (Vale 10 pontos) Sobre as linhas do programa abaixo: Comentar cada uma das 
linhas informando se seu conteúdo seria mantido na memória Heap ou Stack. 
 
A) float *v ; 
B) int i ; 
C) v = calloc( 1000, sizeof(float) ) ; // aloca 1.000 floats 
D) for (i=0; i < 1000; i++) // inicializa o vetor 
E) v[i] = 1.0 / (i + 1) ; 
 
R: 
A) – um ponteiro que aponta para uma variável float, memoria Stack 
B) – uma variável que aloca inteiro, memoria stack 
C) – o ponteiro v aponta para uma alocação de momoria com 1000 floats, memoria stack 
D) – Inicia um loop for que ira ocorrer até que ‘i’ seja maior que 1000, stack 
E) – adiciona o valor de ‘i’ a um vetor, stack. 
 
7. (Vale 10 pontos) (Vale 10 pontos) Implementar um programa que apresente o 
problema de Livelock, utilizar os personagens Alphonse e Jeronimo. 
R: 
public class Gerente { 
 static final Alphonse loja = new Alphonse(); 
 static final Jeronimo carro = new Jeronimo(); 
 
________________________________________________________________________________ 
 
 public static void main(String[] args) { 
 Thread t1 = new Thread(new Runnable() { 
 public void run() { 
 loja.aguardarLiberacaoRefem(carro); 
 } 
 }); 
 t1.start(); 
 
 Thread t2 = new Thread(new Runnable() { 
 public void run() { 
 carro.receberValorResgate(loja); 
 } 
 }); 
 t2.start(); 
 } 
} 
 
public class Alphonse { 
 private boolean moneySent = false; 
 public void aguardarLiberacaoRefem(Jeronimo carro) { 
 while (!carro.liberarRefem()) { 
 System.out.println("Alphonse: Aguardando Jeronimo liberar venda."); 
 try { 
 Thread.sleep(1000); 
 } catch (InterruptedException ex) { 
 ex.printStackTrace(); 
 } 
 } 
 System.out.println("Alphonse: Enviou dinheirodo para compra."); 
 this.moneySent = true; 
 } 
 public boolean enviarDinheiro() { 
 return this.moneySent; 
 } 
} 
public class Jeronimo { 
 private boolean hostageReleased = false; 
 public void receberValorResgate(Alphonse loja) { 
 while (!loja.enviarDinheiro()) { 
 System.out.println("Jeronimo: Aguardando o pagamento do veiculo."); 
 try { 
 Thread.sleep(1000); 
 } catch (InterruptedException ex) { 
 ex.printStackTrace(); 
 } 
 } 
 
 System.out.println("Jeronimo: carro vendido."); 
 
________________________________________________________________________________ 
 
 this.hostageReleased = true; 
 } 
 public boolean liberarRefem() { 
 return this.hostageReleased; 
 } 
} 
 
 
8. (Vale 10 pontos) Implementar um programa que apresente a solução do 
problema de Livelock, implementado na questão onde foram utilizados os 
personagens Alphonse e Jeronimo.. 
R: 
public class Gerente { 
 static final Alphonse loja = new Alphonse(); 
 static final Jeronimo carro = new Jeronimo(); 
 public static void main(String[] args) { 
 Thread t1 = new Thread(new Runnable() { 
 public void run() { 
 loja.aguardarLiberacaoRefem(carro); 
 } 
 }); 
 t1.start(); 
 
 Thread t2 = new Thread(new Runnable() { 
 public void run() { 
 carro.receberValorResgate(loja); 
 } 
 }); 
 t2.start(); 
 } 
} 
 
public class Alphonse { 
 private boolean moneySent = false; 
 int tempoMaxEsperaInvasao = 10; int tempoEsperaInvasao = 0; 
 public void aguardarLiberacaoRefem(Jeronimo carro) { 
 while (!carro.liberarRefem()) { 
 System.out.println("Alphonse: Aguardando Jeronimo liberar venda."); 
 try { 
 Thread.sleep(1000); 
 if (this.tempoEsperaInvasao == this.tempoMaxEsperaInvasao){ 
 break; 
 } 
 this.tempoEsperaInvasao++; 
 } catch (InterruptedException ex) { ex.printStackTrace(
); } 
 } 
 
________________________________________________________________________________ 
 
 System.out.println("Alphonse: Enviou dinheirodo para compra."); 
 this.moneySent = true; 
 } 
 public boolean enviarDinheiro() { 
 return this.moneySent; 
 } 
} 
public class Jeronimo { 
 private boolean hostageReleased = false; 
 public void receberValorResgate(Alphonse loja) { 
 while (!loja.enviarDinheiro()) { 
 System.out.println("Jeronimo: Aguardando o pagamento do veiculo."); 
 try { 
 Thread.sleep(1000); 
 } catch (InterruptedException ex) { 
 ex.printStackTrace(); 
 } 
 } 
 
 System.out.println("Jeronimo: carro vendido."); 
 this.hostageReleased = true; 
 } 
 public boolean liberarRefem() { 
 return this.hostageReleased; 
 } 
}

Outros materiais