DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO BACHARELADO EM INFORMÁTICA SISTEMAS OPERACIONAIS I 20 SEM/05 Teste 1 – Unidade I DURAÇÃO: 50 MINUTOS Aluno: ________________________________________________ Escore: __________ 1a Questão (40) Assinale a resposta que considerar mais correta. 1. A diferença entre reentrância e recursividade: A) Está na forma como ambas operam – reentrância serve diversos processos enquanto recursividade se limita a um único processo. B) A diferença é apenas conceitual. Na prática, ambas possibilitam que, em tempo de execução, uma mesma rotina possa chamar-se repetidamente a si mesma. C) Reentrância tem a ver com a possibilidade de se executar concorrentemente duas ou mais instâncias de um mesmo processo enquanto recursividade tem a ver com a repetição de um mesmo bloco de instruções. D) Reentrância é a possibilidade de um mesmo trecho de código ser compartilhado por múltiplos usuários em um mesmo período de tempo. Recursividade é a capacidade de uma rotina poder chamar-se repetidamente a si própria. E) Reentrância está diretamente ligada a multiprogramação e representa a possibilidade de um mesmo processo dar repetidas entradas na memória principal para ser executado. Recursividade é um conceito lógico, onde o programador cria ciclos recursivos no fluxo de controle do seu programa. 2. A adoção de diferentes modos de execução em um ambiente computacional, por exemplo, modo usuário e modo Kernel, tem por objetivo: A) Não misturar os processos pertencentes ao Sistema Operacional com os processos submetidos pelos usuários. B) Facilitar a identificação, o controle e o gerenciamento dos processos pertencentes aos usuários. C) Garantir o acesso correto e organizado aos diferentes recursos disponíveis, fazendo com que os mesmos só possam ser alcançados no modo Kernel. D) Promover a correta utilização dos recursos disponíveis aos usuários e executar tarefas repetitivas de forma eficiente e rápida. E) Proteger o espaço de endereçamento do Sistema Operacional que assim não poderá ser acessado por qualquer programa de usuário que sempre rodará no modo usuário. 3. Considerando as possíveis formas de construção de uma instrução de máquina, geralmente denominadas de máquinas de zero, um, dois e três endereços, pode-se dizer que: A) As máquinas de zero endereços tomam por base o uso de uma estrutura de pilha; as de um endereço fazem uso intenso de um registrador chamado acumulador e as de dois endereços usam um dos endereços de operando como entrada e como saída. B) De todas as possíveis formas de construção da instrução de máquina, aquela que apresenta maior flexibilidade e desempenho na execução é a máquina de três endereços. C) De todas as possíveis formas de construção da instrução de máquina, aquela que apresenta maior flexibilidade e desempenho na execução é a máquina de zero endereços. D) As máquinas de zero endereços são pouco flexíveis, porém são extremamente rápidas, sendo por isto muito indicadas para serem usadas juntamente com sistemas operacionais de tempo real. E) As máquinas de um e dois endereços surgiram com a geração dos microprocessadores e sistemas operacionais mono-usuários, hoje muito em voga na microinformática. 4. Dado o código assembly abaixo, para máquinas de um endereço, identifique a expressão equivalente: 01 02 03 04 05 06 A) B) C) D) E) LOAD MUL STORE LOAD SUB STORE E F T D T T 07 08 09 10 11 LOAD MUL ADD DIV STORE B C A T X X = (D – E * F) / (B * C + A) X = (B * C + A) / (D – E * F) X = (A + B * C) / (E * F – D) X = (A + B * C) / (D – E * F) X = (E * F - D) / (B * C + A) 5. O processo de digitalização: A) Consiste na conversão de caracteres e símbolos em códigos binários de tamanho fixo. B) Implica necessariamente numa perda de informação contida no fenômeno analógico. C) Depende exclusivamente da taxa de amostragem utilizada na captura do sinal analógico. D) É de fundamental importância para sistemas que operem com leitura de sensores. E) Pode provocar perda de informação, dependendo da taxa de amostragem e de binarização. 6. A Tabela de Interrupções: A) É uma estrutura de dados mantida nos endereços mais baixos de memória que tem por objetivo conter o endereço do dispositivo que tenha solicitado uma interrupção. B) É uma área de memória onde o sistema operacional armazena as diferentes rotinas de tratamento de interrupção que sejam suportadas. C) É uma área no início da memória onde o sistema salva os dados de todas as interrupções enquanto estiverem pendentes. A área é liberada assim que a interrupção for atendida. D) É uma estrutura de dados que nos atuais computadores pode ser mantida em qualquer lugar da memória, que tem por objetivo conter o endereço das diferentes RTIs existentes. E) É uma estrutura de dados mantida pelo sistema operacional com um histórico de todas as interrupções tratadas pelo sistema durante a sessão corrente de processamento. 7. TRAP: A) É um tipo de interrupção síncrona que é gerada em decorrência de possíveis erros encontrados na execução de um código qualquer. B) É uma rotina do sistema operacional que trata de interrupções assíncronas geradas por dispositivos conectados ao computador por intermédio da interface USB. C) É uma rotina do SO chamada “armadilha”, tradução literal do nome, onde caem todos os processos que gerem algum tipo de exceção durante sua execução. D) É uma rotina reentrante do SO que trata das interrupções do tipo síncrona e que admite múltiplos níveis de interrupção. E) É uma interrupção do tipo assíncrona que é gerada não por dispositivos, mas pelos próprios processos sempre que os mesmos incorrerem em algum erro de execução. 8. Suponha que um processador vetorial faça uso de uma estrutura de pipeline uniforme (todos os estágios consomem o mesmo tempo) para acelerar operações aritméticas. Sabendo que o pipeline opera em uma freqüência de clock de 80 Mega Hertz e que uma série de 15 instruções (sem qualquer tipo de dependência ou desvio) ao serem submetidas ao pipeline foram executadas em 250ns, calcule o número provável de estágios deste pipeline: A) 4 B) 5 C) 6 D) 8 E) 10 9. Em um certo computador, o processador realiza acessos de leitura à memória sempre no formato de 64 bits, mas na escrita podem ser nos formatos de 64, 32, 16 ou 8 bits. Nessas condições, o número mínimo de linhas de controle enviadas pelo processador à memória para especificar o tipo de acesso (leitura ou escrita) e o formato envolvido, deve ser de: A) 2 B) 3 C) 5 D) 6 E) 10 10. No que diz respeito aos sistemas multiprogramados, pode-se afirmar que: A) Tendem a aumentar o throughput do sistema, mas não necessariamente, aumentam o desempenho individual dos processos. B) Suportam vários processos distintos em memória usando de forma exclusiva o uso da CPU e dos demais recursos do sistema. C) Tendem a reduzir o throughput do sistema, mas, em contrapartida, aumentam o desempenho individual dos processos. D) Suportam um certo grau de paralelismo (de granularidade grossa) quando dotados de um esquema de pipeline. E) Podem suportar sistemas dos tipos: batch, time-sharing, tempo real, cliente servidor e execução paralela de fluxos de dados. 2a Questão (30) Considere o trecho de pseudo-código abaixo: : Enquanto Não for Fim-de-Arquivo Execute tarefas preparatórias Leia próximo registro Verifique enquadramento do funcionário Calcule suas vantagens pecuniárias Calcule a lista de descontos Prepare registro no layout do holerite Grave registro para impressão do holerite Realize mais algumas operações aritméticas Limpe algumas variáveis utilizadas Fim-Enquanto : Assumindo que o programa seja executado em um ambiente onde as operações de E/S possam ser dos tipos: programada ou com interrupção, verifique os fluxos de execução abaixo e responda às perguntas. 1 I/O Program Início do Loop 2 6 I/O Command Lê Registro 3 I/O Program 8 I/O Command 7 I/O End Grava Registro 4 Interrupt Handler 9 End Fim do Loop 5 1. O fluxo de execução do programa abrangendo apenas a primeira passagem pelo ciclo do loop e considerando a técnica de E/S programada é dada pela alternativa: A) 2 – 8 – 3 – 9 – 8 – 4 – 9 – 5 B) 1 – 2 – 6 – 7 – 3 – 6 – 7 – 4 C) 1 – 2 – 6 – 3 – 7 – 6 – 4 – 7 D) 1 – 6 – 2 – 7 – 3 – 6 – 4 – 7 E) Nenhuma das alternativas acima: _______________________________________________ 2. Caso a técnica de E/S seja por interrupção, informe qual seria o fluxo de execução para o mesmo caso da pergunta anterior: R: 1 – 2 – 8 – 3a – 9 – 3b – 8 – 4a – 9 – 4b 3. Ainda considerando o mesmo caso descrito no item 2, como ficaria o fluxo de execução caso o tempo de execução do trecho 3 do programa seja menor que o tempo de resposta final do dispositivo de E/S? R: 1 – 2 – 8 – 3 – CPU IDLE – 9 – 8 – 4a – 9 – 4b 4. Suponha que a técnica de E/S adotada seja por interrupção, que o arquivo de dados tenha 100 registros no total e que o tempo de execução de cada um dos seguintes trechos de código seja: 1 – 10 u.t.; 2 – 5 u.t.; 3 – 15 u.t.; 4 – 10 u.t.; 5 – 100 u.t.; 6 – 20 u.t.; 7 – 25 u.t.; 8 – 15 u.t. e 9 – 5 u.t.. Nestas condições, calcule o tempo que será efetivamente gasto na execução apenas do trecho correspondente ao Loop do programa. Considerando que o dispositivo responde antes da conclusão dos trechos 3 e 4 Fluxo de execução de um Loop – FE1 = 2 (5 u.t.) + 8 (15 u.t.) + 3a (5 u.t) + 9 (5 u.t.) + 3b (10 u.t.) + 8 (15 u.t.) + 4a (5 u.t.) + 9 (5 u.t.) + 4b (5 u.t.) = 70 u.t. 100 registros Î FE100 = 7000 u.t. Resposta: 7000 u.t. 4a Questão (30) Suponha que você encontre a memória do seu computador carregada com os seguintes trechos de código: Endereços Código Trecho de Código 1200 1600 if N > 0 N Å N – 1; Call Proc 3 Procedure Proc3 Call Proc1 Main Program 4000 4500 6000 6100 Call Proc 2 Procedure Proc1 6350 Call Proc 2 7300 7350 Procedure Proc2 NÅ1 Call Proc 3 Considere que todas as chamadas a rotinas são sem passagem de parâmetros, com exceção da chamada a rotina três que passa o valor de “N” como parâmetro. 1. Assumindo que a pilha está inicialmente vazia, complete a figura abaixo informando os valores a serem carregados e/ou retirados da pilha a medida que o programa principal vai sendo executado. Destaque o evento e o correspondente conteúdo da pilha. • Estado Inicial • 4501 Call Proc1 • 6101 4501 Call Proc2 • N=1 7351 6101 4501 Call Proc3 • N=0 1601 7351 6101 4501 Call Proc3 • 7351 6101 4501 Return Proc3 • 6101 4501 Return Proc3 • 4501 Return Proc2 • 6351 4501 Call Proc2 • N=1 7351 6351 4501 Call Proc3 • N=0 1601 7351 6351 4501 Call Proc3 • 7351 6351 4501 Return Proc3 • 6351 4501 Return Proc3 • 4501 Return Proc2 • Return Proc1 2. Enumere os trechos de código que podem estar usando da técnica de recursividade. R: Procedure 3 3. Na sua opinião alguma destas rotinas (procedures) poderia ser do tipo reentrante? Enumere e justifique sua resposta. R: Qualquer das Procedures, uma vez que não se tem conhecimento das rotinas que compõem nem o endereçamento completo do código executável do usuário. 4. Na sua opinião como devem ser tratados os dados nas rotinas reentrantes e nas recursivas de forma a preservar a integridade dos mesmos? R: São tratados como instâncias independentes. Na reentrância para não misturar dados de processos chamadores distintos e na recursividade, para não misturar instâncias distintas do ciclo de execução. 5. Na sua opinião haveria algum impedimento para uma rotina reentrante também ser recursiva? Justifique. R: Em teoria nenhum. Nada impede que uma rotina reentrante faça uso da técnica de recursividade para resolver o problema a que se destina.