Baixe o app para aproveitar ainda mais
Prévia do material em texto
Fechar Avaliação: CCT0166_AV_ » SISTEMAS OPERACIONAIS Tipo de Avaliação: AV Aluno: Professor: MAURO CESAR CANTARINO GIL MARCELO RIBEIRO DE OLIVEIRA Turma: 9001/AA Nota da Prova: 7,3 Nota de Partic.: 2 Data: 22/11/2014 14:10:08 1a Questão (Ref.: 201201871225) Pontos: 1,0 / 1,0 Um computador com endereços de 32 bits usa uma tabela de páginas de dois níveis. Os endereços virtuais são divididos em um campo de 11 bits para o primeiro nível da tabela, outro campo de 11 bits para o segundo nível e um último campo para o desloamento. Quantas páginas podem existir neste sistema? 232 212 222 211 210 2a Questão (Ref.: 201201872462) Pontos: 0,5 / 0,5 Preciso de canetas e apagador para a aula. Peguei as canetas, mas parei para conversar um pouco. Ao tentar pegar o apagador fiquei sabendo que outro professor pegou o apagador para um reunião não programada e aguardava a caneta que não estava mais sobre a mesa para começar a reunião. Fiquei esperando que o apagador fosse devolvido e, como isso não aonteceu, resolvi guardar as canetas para a segunda aula e continuar aguardando o apagador. Fiquei sabendo que o outro professor também não começou a reunião pois ficou aguardando as canetas e também resolveu aguardar. Nesta situação podemos identificar a ocorrência de: Um deadlock que poderá ser solucionado se um dos professores tirar o recurso das mãos do outro. Um deadlock em função da exclusão mútua no acesso aos dois recursos Um deadlock que poderá ser solucionado quando o professor desistir da aula. Uma condição de corrida Um evento que será solucionado assim que terminar a aula 3a Questão (Ref.: 201201871063) Pontos: 0,5 / 0,5 Para melhor análise do desempenho dos processos com os diferentes tipos de escalonamento existentes, os processos são classificados em dois tipos: CPU-bound e I/O-bound. Com esse conceito definido podemos afirmar que: Exercício: CCT0224_EX_A2_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR Os processos I/O-bound levam vantagem em escalonamentos feitos com o mecanismo de preempção por tempo, enquanto os processos CPU-bound se beneficiam através de mecanismos de preempção por prioridade Os processos I/O-bound podem levar vantagem em qualquer escalonamento baseado composto com critérios de prioridade Os processos CPU-bound levam vantagem em escalonamentos feitos com o mecanismo de preempção por tempo, enquanto os processos I/O-bound se beneficiam através de mecanismos de prioridade dinâmica. Não faz diferença o tipo de escalonamento, pois sempre os processos CPU-bound levam vantagem sobre os processos I/O-bound Independente do tipo de escalonamento, os processos I/O-bound levam vantagem sobre os processosCPU-bound 4a Questão (Ref.: 201201872453) Pontos: 0,5 / 0,5 Considere uma aplicação baseada em threads em um sistema operacional com suporte a threads de kernel. Se uma das threads desta aplicação for bloqueada para aguardar um acesso ao disco podemos afirmar que as demais threads deste processo: Não serão bloqueadas mas ficaram aguardando o desbloqueio da thread que solicitou o acesso ao disco Serão interrompidas provocando um erro no processo. Serão bloqueadas também para impedir a ocorrência de erros Poderão continuar executando se não dependerem da thread que foi bloqueada Terão a prioridade reduzida para aguardar o desbloqueio da thread que solicitou o acesso ao disco 5a Questão (Ref.: 201201866296) Pontos: 0,5 / 0,5 Deadlock pode ser definido como uma situação em que um processo aguarda por um recurso que nunca estará disponível ou um evento que nunca ocorrerá. Para que ocorra a situação de deadlock, algumas condições são necessárias simultaneamente. Assinale alternativa que contém todas essas condições: Espera por recurso e não-preempção. Exclusão mútua e espera por recurso. Exclusão mútua, espera por recurso e não-preempção. Não-preempção. Exclusão mútua e não-preempção. 6a Questão (Ref.: 201201871202) Pontos: 0,5 / 0,5 Considerando que um processo em um determinado sistema operacional pode estar no estado executando, pronto ou bloqueado, marque a sentença correta. O processo passa do estado de execução para o estado de pronto se o próprio processo solicitar acesso a um dispositivo de hardware Exercício: CCT0224_EX_A3_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR O processo passa do estado de execução para o estado de pronto se for interrompido pelo temporizador (relógio) O processo passa do estado de execução para o estado de pronto se for interrompido pelo sistema operacional. O processo passa do estado de pronto para o estado de bloqueado se for solicitado um acesso ao disco. O processo passa do estado de bloqueado para o estado de executando se for solicitado pelo próprio processo. 7a Questão (Ref.: 201201917627) Pontos: 0,8 / 1,5 Uma das partes que compõe um processo é o contexto de hardware e que está relacionado com a troca de contexto (mudança de contexto) de um processo. Explique o que é o contexto de hardware de um processo e como é a implementação da troca de contexto. Resposta: A implementação da troca de contexto depende de um escalonador para ser feito, podemos usar o nome "dispatcher" para este processo. O contexto de hardware de um processo trata-se das informações que ficarão guardadas no próprio hardware caso ocorra uma interrupção de processo. Gabarito: O contexto de harware armazena o conteúdo dos registradores gerais da UCP, além dos registradores de uso específico. A mudança de contexto consiste em salvar o conteúdo dos registradores do processo que está deixando a UCP e carregá-los com os valores referentes aos do novo processo que será executado. Ou seja´substituir 0 contexto de hardware de um processo por outro. 8a Questão (Ref.: 201201872356) Pontos: 0,5 / 0,5 Um sistema operacional multitarefa tem como característica fundamental: Ser também multiusuário A execução simultânea de processos A execução concorrente de processos Uso simultâneo de mais de uma unidade de disco. Uso de interface gráfica 9a Questão (Ref.: 201201866188) Pontos: 1,5 / 1,5 Suponha um posto de abastecimento que venda apenas gasolina. Este posto tem 5 (cinco) caixas para que os clientes façam o pagamento. Cada caixa executa uma instância de um programa que atualiza o estoque (em litros) de gasolina. O arquivo que contém o estoque fica em um servidor, sendo compartilhado entre os cinco caixas. Sempre que um cliente faz o pagamento, o sistema do caixa faz, basicamente, três operações: 1. Lê o arquivo de estoque para saber a quantidade de litros que há em estoque. 2. Subtrai do estoque a quantidade de litros comprada pelo cliente. Exercício: CCT0224_EX_A4_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR 3. Grava o arquivo de estoque com a quantidade de litros calculada no passo "2". Considerando a situação exposta, descreva que problemas podem decorrer do compartilhamento do recurso "arquivo de estoque" pelos cinco processos executados de forma concorrente. Resposta: Teremos um problema referente a inconsistência de dados. Isso ocorrerá porque enquanto,por exemplo, o caixa 1 estiver executando as funções descritas em "1" e em "2" poderá haver um caixa completando o que está em "3", ou seja, é evidente que estarão trabalhando com informações desatualizadas. Gabarito: O arquivo de estoque pode ser gravado de forma inconsistente. Se um caixa já tiver executado o passo 1 ou 2 e ainda não tiver executado o passo 3 (ou seja, a gravação do arquivo) e outro caixa executar o passo 1, esse segundo caixa irá fazer uma leitura do arquivo de estoque desatualizado, desconsiderando a operação realizada pelo primeiro caixa. Dessa forma, quando o segundo caixa fizer a gravação, a operação realizada pelo primeiro caixa terá sido ignorada. 10a Questão (Ref.: 201201871218) Pontos: 1,0 / 1,0 Em um sistema monoprocessado, um escalonador pode interromper o processo em execução? Marque a resposta correta com a justificatia correta. Não, nenhum processo pode ser interrompido quando está de posse do processador. Sim, o sistema operacional emite um aviso para o escalonador executar a interrupção. Sim, o escalonador deve interromper o processo no final da fatia de tempo destinada ao processo que está em execução. Depende do sistema operacional. Não, o escalonador é um processo e não pode executar nenhuma operação enquanto não estiver de posse do processador. SISTEMAS OPERACIONAIS Simulado: CCT0166_SM_201207057851 V.1 VOLTAR Aluno(a): DIEGO LAMEIRA TAVARES Matrícula: 201207057851 Desempenho: 4,0 de 8,0 Data: 27/09/2013 22:05:49 (Finalizada) 1a Questão (Ref.: 200729921256) Pontos: 1,0 / 1,0 Suponha que um usuário acionou um programa que, ao ser carregado, solicitou a digitação de uma senha. Quando o programa foi acionado, o processo passou pelos estados "pronto" e "execução". Em seguida o programa ficou no estado "espera", pois dependia de uma operação de E/S (leitura do teclado) para prosseguir. Quando o usuário informar a senha o processo passará para qual estado? CRIADO PRONTO EXECUÇÃO Exercício: CCT0224_EX_A5_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR TERMINADO ESPERA 2a Questão (Ref.: 200729921246) Pontos: 0,0 / 1,0 Em relação ao uso de threds em modo kernel, analise as assertivas a seguir: I - Threads em modo kernel podem ser utilizados em sistemas operacionais monothread II - Threads em modo usuário são criadas e destruidas pelo sistema operacional. III - Threads em modo kernel não bloqueiam o processo quando entram em estado de espera Marque a alternativa que contém as assertivas VERDADEIRAS: Somente I Somente III Somente II Somente I e III Todas são verdadeiras 3a Questão (Ref.: 200729920388) Pontos: 1,0 / 1,0 Em relação ao conceito de processos, marque a assertiva CORRETA: Quando há duas instâncias de um mesmo programa em execução, pode-se dizer que há um único processo responsável pelas duas instâncias. Quando há duas instâncias de um mesmo programa em execução, pode-se dizer que há dois processos iguais. Sistemas multitarefa não suportam mais de uma instância do mesmo programa em execução. Quando há duas instâncias de um mesmo programa em execução, pode-se dizer que há dois processos diferentes (um para cada instância). Apenas sistemas operacionais monotarefa suportam mais de uma instância de um programa em execução. 4a Questão (Ref.: 200729920326) Pontos: 0,0 / 1,0 Um processo divide-se, basicamente, em três partes: contexto de hardware, contexto de software e espaço de endereçamento. Assinale a alternativa que representa exemplos de componentes do contexto de hardware: Prioridade de execução. PID e UID. Endereços de memória principal alocados. Registrador PC e registrador status. Owner. Exercício: CCT0224_EX_A6_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR 5a Questão (Ref.: 200729920399) Pontos: 1,0 / 1,0 Suponha que um usuário esteja utilizando um editor de texto em um terminal Windows. Em um dado momento ele nota que o computador ficou lento. O usuário confirma que aparentemente não há nenhum programa sendo executado além do Windows e do Word. Ao conferir no gerenciador de tarefas, ele observa que existe um novo processo chamado "backup". Entretanto, não há nenhuma interface para lidar com esse processo. Neste caso, podemos dizer que o processo "backup" é um processo do tipo: background. I/O-bound. CPU-bound. foreground. monotarefa. 6a Questão (Ref.: 200729919915) Pontos: 0,0 / 1,0 Threads são definidos como fluxos de execução de um mesmo processo. Sobre as thraeds, considere as afirmativas a seguir: I- Dentro de um mesmo processo, threads compartilham o mesmo contexto de hardware e espaço de endereçamento com os demais threads. II - A grande diferença entre aplicações monothreads e multithreads está no uso do espaço de endereçamento. III- A grande vantagem no uso de threads é a possibilidade de minimizar a alocação de recursos do sistema, além de diminuir o overhead na criação, troca e eliminação de processos. IV- Em um ambiente multithread, ou seja, com múltiplos threads, não existe a idéia de programas associados a processos, mas, sim, a threads. V - De forma simplificada, um thread pode ser definido como uma sub-rotina de um programa que pode ser executada de forma assíncrona, ou seja, executada concorrentemente ao programa chamador. Está(ão) correta(s) a(s) afirmativa(s) I e III, apenas II, III e IV, apenas I e II, apenas II, III, IV e V apenas II e III, apenas 7a Questão (Ref.: 200729921227) Pontos: 1,0 / 1,0 Marque a alternativa INCORRETA em relação ao conceito de sistemas operacionais: Um sistema operacional é responsável por gerenciar os recursos computacionais. É impossível fazer uso de um computador que não tenha um sistema operacional instalado. São componentes básicos de um sistema operacional: interface com o usuário; gerência do processador; gerência de memória; gerência de dispositivos; sistema de arquivos. Atua como uma interface entre o usuário e o computador. Um sistema operacional deve facilitar acesso aos recursos do sistema, assim como compartilhá-los de forma organizada e protegida. Exercício: CCT0224_EX_A7_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR 8a Questão (Ref.: 200729919996) Pontos: 0,0 / 1,0 Um processo, segundo Machado, é formada por três partes, conhecidas como contexto de hardware, contexto de software e espaço de endereçamento.A figura ilustra, de maneira abstrata, os componentes da estrutura de um processo, que juntos, mantêm todas as informações necessárias a execução de um programa. Sobre os componentes é correto afirmar que: o contexto de hardware de um processo é composto por três grupos de informações sobre o processo:identificação, quotas e privilégios. o contexto de hardware mantém informações nos registradores do processador, enquanto um processo está em execução, podendo salvá-las caso o processo seja interrompido. o espaço de endereçamento armazena o conteúdo dos registradores gerais da UCP, além dos registradores de uso específico, como program counter(PC), stack pointer (SP) e registrador de status(PSW). o contexto de softwarearmazena o conteúdo dos registradores gerais da UCP, além dos registradores de uso específico, como program counter(PC), stack pointer (SP) e registrador de status(PSW). o contexto de hardware mantém informações nos registradores do processador, enquanto um processo está em execução, mas não pode salvá-las caso o processo seja interrompido. 9a Questão (Ref.: 200729920273) 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; Exercício: CCT0224_EX_A8_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR BEGIN A := (100*3); B := 2 * (A + 30); C := (20-2); D := (3 * B); X := A + B + C + D; END. 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. Sua Resposta: Compare com a sua resposta: Haverá um problema de sincronização entre os threads. Uma das soluções para este problema seria executar criar threads apenas para as instruções que atribuem valores as variáveis "A" e "C". A atribuição de valores às variáveis "B", "C" e "X" devem ficar fora dos trheads. 10a Questão (Ref.: 200729921313) Suponha um posto de abastecimento que venda apenas gasolina. Este posto tem 5 (cinco) caixas para que os clientes façam o pagamento. Cada caixa executa uma instância de um programa que atualiza o estoque (em litros) de gasolina. O arquivo que contém o estoque fica em um servidor, sendo compartilhado entre os cinco caixas. Sempre que um cliente faz o pagamento, o sistema do caixa faz, basicamente, três operações: 1. Lê o arquivo de estoque para saber a quantidade de litros que há em estoque. 2. Subtrai do estoque a quantidade de litros comprada pelo cliente. 3. Grava o arquivo de estoque com a quantidade de litros calculada no passo "2". Considerando a situação exposta, descreva que problemas podem decorrer do compartilhamento do recurso "arquivo de estoque" pelos cinco processos executados de forma concorrente. Sua Resposta: Compare com a sua resposta: O arquivo de estoque pode ser gravado de forma inconsistente. Se um caixa já tiver executado o passo 1 ou 2 e ainda não tiver executado o passo 3 (ou seja, a gravação do arquivo) e outro caixa executar o passo 1, esse segundo caixa irá fazer uma leitura do arquivo de estoque desatualizado, desconsiderando a operação realizada pelo primeiro caixa. Dessa forma, quando o segundo caixa fizer a gravação, a operação realizada pelo primeiro caixa terá sido ignorada. Lista de exercícios Sistemas Operacionais Resolvida Exercício: CCT0224_EX_A9_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR 1. Os serviços e funções oferecidas por um sistema operacional podem ser divididas em duas categorias. Descreva brevemente as duas categorias e discuta como elas se diferem. • Conveniência Execução de programas Operações de I/O Sistema de arquivos Detecção de erros • Eficiência Alocação de recursos Proteção Contabilizações 2. Liste 5 (cinco) serviços, oferecidos por um sistema operacional, que são projetados para tornar o sistema de computação mais conveniente para os usuários. 1. Gerenciamento de processos, criação, fechamento, escalonamento, prioridades e comunicação entre eles. 2. Gerenciamento da memória principal: Alocação, desalocação, proteção e abstração da memória virutal. 3. Gerenciamento dos sistemas de I/O. 4. Conexão em rede: Conexão com os dispositivos e implementação dos protocolos de rede. 5. Sistema de proteção (autorização a usuários). 6. Implementação de sistema de arquivos. 3. O que são System Calls, cite 4 exemplos. Constituem uma interface entre o processo e o sistema operacional. Exemplos: • Inicia ou finaliza processo • Altera atributos dos processos • Espera sinal • Abre ou fecha arquivo • Lê relógio do sistema • Envia ou recebe mensagens Exercício: CCT0224_EX_A10_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR 4. Os sistemas operacionais podem ser construídos de diferentes maneiras. Descreva as principais arquiteturas existentes. Do ponto de vista de projeto (arquitetura), segundo Tanenbaum (1999): * Núcleo monolítico ou monobloco: o núcleo consiste em um único processo executando numa memória protegida executando as principais funções. * Micronúcleo ou modelo cliente-servidor: o núcleo consiste de funções mínimas (comunicação e gerenciamento de processos), e outras funções, como sistemas de arquivos e gerenciamento de memória, são executadas no espaço do usuário como serviços; as aplicações (programas) são os clientes. 5. Descreva as ações tomadas pelo kernel para fazer a troca de contexto entre processos. A troca de contexto exige que o estado do processo antigo (a sair do processamento) seja salvo e que o estado do processo novo (a entrar no processamento) seja carregado. O contexto é representado no PCB que inclui o valor dos registradores. 6. Explique o que são os anéis de execucação. Qual a diferença entre código executando no nível 0 e em outros níveis. São extenções dos processadores que possibilitam separar os códigos sendo executados na CPU por camadas. Nos CHIPs Intel Vão de RING0 (Kernel), passado por RING1 (Drivers), RING2 (Drivers) até RING3 (Aplicativos). O Kernel do Linux e do Windows XP usam somente o RING0 e RING3. O código executado em RING0 é o que tem mais privilégios (ou seja mais acesso ao hardware). 7. O que são processos, e quais os estados que podem assumir? São programas em execução na memória. * Novo * Em execução * Em espera * Pronto * Terminado Exercício: CCT0224_EX_A11_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR 8. O que são threads? Em que diferem de processos convecionais? Um thread é uma unidade básica de execução na CPU. Um único processo pode ter diferentes threads. Cada thread compreende um ID, um contador de programa, um conjunto de registradores e uma pilha. 8.1. As principais seções de um processo são Pilha, Heap, Dados e Código. Quais destas seções podem e/ou devem ser compartilhadas entre threads? Os threads do mesmo processo compartilham com outros sua seção de código, sua seção de dados, arquivos abertos e sinais. 8.2. Qual a diferença de threads em nível de usuário e em nível de SO Thread em nível de SO é implementada em uma biblioteca pelo Sistema Operacional por exemplo pthreads no Linux. Utilizando-a as threads em nível de SO são como processos independentes para o escalonador, também se o sistema tiver mais de 1 processador elas podem ser executadas 1 em cada processador. As threads em nível de usuário é uma implementação da aplicação em que voluntariamente um thread se retira do processamento e cede espaço a outra thread. Para o sistema operacional é apenas 1 processo. 9. Mostre um exemplo de uso do fork(). Explique quais são os valores retornados pela função. int i; i=fork(); if(i==0) { printf("ProcessoFilho\n"); } else if(i>0) { printf("Processo Pai, que criou um filho numero: %i\n", i); } Exercício: CCT0224_EX_A12_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR 10. Na criação de processos utilizando fork() um novo processo é criado com a imagem do processo pai. Como o kernel Linux evita a necessidade de realizar esta cópia no momento da chamada do fork? Sim, uma otimização do Kernel do Linux implementa Copy-on-write. Consistem em compartilhar os dados somente referenciando a mesma área nos forks criados pelo mesmo processo. Ao modificar alguma das páginas uma cópia da página é feita. 11. O que significa escalonamento preemptivo? Envolve o uso de interrupções para suspender o processo em execução no momento e invoca um escalonador para determinar qual o próximo processo que deve ser executado. Sendo assim todo processo terá um tempo de execução na CPU em algum momento. 12. O que significa dizer que o Kernel também é preemptivo? Significa dizer que operações de kernel (serviços ou funções) podem ser interrompidas. 13. O que é starvation? Mostre um algoritmo que poderia levar a essa condição. Ocorre quando um processo depende de um recurso e seu acesso é negado perpétuamente. Sem este recurso o processo não pode terminar sua tarefa. 14. O que é um deadlock? Mostre um um algoritmo que pode entrar em deadlock. Ocorre quando, um processo (ou mais) está em posse de um recurso não compartilhado e esperando por outro recurso em posse de outro processo que também aguarda um recurso. Essa espera pode ser do processo anterior ou outro processo de forma que feche um ciclo. E conseqüentemente estes processos não sofrem preempção. Exercício: CCT0224_EX_A13_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR 15. Quais dos seguintes algoritmos de escalonamento podem levar a "starvation" e porque? a) First-come, Fist-served Pode ocorrer inanição (starvation), se o primeiro processo (que chega primeiro) da fila for longo. Então o tempo de espera médio de todos os outros processos será muito grande. b) Shortest job first É o algoritmo ótimo (do ponto de vista computacional) no tempo de espera. O maior tempo de espera será o processo com maior pico de CPU. c) Round Robin Depende exclusivamente do tamanho do quantum da CPU. Se for muito grande será equivalente a FCFS, mas se for pequeno será a sensação de dividir a CPU pelo numero de processos. d) Priority Um processo que esteja pronto para executar, mas não tennha a posse da CPU pode ser considerado bloqueado. Um algoritmo por prioridades pode deixar alguns processos de baixa prioridade esperando indefinidamente pela CPU. 16. Que técnica é usada para evitar que um processo em um algoritmo de escalonamento por Multilevel Feedback-Queue nunca execute? Define-se que os processos que estão esperando por muito tempo na fila de menor prioridade são promovidos com maior prioridade. 17. O que deve ser considerando ao escrever um algoritmos de escalonamento em um sistema SMP? Exercício: CCT0224_EX_A14_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR Primeiramente deve ser considerado que os processadores são idênticos (ou homogêneos), esta diferença mudaria toda a abordagem. Depois pode-se criar uma fila de processos para cada processador, ou se for uma fila deve se evitar que 2 processadores peguem o mesmo processo ou que algum processo se perca da fila. 18. Explique como funcionava o escalonador de prioridades no Kernel Linux (de 2.6 até 2.6.23) 1. Escalonador por prioridade dinâmica. 2. Heurística para dizer se o processo é IO bound, CPU bound ou interativo. 3. Quantum varia durante o tempo e processos. 4. É O(1) 5. Todo processo tem prio estática entre 100 e 139 e dinâmica entre 100 e 139 (menor valor é maior prioridade) 6. Quantum base é => Prio_estat > 120 ? (140-Prio_estat)*20 : (140-Prio_estat) * 5 7. Prioridade dinâmica => max(100, min(prio_estat – bonus + 5, 139)) 19. Explique o algoritmo de escalonamento Completely Fair Scheduler que atualmente é utilizando no kernel Linux. 1. Não tem 1 fila, 2. Dividir n CPU's entre os processos igualmente 3. linha do tempo de execução 4. Redblack tree O(log(n)) 5. Relógio preciso de nano segundos 6. Relógio para incrementar este tempo baseado no wallclock / núm de processos esperando para executar 7. Quando executa decrementa waiting time 8. Prioridade → padrão do decaimento do waiting time 20. Mostre como funciona a solução de alternância estrita. Explique qual é sua limitação na prática. Esta é uma solução a qual obriga que a região crítica seja dada a um dos processos por vez, em uma estrita alternância. O problema com a solução de alternância estrita é que requer que os dois processos se alternem precisamente, o que significa que o número de acessos de cada processo deve ser exatamente igual ao do outro. Além disso pode acontecer de um dos processos não poder prosseguir normalmente. Pois após entregar a seção crítica para o outro processo não pode mais pedi-la novamente. Exercício: CCT0224_EX_A15_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR 21. O que é o problema da Região Crítica? Mostre um exemplo onde não tratá-lo poderia levar a um erro. Região crítica é um segmento de código que enquanto está em execução não é permitido a nenhum outro processo sua execução ao mesmo tempo. Pode ser a operação em tabelas, arquivos e assim por diante. 22. Mostre e explique o funcionamento da solução de Peterson. O algoritmo de Peterson é um algoritmo de programação concorrente para exclusão mútua, que permite a dois ou mais processos ou subprocessos compartilharem um recurso sem conflitos, utilizando apenas memória compartilhada para a comunicação (Wikipedia). flag[0] = 0; flag[1] = 0; turn; P0: flag[0] = 1; turn = 1; while (flag[1] == 1 && turn == 1) { // busy wait } // critical section ... // end of critical section flag[0] = 0; P1: flag[1] = 1; turn = 0; while (flag[0] == 1 && turn == 0) { // busy wait } // critical section ... // end of critical section flag[1] = 0; O algoritmo utiliza duas variáveis, flag e turn. O valor de flag 1 indica que o processo quer entrar na região crítica. A variável turn guarda o ID do processo com a vez. A entrada na região crítica é garantida para P0 se P1 não quiser entrar na região crítica ou se P1 deu prioridade para P0 atribuindo o valor de turn para 0. Este algoritmo satisfaz os 3 problemas de regiões críticas: a exclusão mútua, o progresso e espera limitada. Exercício: CCT0224_EX_A16_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR 23. O que são semáforos? Mostre um exemplo de uso. É uma ferramenta de sincronização generalizável. É uma variável inteira que a parte de sincronização é acessada somente por duas operações wait e signal. void wait(S){ while (s<=0); // loop sem operação s--; } void signal(s){ s++; } Exemplo de uso: do{ wait(mutex); <SEÇÃO CRITICA> signal(mutex); <SEÇÃO REMANESCENTE> }while(1);24. Mostre uma solução usando semáforos para o problema "Bounded-Buffer" /* PRODUTOR*/ do{ wait(empty); wait(mutex); insere_buffer(elemento); signal(mutex); signal(full); }while(1); /*CONSUMIDOR*/ do{ wait(full); wait(mutex); remove_buffer(elemento); signal(mutex); signal(empty); Exercício: CCT0224_EX_A17_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR }while(1); 25. Mostre uma solução usando semáforos para o problema "Readers-Writers" 26. Mostre uma solução usando semáforos para o problema "Dining-Philosophers" 27. Resolva pelo menos 3 problemas de sincronização do Livro "The Little Book of Semaphores". 28. O que é copy-on-write e sob quais circunstâncias ela é útil? Consistem em compartilhar os dados somente referenciando a mesma área. Ao se modificar alguma das páginas uma cópia da página é feita. E somente aquela página que é alterada fica “diferente” do resto. É útil pois torna programa implementados com forks mais leves. 1. Explique a diferença entre fragmentação interna e externa. (wikipédia) A fragmentação interna é a perda de espaço dentro de uma área de tamanho fixo. Numa memória secundária, ela ocorre quando um arquivo ou fragmento de arquivo não ocupa completamente o espaço da unidade de alocação destinado a ele, causando desperdício de espaço. Cada unidade de alocação não pode comportar fragmentos de arquivos diferentes. A fragmentação externa ocorre em sistemas de arquivo quando muitos arquivos de tamanhos diferentes são criados, modificados em seu tamanho, e/ou eliminados. O efeito é pior se um arquivo que é dividido em muitas pequenas partes for eliminado, porque isto deixa regiões pequenas de espaço livre. Quanto maior for o tamanho dos clusters no sistema de arquivos usado e maior for o número de arquivos pequenos armazenados, maior é o índice de fragmentação interna, que além de perda de espaço, causa perda de desempenho, já que teremos áreas vazias entre os arquivos armazenados nos discos magnéticos. Exercício: CCT0224_EX_A18_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR 2. Dadas partições de memória de 100KB, 500KB, 200KB, 300KB e 600KB (em ordem), como cada um dos algoritmo: Fist-fit, best-fit e worst-fit, alocariam processos de 212Kb, 417Kb, 112KB e 426KB? Qual dos algoritmos faria o uso mais eficiente de memória. First Fit acomoda espaço na memória pelo começo da memória disponível até o fim, até encontrar o primeiro espaço livre que seja grande o suficiente. Se não retorna erro. Best Fit tenta determinar o melhor lugar para alocar os dados. A definição de melhor varia nas implementações, mas por exemplo pode ser escolhido o espaço que deixaria menor resíduo no final do bloco. Worst Fit. O algoritmo seleciona o maior espaço possível que a informação pode ser armazenada (maior que a informação). É o completamente oposto do best-fit que procura o menor espaço possível. 3. Explique os seguintes algoritmos para substituição de páginas (page replacement): FIFO, Optimal e LRU. No caso do LRU, você deve explicar quais são as políticas de aproximação para o LRU. FIFO é uma fila normal onde o primeiro que entra é o primeiro que sai. É simples e tem desempenho ruim (pode aumentar o paginamento com aumento de memória o que é absurdo) Optimal: Quando uma página precisa ser trocada, o sistema operacional troca a página que o seu próximo uso será num futuro distante. Por exemplo, uma página que não será usada nos próximos 6 segundos será trocada por uma página que será usada em 0.4 segundos. Exercício: CCT0224_EX_A19_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR LRU: Quando uma página é usada é marcada como referenciada. Em certo momento por interrupção de relógio, atribui-se a página os bits de não referenciados. Então divide-se a página em 4 classes, referenciado ou não e modificado ou não. 4. Como funciona o mapeamento de arquivos em memória, qual a vantagem de utilizar esse modo de acesso. É o mapeamento de um arquivo como se fosse um array em memória. É eficiênte porque utiliza leitura preguiçosa só lendo os dados que realmente precisam ser lidos. No Posix pode ser feito por mmap() 5. O que é o modo de alocação de memória "Buddy System". Qual a sua desvantagem? O modo de alocação Buddy System divide a memória em pedaços com tamanho potência de 2. Existe um limite superior (maior bloco que pode ser alocado) e inferior (menor bloco que pode ser alocado). Quando é feita uma requisição arredonda-se o tamanho requisitado e se o tamanho é maior que a metade do bloco inicial então o bloco inteiro é alocado. Senão o bloco é dividido em dois "buddies" e assim recursivamente. O método de liberar a memória é eficiente e relativamente rápido. Tipicamente é implementado por uma árvore binária que representa blocos usados e não usados. Contudo ainda existem problemas de fragmentação interna. 6. O que é o mecanismo de alocação chamado SLAB? A idéia fundamental por trás do SLAB é baseada na observação de que alguns objetos do kernel são frequentemente criados e destruídos e após isso nunca mais são necessários. Isso implica que cada alocação de memória para estes objetos as vezes custa uma busca best-fit. E ainda a desalocação do espaço de memória após a destruição do objeto causa fragmentação. Exercício: CCT0224_EX_A20_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR Na implementação do SLAB existe cache e uma estrutura Slab que pode ser empty, partial, full. Como ele aloca somente o espaço necessário a fragmentação interna não existe. 7. O que é o Overcommit de memória? Overcommit de memória é uma função do kernel que permite alocar mais memória do que realmente é disponível. A idéia por de trás dessa funcionalidade é de que alguns aplicativos alocam mais espaço que precisam, mas nunca usam. Isso permite que se rode mais aplicativos que cabem na memória, mas ele não podem usar a memória, caso isso aconteça estes aplicativos são fechados. 8. Qual a relação entre o espaço de endereçamento virtual e utilização da memória física? O endereçamento virtual agrega tando endereços armazenados em memória secundária quando endereços resididos na memória ram. 9. O que significa dizer que a memória virtual de um processo é 50MB, a memória residente 20MB e a memória compartilhada 10MB. Significa que 20 mb estão na memória RAM, e 10 mb é compartilhado com outro processo por ter gerado (ou sido gerado) por um Fork e estas páginas não sofreram escrita ainda. 10. Quais as vantagens e desvantagens de guardar o nome do programa criador junto aos atributos do arquivo? Vantagem: Livra o sistema operacional de saber com qual aplicativo deve ser aberto o arquivo, facilita também a vida do usuário por ter acesso rápido e simples a leitura e edição do arquivo. Desvantagem: Um terceiro pode alterar o arquivo para apontar para um programa mal intencionado. 11. Na semântica de sistema de arquivos do Unix o que acontece quando um arquivo que está aberto é removido? Exercício: CCT0224_EX_A21_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR Ele não ficarámais acessível aos programas que quiserem o acessar logo após o momento de remoção. Porém continuará acessível por aqueles programas que já estavam com o arquivo aberto no momento da remoção. Para cada arquivo o file system mantem um contador que indica quantos procesos o estão usando, quando é removido o arquivo se o contador não for 0 é apagado somente o acesso ao mesmo, mas o arquivo é mantido no disco até que todos os processos se encerrem. 12. No NFS (Network File System) o que é o "Silly Rename"? Porque surgem os arquivos .nfsXXXXXX ? (Segundo NFS FAQ) Aplicações em Unix geralmente criam arquivos de rascunho e removem sua ligação. Quando fazem isso o arquivo passa a não ser visível no sistema de arquivos para quando a aplicação fechar o arquivo este ser removido. Conhecido como "delete on last close", é comum em aplicações Unix. Pela forma como o NFS foi especificado, não existe maneira de apagar o arquivo do sistema, o deixando disponível para aplicações. O que o NFS faz é emular este comportamento renomeando o arquivo para algo como ".nfsXXXXX". que esconde o arquivo para seu uso. Isso é conhecido como "silly rename." Após o fechamento do processo o arquivo é apagado. Ou fica residual em caso de crash da aplicação. O NFS é stateless, e não sabe quais arquivos estão sendo utilizados, assim pra manter compatibilidade com os programas linux (onde um arquivo aberto pode ser excluído sem problemas) ele renomeia o arquivo e deixa ele oculto, quem estava com o arquivo aberto continua lendo deste .nfsX 13. Sobre métodos de alocação de espaço, responder: a) Como funciona a alocação de espaço contígua? Que problemas apresenta? Cada arquivo ocupa um conjunto de blocos contíguos no disco. Somente é necessário armazenar a localização inicial (número do bloco) e o tamanho do arquivo (quantidade de blocos). Pode ser feito mapeamento de endereço lógico para o físico, mas os arquivos não podem crescer. Exercício: CCT0224_EX_A22_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR A alocação de espaço contígua requer que cada arquivo ocupe um conjunto de blocos contíguos no disco. Os endereços de disco definem um ordenamento linear no disco. Com isso, o número de operações de busca no disco, exigidos para acesso a arquivos alocados contiguamente, é mínimo, assim como o tempo de busca quando uma operação de busca for necessária. Como problemas encontrados na alocação contígua temos: - a dificuldade de encontrar espaço para um novo arquivo. Sistemas de gerenciamento de espaço livre devem ser utilizados para realizar esta operação, mas tais sistemas geram fragmentação externa; - a dificuldade de determinar a quantidade de espaço necessário para um arquivo. Pela falta de conhecimento na hora da criação do arquivo, ou para futura ampliação do mesmo. Em geral, o espaço necessário é superestimado. Gerando assim fragmentação interna. b) Como funciona a alocação de espaço por encadeamento (linked allocation). Quais os problemas apresentados por este método? Cada arquivo é uma lista encadeada de blocos em disco. Os blocos podem ser espalhados no disco. Tem pouca perda de espaço porém não tem acesso direto, tem que percorrer a lista. O diretório contém um ponteiro para o primeiro e último blocos do arquivo. E cada bloco contém um ponteiro para o proximo bloco. Não gera fragmentação externa. Como problemas encontrados na alocação por encadeamento temos: - O principal problema é que ela so pode ser efetivamente utilizada para arquivos de acesso sequencial. - O espaço perdido com a alocação dos ponteiros, logo, cada arquivo irá requerer um pouco mais de espaço do que necessitaria em outra situação. - O problema da confiabilidade, como a integridade do arquivo é mantida por intermedio de ponteiros espalhados por todo o disco, se um desses ponteiros for corrompido, pode-se ter grandes perdas de dados ou de espaço livre. Exercício: CCT0224_EX_A23_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR c) Como funciona a FAT (File-Allocation Table) usado pelo MS-DOS, qual a diferença em relação à alocação por encadeamento simples? A FAT usa uma tabela de alocação de arquivos, esta tabela fica alocada em uma seção do disco no inicio de cada partição. A FAT tem uma entrada para cada bloco do disco e é indexada pelo número do bloco. A entrada da tabela, indexada pela entrada do arquivo no diretório, contém o número do bloco do próximo bloco no aquivo. Assim continua até o bloco que contém o identificador de fim de arquivo. Ao contrario da alocação por encadeamento a FAT não utiliza um espaço em cada bloco do disco como ponteiro (utiliza os blocos com valor igual a zero na tabela que representam blocos livres). e) Em um sistema de arquivos usando uma FAT o que acontece se ocorrer a corrupção total da tabela de alocação de arquivos? Se a tabela FAT (tabela 1) corromper, existe uma tabela 2 de backup usada pelo scandisk. f) Como funciona a alocação de espaço indexada? Que problemas da alocação usando encadeamento ela tenta resolver? A alocação indexada utiliza ponteiros, como a alocação por encadeamento, mas agora todos esses ponteiros são armazenados juntos em um bloco de índices. Cada arquivo possui seu próprio bloco de índices que é um array de endereços de blocos de disco. O diretório contém o endereço do bloco de índices, e a í-esima entrada do bloco de índices aponta para o í-esimo bloco do arquivo. Desta maneira é possível realizar com facilidade o acesso direto ao arquivo. A alocação indexada tenta resolver o problema da falta de eficiência no acesso direto a arquivos, que ocorre quando se usa a alocação por encadeamento. f) Dentro da alocação indexada quais são os mecanismos usados para guardar os índices? A alocação indexada causa um desperdício de espaço em disco por conta do armazenamento do bloco de índices. Pois um bloco inteiro de índices deve ser armazenado para cada arquivo, mesmo que apenas um ou dois ponteiros sejam Exercício: CCT0224_EX_A24_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR realmente utilizados. Para reduzir esse desperdício devem ser utilizados blocos de tamanho menor para armazenar os índices. Mas blocos menores limitam a indexação de grandes arquivos. Para resolver este problema alguns mecanismos são usados para guardar os índices. Eles são: - Esquema encadeado: Diversos blocos de índices encadeados, no caso, o ultimo endereço do bloco de índices é nulo (caso o bloco represente todo o arquivo) ou é um ponteiro para outro bloco de índices (para grandes arquivos). - Índice multinível: Um bloco de índices de primeiro nível aponta para um conjunto de blocos de índices de segundo nível, que por sua vez aponta para os blocos do arquivo. Esta abordagem poderia ser estendida para um terceiro ou quarto níveis dependendo do tamanho máximo de arquivo requerido. - Esquema combinado: Utiliza uma combinação dos dois esquemas anteriores. g) O que são i-nodes? Em qual mecanimos de alocação indexada eles se enquadram? I-node é o primeiro bloco encontrado quando se faz o acesso a um arquivo e consite em uma estrutura de dados que relaciona os atributos e os endereços em disco dos blocos do arquivo , este bloco de índice utiliza um mecanismo de alocação indexada do tipo combinada. Em geral utiliza-se um esquema onde os 12 primeiros ponteiros apontam para blocos diretos, ou seja,que contem dados do arquivo; os outros 3 ponteiros apontam para blocos indiretos. O primeiro ponteiro para um bloco indireto é o endereço de um bloco indireto simples (um bloco de índices que não contém dados, mas endereços de blocos que contêm dados). Depois existe um ponteiro para um bloco indireto duplo (contém o endereço de um bloco que contém os endereços de blocos que contêm ponteiros para os blocos de dados reais). O último ponteiro conteria o endereço de um bloco indireto triplo. 14. Considere um sistema com i-nodes com 15 ponteiros. Nestes i- nodes os 12 primeiros são usados para alocação direta; o 13 ponteiro para alocação simples indireta; o 14 para alocação dupla indireta e o 15 para alocação tripla-indireta. Considere ainda que cada bloco tem 512Kb. Como ficaria a estrutura de inodes para armazenar um arquivo de 129024 bytes (252 blocos)? Pra salvar um arquivo de 252 blocos, no caso, seria os primeiros 12 blocos do primeiro i-node ocupado, depois mais 15 blocos do i-node nível 1. Depois vem o i- Exercício: CCT0224_EX_A25_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR node de nível 2, que ficaria os quinze níveis dele apontando cada um para um inode distinto, e cada i-node destes teria 15 blocos; Ou seja, mais 225 blocos, e totalizando 242 blocos, faltam 10. O i-node de nível 3 apontaria para um de nível dois, que usaria apenas um de seus apontadores, pra um de nível 1, que salvaria 10 blocos nele. [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> 1 bloco [] -> [] x15-> 12 blocos [] -> [] x15-> [] x15 -> 225 blocos [] -> [] x1 -> [] x1 -> [] x10 -> 10 blocos No total você ocuparia 268 i-nodes Exercício: CCT0224_EX_A26_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR 15. Qual a diferença de simbolic links e hard links? E como é a implentação de cada um? Como é feito o controle de remoção de arquivo em cada caso? Existem dois conceitos de "links" no Unix, usualmente nomeadas de symbolic link e hard link. Um hard link é exatamente um nome para o arquivo (E um arquivo pode ter vários nomes. Aquilo só é apaguado do disco somente quando o último nome é removido.) Um symlink é totalmente diferente: é um pequeno arquivo especial que contém o nome de caminho. Assim, a ligação fraca pode apontar arquivos em diferentes sistemas de arquivos (talvez NFS montadas de diferentes máquinas), e não precisa de ponto para o arquivo existente atualmente. Quando acessado (com a chamada de sistema open ou stat, uma referência para o symlink é substituída pelo kernal do sistema operacional com uma referência para o arquivo nomeado no nome de caminho. (De qualquer forma, com rm ou unlink a ligação é removida, não o arquivo que ela aponta). 16. Considere um sistema onde o espaço livre é gerênciado por uma lista de espaço livre. Suponha que o ponteiro para a lista de espaços- livres foi perdido. Esta lista pode ser reconstruída? Explique sua resposta. Uma possível solução seria veirificar todos os blocos utilizados pelos diretórios/arquivos/sistema e considerar os outros como livres. Deve-se pensar no fato de que ao um arquivo ser deletado, não necessariamente os dados que ele tem são deletados nos blocos (geralmente que eu saiba não, é apenas deletado a ligação para ele). Então a solução de percorrer por todos os blocos e pegar os livres não funciona. Exercício: CCT0224_EX_A27_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR 17. Quais são os métodos para gerênciamento de espaço livre em disco? - Vetor de Bits (bitmap) Cria um vetor onde cada posição corresponde a um bloco do disco, e possui valor 0 para livre e 1 para ocupado. Vantagem: simplicidade e eficiência para encontrar o primeiro bloco livre. Desvantagem: ineficiente ao menos que sejam mantido na memória principal (senão fica muito custoso o acesso repetidamente ao disco) e ocupa muito espaço - Lista Encadeada Desvantagem:para varrer a lista é preciso ler cada bloco -Vetor de bits: A lista de espaço livre é implementada como um mapa de bits ou um vetor de bits. Cada bloco é representado por 1 bit. Se o bloco estiver livre o bit será 1; se o bloco estiver alocado o bit será 0. A principal vantagem é que é relativamente simples e eficiente encontrar o primeiro bloco livre, ou n blocos livres consecutivos no disco. Mas são ineficientes a não ser que todo o vetor seja mantido na memória principal. -Lista Encadeada: Encadear todos os blocos de disco livres, mantendo um ponteiro ao primeiro bloco livre em uma posição especial no disco e armazenando-os em cache na memória. Esse primeiro bloco contém um ponteiro ao próximo bloco livre de disco, e assim por diante. Não é eficiente, para percorrer a lista, precisamos ler cada bloco, o que requer tempo substancial de I/O. -Agrupamento: Exercício: CCT0224_EX_A28_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR Armazena os endereços de n blocos livres no primeiro bloco livre. Os primeiros n-1 desses blocos estão realmente livres. O bloco final contém os endereços de outros n blocos livres, e assim por diante. Assim os endereços de um grande número de blocos livres podem ser rapidamente encontrados. -Contadores: Em vez de manter uma lista de n endereços de disco livres, mantêm o endereço do primeiro bloco livre e o número n de blocos contíguos livres que seguem esse primeiro bloco. Cada entrada na lista de espaço livre consiste então em um endereço de disco e um contador.Embora cada entrada exija mais espaço que um endereço de disco simples, a lista global fica mais curta. Aproveita o fato de que em geral vários blocos contíguos podem ser alocados ou liberados simultaneamente. 18. Quais as estapas de um checkagem de consistência de um file system? A verificação de consistência compara os dados na estrutura de diretório com os blocos de dados no disco e tenta corrigir quaisquer inconsistências encontradas. Os algoritmos de alocação e gerência de espaço livre determinam os tipos de problemas que o verificador poderá encontrar e qual será a taxa de sucesso na correção desses problemas. Um possível teste é verificar no número de hardlinks apontando para o inode. 19. Como funcionam os sistema de arquivos baseados em Journaling? Quais suas vantagem? O que tentam garantir? Um sistema de arquivos com journaling dá permissão ao Sistema Operacional de manter um log (journal), de todas as mudanças no sistema de arquivos antes de escrever os dados no disco. Normalmente este log é um log circular alocado em uma área especial do sistema de arquivos. Por ser mais bem localizado em espaço menor costuma ter melhor desempenho também. Este tipo de sistema de arquivos tem a oferecer uma melhor probabilidade de não sofrer corrupção de dados no caso de o sistema travar ou faltar energia, e uma Exercício: CCT0224_EX_A29_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR recuperação mais rápida, pois não necessita verificar todo o disco, somente aqueles que pertenciam a um log que não fora fechado devidamente. 20. Expliqueos seguintes algoritmos de escalonamento de requisições de disco: FCSF, SSTF (Shortest-Seek First), SCAN, C-SCAN e LOOK. FCSF atende as requisições em fila, SSTF escolhe o endereço com menor deslocamento, e isso pode causa inanição. Scan é o método elevador, o ponteiro do disco percorre de um lado para o outro atendendo as requisições. O C-SCAN é similar mas só funciona em um sentido e é melhor no tempo de resposta médio. O Look é como o SCAN é implementado na prática que não vai até o fim do disco mas só até o último endereço requisitado. 21. Quais sao os algoritmos de escalonamentos disponíveis atualmente do kernel Linux? Descreva cada um deles. NOOP É o escalonador de I/O mais simples do Linux. Ele insere todas as requisições de I/O é uma fila FIFO (First In First Out) não ordenada. O escalonador assume que a otimização do desempenho de I/O será feito em alguma outra camada da hierarquia de I/O (por exemplo, no dispositivo de blocos, por um controlador RAID "inteligente" ou por um controlador externo como um subsistema de armazenamento (storage). O NOOP é melhor para dispositivos de estado sólido (SSD - Solid State Devices) como memória flash ou, em linhas gerais, dispositivo que não dependam de movimento mecânico para acesso aos dados (como a tecnologia tradicional de "disco rígido" que depende do tempo de acesso - seek time - e da latência rotacional). Dispositivos não-mecânicos não necessitam de reordenamento de múltiplas requisições de I/O, uma técnica que agrupa as requisiçòes de I/O que estão Exercício: CCT0224_EX_A30_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR fisicamente próximas no disco, dessa forma reduzindo o tempo médio de acesso e a variabililidade do tempo de "serviço" (pense em servir algo) de I/O. ANTICIPATORY O objetivo é aumentar a eficiência de utilização do disco "antecipando" operações de leitura síncrona. "Deceptive idleness" é uma situação onde um processo parece ter terminado a leitura do disco quando na verdade está processando dados enquanto se prepara para a próxima operação de leitura. Isto fará com que um escalonador que procura reduzir trabalho mude para outro processo não relacionado. Esta situação é prejudicial à vazão de leituras síncronas, pois sobrecarrega o trabalho de "acesso". A solução do escalonador Anticipatory para o "Deceptive idleness" é fazer uma pausa por um pequeno tempo (alguns milisegundos) após uma operação de leitura em antecipação a outra requisição de leitura fisicamente próxima. O Anticipatory pode reduzir o desempenho em discos usando TCQ (Tagged Command Queuing), discos de alto desempenho e conjuntos (arrays) RAID feitos via hardware. Este escalonador foi o padrão no Linux entre o kernel 2.6.0 e o 2.6.18, sendo substituído pelo CFQ. DEADLINE A principal meta deste escalonador é tentar garantir um tempo inicial para atender uma requisição. Ele faz isso impondo uma "deadline" em todas as operações de I/O Exercício: CCT0224_EX_A31_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR para evitar "starvation" dos recursos. São mantidas duas filas de "deadline" além das filas ordenadas (ambas de leitura e escrita). As filas de "deadline" são minimamente ordenadas por seu tempo de expiração, enquanto que as filas ordenadas usam o número do setor para definir a ordem. Antes de atender a próxima requisição, o Deadline decide qual fila usará. Filas de leitura recebem prioridade maior porque os processos usalmente "param" em operações de leitura. Em seguida, o escalonador verifica se a primeira requisição na fila "deadline" expirou, se não ele serve uma sequência de requisições da fila ordenada. Nos dois casos, o escalonador também serve uma sequência de requisições seguindo a requisição escolhida na fila ordenada. Por padrão, as requisições de leitura expiram em 500ms, requisições de escrita em 5 segundos. A documentação indica que este é o escalonador recomendado para sistemas de bancos de dados, especialmente em discos que trabalham com TCQ (Tagged Command Queuing) ou quaisquer sistemas com discos de alto desempenho. CFQ (Completely Fair Queuing): 1 fila de I/O por processo, o objetivo é ser justo entre os processos. O CFQ funciona colocando requisições síncronas enviadas pelos processos em uma certa quantidade de filas por-processo e então alocando espaços de tempo para que cada uma das filas acesse o disco. A quantidade de tempo e o número de requisições que uma fila pode enviar depende da prioridade de IO de um determinado processo. Exercício: CCT0224_EX_A32_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR Requisições assíncronas para todos os processos são processadas em conjunto em um número menor de filas que estão separadas por prioridade (uma fila por prioridade). Embora o CFQ não faça explicitamente escalonamento de I/O anticipatório, ele atinge o mesmo efeito de ter boa vazão para o sistema como um todo, permitindo que uma fila de processo "não faça nada" (idle) ao final de um IO síncrono e, dessa forma, "antecipando" IOs próximos vindos do mesmo processo. O CFQ pode ser considerado uma extensão natural da ação de conceder "fatias de tempo de IO" a um processo. 22. Compare RAID0, RAID1, RAID5 e RAID6. RAID0 grava blocos espalhados pelo disco, o que dá baixa confiabilidade e alto desempenho. O espaço total é a soma de todos os discos. RAID1 grava os blocos duplicados nos discos, garante alta confiabilidade e desempenho ruim. Em especial a escrita se tiver 1 disco lento, fica tudo lento. Espaço total é o espaço de 1 disco. RAID5 faz paridade dos blocos, para isso tem que ter ao menos 3 discos. Com 1 bloco e a paridade (ou 2 blocos) é possível refazer o outro bloco. As paridades ficam espalhadas nos discos. RAID6 2 Paridades. Podem falhar 2 discos e espaço é (n-2)*x 23. Suponha que você possui 4 discos rígidos de 750GB. Quanto espaço disponível você obteria usando RAID5 e quanto espaço você obteria com RAID6? Quantos discos poderiam falhar em cada um destes casos? Com RAID5 para cada 2 blocos tem 1 bloco de paridade. Então, como os blocos estão espalhados, você teria 2000GB de espaço utilizável e 1 disco podendo falhar. Exercício: CCT0224_EX_A33_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR Com RAID6 teria 1 paridade a mais que dá (4-2)*750 = 1500GB de espaço utilzável, mas podendo falhar 2 discos. Avaliação: CCT0166_AV_ » SISTEMAS OPERACIONAIS Tipo de Avaliação: AV Aluno: - Professor: MARCELO RIBEIRO DE OLIVEIRA Turma: 9001/AA Nota da Prova: 6,5 Nota de Partic.: 2 Data: 07/03/2015 11:18:22 (F) O que são system calls e qual a relação com a segurança dos sistemas operacionais? (MAIA, 3ª edição) Resposta: System calls são chamadas ao sistema para utilizar funcionalidades protegidas do S.O.; ou seja trata-se de uma interface entre os processos e o S.O.. Essas chamadas podem ser feitas em dois modos: de usuário, não privilegiado, e kernel, privilegiado. Esses modos de acesso são um mecanismo para garantir a segurança do S.O. e dos recursos de hardware por ele gerenciados. Gabarito: Pode ser entendida como a porta de entradapara o acesso ao núcleo do sistema operacional e a seus serviços. Para cada serviçodisponível no sistema existe uma system call associada e cada sistema operacional tem seu próprio conjunto de chamadas, com nomes, parâmetrose formas de ativação.. A sua importância está relacionada a implementação de mecanismos de proteção aonúcleo do sistema e de acesso aos seus serviços. Existem dois tipos de escalonamento os preemptivos e não preemptivos. Qual a diferença entre eles? Dê pelo menos um exemplo de algoritmo de escalonamento preemptivo e não preemptivo. Resposta: Os preemptivos possuem algum mecanismo de escalonamento em razão do tempo, ao contrário dos não-preemptivos. O escalonamento conhecido como FIFO (First in, First out) é do tipo não-preemptivo; as unidades de escalonamento são organizadas e selecionadas pelo critério de entrada. Já o Round Robin possui o mesmo tipo de organização e seleção, porém implementa um time-slice, ou seja, um tempo limite de permanência e execução no estado EXECUTANDO. Quando o tempo acaba, a unidade de escalonamento é devolvida para o final da fila de PRONTO 1 a Questão ( Ref. : 610847) Pontos: 1 , 0 / 1 , 5 2 a Questão ( Ref. : 62206) Pontos: 0 , 5 / 1 , 5 Exercício: CCT0224_EX_A34_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR Gabarito: No escalonamento não-preemptivo o sistema operacional não interrompe o processo em execução para subsituí-lo por outro processo. Já o preemptivo é caracterizado pela possibilidade do sistema opercional interromper um processo emexecução e passaá-lo para o estado de pronto. Exemplos: não-preemptivo: fifo, sjf preemptivo: escalonamento circular, por prioridades, por múltiplas filas Correlacione os conceitos com seus significados abaixo: Kernel - System Call - Modos de acesso - Operações de E/S I- Mecanismo para impedir a ocorrência de problemas de segurança e violação do sistema II- Elas podem ser implementadas por programa, por interrupção e o uso do DMA III- Fornece serviços básicos para todas as outras partes de um Sistema Operacional IV- Fornecem a interface entre os processos e o sistema operacional sendo um mecanismo de proteção ao núcleo III - IV - II - I IV - III - II - I IV - III - I - II I - II - III - IV III - IV - I - II Gabarito Comentado. Analise as possíveis transições entre os estados de um processo e assinale a opção que indica as sentenças corretas. i) um processo passa do estado de "executando" para o estado de "pronto" quando termina a fatia de tempo ii) um processo passa do estado de "pronto" para o estado de "bloqueado" quando solicita recurso iii) um processo passa do estado de "pronto" para o estado de "executando" quando é selecionado pelo sistema operacional 3 a Questão ( Ref. : 227852) Pontos: 0 , 5 / 0 , 5 4 a Questão ( Ref. : 16911) Pontos: 0 , 5 / 0 , 5 Exercício: CCT0224_EX_A35_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR i e iii ii iii i ii e iii Considere uma aplicação baseada em threads em um sistema operacional com suporte a threads de kernel. Se uma das threads desta aplicação for bloqueada para aguardar um acesso ao disco podemos afirmar que as demais threads deste processo: Não serão bloqueadas mas ficaram aguardando o desbloqueio da thread que solicitou o acesso ao disco Serão interrompidas provocando um erro no processo. Terão a prioridade reduzida para aguardar o desbloqueio da thread que solicitou o acesso ao disco Poderão continuar executando se não dependerem da thread que foi bloqueada Serão bloqueadas também para impedir a ocorrência de erros Em programação concorrente, quando um processo nunca é executado ("morre de fome"), pois processos de prioridade maior sempre o impedem de ser executado, diante desta situação podemos concluir que ocorreu: Bloqueio Espera ocupada Exclusão mútua Deadlock Starvation Gabarito Comentado. 5 a Questão ( Ref. : 17003) Pontos: 0 , 5 / 0 , 5 6 a Questão ( Ref. : 572860) Pontos: 0 , 5 / 0 , 5 Exercício: CCT0224_EX_A36_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR Uma condição de corrida é uma técnica computacional aplicada aos processos para que os mesmos sejam comparados com relação ao tempo de execução. Uma condição de corrida ocorre quando um ou mais processos iniciam a execução concomitante e competem no tempo para terminar primeiro. Não haverá condição de corrida em sistemas multitarefa. Uma condição de corrida pode ocorrer quando dois ou mais processos estão lendo ou escrevendo algum dado compartilhado e o resultado final depende de qual e quando executa precisamente. Uma condição de corrida é uma técnica utilizada para medir o tempo de execução de um processo. Gabarito Comentado. A gerência do processador apresenta alguns critérios que devem ser considerados em uma política de escalonamento. Qual o critério de escalonamento que representa o número de processos executados em um determinado intervalo de tempo? Throughput Tempo de Turnaround Tempo de processador Utilização do Processador Tempo de Espera Gabarito Comentado. No contexto de gerência de memória, por que o algoritmo de substituição de páginas ótimo não pode ser implementado? 7 a Questão ( Ref. : 15511) Pontos: 0 , 5 / 0 , 5 No contexto de processos, como pode ocorrer uma condição de corrida? 8 a Questão ( Ref. : 607249) Pontos: 0 , 5 / 0 , 5 9 a Questão ( Ref. : 15515) Pontos: 1 , 0 / 1 , 0 Exercício: CCT0224_EX_A37_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR O algoritmo de substituição de páginas ótimo não pode ser implementado porque não há poder computacional suficiente nos dias atuais. O algoritmo de substituição de páginas ótimo não pode ser implementado porque exige uma quantidade de memória muito grande. O algoritmo de substituição de páginas ótimo não pode ser implementado porque o hardware necessário seria absurdamente caro. O algoritmo de substituição de páginas ótimo não pode ser implementado porque é muito complexo. O algoritmo de substituição de páginas ótimo não pode ser implementado porque não é possível prever qual página será menos acessada no futuro. Um device driver, ou simplesmente driver, tem como função implementar a comunicação do subsistema de E/S com os dispositivos de E/S. Sendo assim, um device driver é bem definido na alternativa: torna as operações de E/S mais simples para o usuário bem como suas aplicações. realiza as funções comuns a todos os tipos de dispositivos. manipula diretamente os dispositivos de E/S. recebe comandos gerais sobre acessos aos dispositivos, traduzindo-os para comandos específicos, que poderão ser executados pelos controladores. permite a comunicação entre o sistema computacional e o mundo externo. Gabarito Comentado. Período de não visualização da prova: desde 03/03/2015 até 17/03/2015. Avaliação: CCT0166_AV_201301262846 » SISTEMAS OPERACIONAIS Tipo de Avaliação: AV Aluno: Professor: MAURO CESAR CANTARINO GIL Turma: 9001/AA Nota da Prova: 3,0 Nota de Partic.: 0 Data: 09/06/2014 15:00:41 10 a Questão ( Ref. : 227866) Pontos: 1 , 0 / 1 , 0 Exercício: CCT0224_EX_A38_201308023405Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR Existem diferentes maneiras de implementar a concorrência dentro de uma aplicação. São exemplos desta implementação os processos independentes, subprocessos e threads. Quais as diferenças entre estas implementações? Resposta: Gabarito: Nos processos independentes não existe vínculo entre o processo criado e o seu criador. Cada processo possui seu próprio contexto de hardware, contexto de software e espaço de nedereçamento. Já os subprocessos são criados dentro de uma hierarquia, onde existe uma dependência entre o processo criador e o o subprocesso. Caso o processo pai deixe de existir o processo filho deixará também, apesar de cada processo possuir sua própri PCB. Diferentemente dos dois exemplos anteriores, os threads compartilham o espaço de endereçamento e o contexto de software, porém cada thread possui seu próprio contexto de hardware. Na execução de processos existem duas importantíssimas rotinas que são o escalonador e o dispatcher. Uma dest rotinas depende da outra para sua execução. Descreva a função de cada uma delas e responda qual a rotina que depende da outra para ser executada? Resposta: Gabarito: Escalonador é o responsável por implementar os critérios da política de escalonamento dos processos e dispatcher é o repsonsável pela troca de contexto dos processos. Após o escalonado determinar qual processo dev fazer uso do processor, o dispatcher irá realizar a troca. Sendo assim é o dispatcher que depende do escalonador. Para evitar os problemas causados pelo compartilhamento de recursos entre processos executados de forma concorrente foram propostos mecanismos de exclusão mútua. Os mecanismos de exclusão mútua são classificado entre soluções de hardware e soluções de software. Das alternativas abaixo, marque a unica que apresenta uma solução de HARDWARE para o problema da exclusão mútua. Algoritmo de Dekker. Primeiro algoritmo Instrução test-and-set. Algoritmo de Peterson. Segundo algoritmo Exercício: CCT0224_EX_A39_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR Uma alternativa para o aumento de desempenho de sistemas computacionais é o uso de processadores co múltiplos núcleos, chamados multicores. Nesses sistemas, cada núcleo, normalmente, tem as funcionalidad completas de um processador, já sendo comuns, atualmente, configurações com 2, 4 ou mais núcleos. Com relaç ao uso de processadores multicores, e sabendo que threads são estruturas de execução associadas a um proces que compartilham suas áreas de código e dados, mas mantêm contextos independentes, analise as seguint asserções: Ao dividirem suas atividades em múltiplas threads que podem ser executadas paralelamente, aplicações podem beneficiar mais efetivamente dos diversos núcleos dos processadores multicores. PORQUE O sistema operacional nos processadores multicores pode alocar os núcleos existentes para execu simultaneamente diversas sequências de código, sobrepondo suas execuções e, normalmente, reduzindo o tem de resposta das aplicações às quais estão associadas. Acerca dessas asserções, assinale a opção correta. As duas asserções são proposições verdadeiras, mas a segunda não é uma justificativa correta da primeir A primeira asserção é uma proposição falsa, e a segunda, uma proposição verdadeira. As duas asserções são proposições verdadeiras, e a segunda é uma justificativa correta da primeira. A primeira asserção é uma proposição verdadeira, e a segunda, uma proposição falsa. Tanto a primeira quanto a segunda asserções são proposições falsas. Em relação ao uso de threds em modo kernel, analise as assertivas a seguir: I - Threads em modo kernel podem ser utilizados em sistemas operacionais monothread II - Threads em modo usuário são criadas e destruidas pelo sistema operacional. III - Threads em modo kernel não bloqueiam o processo quando entram em estado de espera Marque a alternativa que contém as assertivas VERDADEIRAS: Somente I Somente III Todas são verdadeiras Somente II Somente I e III Exercício: CCT0224_EX_A40_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR 6a Questão (Ref.: 201301304641) Pontos: 0,0 / 0 No contexto de processos, como pode ocorrer uma condição de corrida? Uma condição de corrida é uma técnica utilizada para medir o tempo de execução de um processo. Uma condição de corrida ocorre quando um ou mais processos iniciam a execução concomitante e competem no tempo para terminar primeiro. Não haverá condição de corrida em sistemas multitarefa. Uma condição de corrida pode ocorrer quando dois ou mais processos estão lendo ou escrevendo algum dado compartilhado e o resultado final depende de qual e quando executa precisamente. Uma condição de corrida é uma técnica computacional aplicada aos processos para que os mesmos sejam comparados com relação ao tempo de execução. Os sistemas operacionais podem ser classificados em relação a possibilidade de concorrência entre processos e a possibilidade de uso concorrente por mais de um usuário. Neste contexto podemos afirmar que: Sistemas monotarefa podem ser multiusuário. Sistemas monousuário são obrigatoriamente monotarefa. Todo sistema multiusuário é também multitarefa. Alguns sistemas multiusuário são também multitarefa Todo sistema multitarefa é também multiusuário. Considerando uma lista de blocos livres para gerência de alocação de memória, em que consiste o algoritmo first (primeiro encaixe)? O algoritmo first fit consiste em fazer o gerenciador de memória procurar pelo espaço na lista de blocos livres que se adeque melhor aos requisitos do processo solicitante. O algoritmo first fit não está relacionado com gerência de alocação de memória, mas com gerência de processador em um sistema multiprocessado. Ele serve para alocar o primeiro processador disponível ao processo que foi escalonado. O algoritmo first fit consiste em fazer o gerenciador de memória procurar pelo primeiro espaço na lista de blocos livres que seja grande o suficiente para os requisitos do processo solicitante. O algoritmo first fit consiste em modificar a lista de blocos livres para que ela disponibilize um espaço livre para um processos solicitante o mais breve possível. Exercício: CCT0224_EX_A41_201308023405 Aluno(a): DIEGO FERREIRA DE ALMEIDA Matrícula: 201308023405 Data: (Finalizada) SISTEMAS OPERACIONAIS VOLTAR O algoritmo first fit consiste em fazer o gerenciador de memória procurar pelo espaço na lista de blocos livres que seja o menor possível para os requisitos do processo solicitante. Deadlock pode ser definido como uma situação em que um processo aguarda por um recurso que nunca estará disponível ou um evento que nunca ocorrerá. Para que ocorra a situação de deadlock, algumas condições são necessárias simultaneamente. Assinale alternativa que contém todas essas condições: Exclusão mútua e espera por recurso. Exclusão mútua, espera por recurso e não-preempção. Espera por recurso e não-preempção. Não-preempção. Exclusão mútua e não-preempção. Durante a execução de um programa podem ocorrer eventos inesperados, que causem um desvio forçado no flux de execução de um programa. Esses eventos são conhecidos por interrupção ou exceção. Em relação ao conceito de interrupção e exceção, é correto afirmar que: Exceções partem
Compartilhar