Baixe o app para aproveitar ainda mais
Prévia do material em texto
1. Considerando o código abaixo: public class Consumidor extends Thread { private int idConsumidor; private Buffer pilha; private int totalConsumir; public Consumidor(int id, Buffer p, int totalConsumir) { idConsumidor = id; pilha = p; this.totalConsumir = totalConsumir; } public void run() { for (int i = 0; i < totalConsumir; i++) { pilha.get(idConsumidor); } } } public class Produtor extends Thread { private int idProdutor; private Buffer pilha; private int producaoTotal; public Produtor(int id, Buffer p, int producaoTotal) { idProdutor = id; pilha = p; this.producaoTotal = producaoTotal; } public void run() { for (int i = 0; i < producaoTotal; i++) { pilha.set(idProdutor, i); } } } public class Buffer { private int conteudo; private boolean disponivel; public synchronized void set(int idProdutor, int valor) { while (disponivel == true) { try { wait(); } catch (Exception e) { e.printStackTrace(); } } conteudo = valor; disponivel = true; notifyAll(); } public synchronized int get(int idConsumidor) { while (disponivel == false) { try { wait(); } catch (Exception e) { e.printStackTrace(); } } disponivel = false; notifyAll(); return conteudo; } } public static void main(String[] args) { Buffer bufferCompartilhado = new Buffer(); Produtor produtor1 = new Produtor(1, bufferCompartilhado, 5); Produtor produtor2 = new Produtor(2, bufferCompartilhado, 5); Consumidor consumidor1 = new Consumidor(1, bufferCompartilhado, 2); Consumidor consumidor2 = new Consumidor(2, bufferCompartilhado, 8); produtor1.start(); consumidor1.start(); produtor2.start(); consumidor2.start(); } Responda as seguintes questões: a) Qual a estratégia utilizada? Esquematize a arquitetura descrita no programa (0,5) R: Produtor/Consumidor com sincronização condicional Desenhar o esquema de produtor/consumidor - b) Para quais tipos de problemas você utilizaria essa estratégia? Quais motivos da utilização dessa estratégia? (1,5) R: Em problemas de compartilhamento de recursos: vários processos concorrem pelo mesmo recurso. Deve ser implementada a exclusão mútua, ou seja, exclusividade do acesso ao recurso compartilhado. Em outras palavras, são acessos concorrentes, onde um processo para executar depende da execução de outro processo antecipadamente. Como no caso do produtor/consumidor. Onde o processo que irá consumir os elementos do buffer somente poderá acessar o buffer se houver elementos neste. No outro lado o processo que produz os elementos, não pode produzir com o buffer cheio. Caso o processo tente executar uma leitura com o buffer vazio, será gerado um erro. Caso tente produzir um elemento com a fila cheia, será gerado um erro. c) Simule a execução do problema para um elemento produzido por cada Thread. (2,0) 2. O CEO da sua empresa ficou muito preocupado com o ataque cibernético ocorrido na semana passada. Ele leu muito sobre o assunto e alguns artigos descrevendo que o sistema operacional Linux é melhor que o sistema operacional Windows devido a sua menor vulnerabilidade ao ataque cibernético. No entanto, ele quer uma apresentação detalhando o que é um sistema operacional, arquitetura e funções. O que você colocaria nessa apresentação? Indicar o que pode ser afetado com um vírus instalado em um sistema operacional. (2,5) R: O sistema operacional tem como objetivo funcionar como uma interface entre o usuário e o computador, tornando sua utilização mais simples, rápida e segura. Facilidade de acesso aos recursos do sistema Compartilhamento de recursos de forma organizada e protegida. Algumas funções: Principais funções do kernel: • Tratamento de interrupções e exceções; • Criação e eliminação de processos e threads; • Sincronização e comunicação entre processos e threads; • Escalonamento e controle dos processos e threads; • Gerência de memória; • Gerência do sistema de arquivos; • Gerência de dispositivos de E/S; • Suporte a redes locais e distribuídas; • Contabilização do uso do sistema; • Auditoria e segurança do sistema. Pelas funções apresentadas no kernel, o vírus pode apagar os arquivos, criptografar os arquivos, etc. 3. O Diretor de TI da organização está alocando orçamento para investir em novos servidores na organização. Porém ele está em dúvida se compra servidores com um processador ou multiprocessadores, pois os servidores multiprocessadores Hardware Rotinas do Sistema Operacional Aplicações Utilitários Linguagem de comandos Núcle o têm o custo muito maior que os servidores octacore previstos inicialmente no orçamento. Ele pediu para você apresentar quais as vantagens do servidor multiprocessador e em quais situações na organização haverá um ganho real com esses servidores. A arquitetura da organização possui o seguinte desenho com um acesso massivo aos servidores de banco de dados e às bases de dados: (2,0) R: A vantagem é a distribuição das consultas em diversos servidores. Cada processador do servidor pode ficar responsável por executar as consultas para uma base de dados diferente. Conseguindo paralelismo na execução das consultas. 4. Uma antiga empresa de desenvolvimento de software resolveu atualizar toda sua infraestrutura computacional adquirindo um sistema operacional multitarefa, processadores multi-core (múltiplos núcleos) e o uso de uma linguagem de programação com suporte a threads. O sistema operacional multitarefa de um computador é capaz de executar vários processos (programas) em paralelo. Considerando esses processos implementados com mais de uma thread (multi-threads), analise as afirmações abaixo. (0,5) I. Os ciclos de vida de processos e threads são idênticos. II. Threads de diferentes processos compartilham memória. III. Somente processadores multi-core são capazes de executar programas multi- threads. IV. Em sistemas operacionais multitarefa, threads podem migrar de um processo para outro. É correto apenas o que se afirma em A I. B II. C I e III. D I e IV. E II e IV. Servidor de Banco de Dados Servidor de Aplicação Servidor de Banco de Dados BD1 BD2 BD3 BD4 BD5 BD6 5. Um vendedor de artigos de pesca obteve com um amigo o código executável (já compilado) de um programa que gerencia vendas e faz o controle de estoque, com o intuito de usá-lo em sua loja. Segundo o seu amigo, o referido programa foi compilado em seu sistema computacional pessoal (sistema A) e funciona corretamente. O vendedor constatou que o programa excecutável também funciona corretamente no sistema computacional de sua loja (sistema B). Considerando a situação relatada, analise as afirmações a seguir. (0,5) I. Os computadores poderiam ter quantidades diferentes de núcleos (cores). II. As chamadas ao sistema (system call) do sistema operacional no sistema A devem ser compatíveis com as do sistema B. III. O conjunto de instruções do sistema A poderia ser diferente do conjunto de instruções do sistema B. IV. Se os registradores do sistema A forem de 64 bits, os registradores do sistema B poderiam ser de 32 bits. É correto o que se afi rma em A III, apenas. B I e II, apenas. C III e IV, apenas. D I, II e IV, apenas. E I, II, III e IV. QUESTÃO 19 6. Processadores atuais incluem mecanismos para o tratamento de situações especiais, conhecidas como interrupções. Em uma interrupção, o fluxo normal de instruções é interrompido para quea causa da interrupção seja tratada. Com relação a esse assunto, assinale a opção correta. (0,5) A Controladores de entrada e saída geram interrupções de forma síncrona à execução do processador, para que nenhuma instrução fique incompleta devido à ocorrência da interrupção. B Quando uma interrupção ocorre, o próprio processador salva todo o seu contexto atual, tais como registradores de dados e endereço e códigos de condição, para que esse mesmo contexto possa ser restaurado pela rotina de atendimento da interrupção. C O processador pode auto-interromper-se para tratar exceções de execução, tais como um erro em uma operação aritmética, uma tentativa de execução de instrução ilegal ou uma falha de página em memória virtual. D Rotinas de tratamento de interrupção devem ser executadas com o mecanismo de interrupção inibido, pois esse tipo de rotina não permite aninhamento. E O uso de interrupção para realizar entrada ou saída de dados somente é eficiente quando o periférico trata grandes quantidades de dados, como é o caso de discos magnéticos e discos ópticos. Para periféricos com pouco volume de dados, como teclados e mouses, o uso de interrupção é ineficiente.
Compartilhar