Baixe o app para aproveitar ainda mais
Prévia do material em texto
Os arquivos em anexo tratam de um introdução aos sistemas operacionais, Estruturas de Sistemas Computacionais e Estruturas de Sistemas Operacionais. Referência: Silberschatz, Abraham. Sistemas Operacionais com Java. 7 ed. Rio de Janeiro: Elsevier, 2008. Exercício 1: Enade 2008 - Questão 11 Com relação às diferentes tecnologias de armazenamento de dados, julgue os itens a seguir. 1. Quando a tensão de alimentação de uma memória ROM é desligada, os dados dessa memória são apagados. Por isso, esse tipo de memória é denominado volátil. 2. O tempo de acesso à memória RAM é maior que o tempo de acesso a um registrador da unidade central de processamento (UCP). 3. O tempo de acesso à memória cache da UCP é menor que o tempo de acesso a um disco magnético. https://online.unip.br/Arquivo?id=47939.PDF https://online.unip.br/Arquivo?id=47938.PDF https://online.unip.br/Arquivo?id=47937.PDF https://online.unip.br/Arquivo?id=47936.PDF 4. O tempo de acesso à memória cache da UCP é maior que o tempo de acesso à memória RAM. Estão certos apenas os itens A) I e II. B) I e III. C) II e III. D) II e IV E) III e IV. O aluno respondeu e acertou. Alternativa(C) Comentários: C) Existem diferentes tecnologias de armazenamento de dados e elas se caracterizam por apresentar tempo de acesso à memória RAM superior ao tempo levado para acessar um CPU – Unidade Central de Processamento, por exemplo. Além disso, considerando a memória cache, seu tempo de memória é inferior ao tempo de acesso a um disco magnético, mas é superior ao tempo de acesso à memória RAM. Vale destacar que quando a memória ROM é desligada, seus dados não são apagados. Exercício 2: Sistemas operacionais de tempo real são utilizados em controle de processos automatizados, em que o tempo de resposta a determinados eventos é um fator crítico. Com relação a esse assunto, julgue os itens seguintes. I Sistemas de tempo real estritos (hard real-time) não utilizam dispositivos de memória secundária (como discos), pois estes não oferecem garantia de término das operações dentro de uma quantidade máxima de tempo. II Um sistema operacional de propósito geral pode ser modificado para ser de tempo real atribuindo-se prioridades fixas para cada um dos processos. III O escalonamento mais utilizado por sistemas operacionais de tempo real é o shortest-job-first (tarefa mais curta primeiro). Assinale a opção correta. A) Apenas um item está certo. B) Apenas os itens I e II estão certos. C) Apenas os itens I e III estão certos. D) Apenas os itens II e III estão certos. E) Todos os itens estão certos. O aluno respondeu e acertou. Alternativa(A) Comentários: A) O sistema de tempo real pode ser definido como um software que é responsável pelo gerenciamento dos recursos de um sistema computacional, com o intuito de permitir que todos os eventos sejam atendidos dentro de suas restrições de tempo, e gerenciados da forma mais eficiente possível. O sistema operacional de propósito geral trata-se de um sistema computacional capaz de resolver uma ampla gama de tarefas diversas. Possui um custo baixo e bom desempenho. O escalonamento de processos shortest-job-first se aplica somente quando todos os processos estão disponíveis simultaneamente. Exercício 3: Petrobras -Prova 8 - ANALISTA DE SISTEMAS JÚNIOR Infraestrutura – 2012 Questão 32 No ambiente UNIX, existem vários interpretadores de linha de comando conhecidos como shell. É importante, para cada script, informar em que shell ele deve ser executado. Para isso, o usuário pode especificar o shell desejado A) na primeira linha do script. B) na última linha do script. C) em qualquer linha do script. D) em um arquivo à parte. E) na linha de comando, após o nome do arquivo que contém o script. O aluno respondeu e acertou. Alternativa(A) Comentários: A) Para selecionar qual Shell será utilizado, devemos usar a combinação de hashtag (#) mais exclamação (!) e caminho do executável na primeira linha do arquivo script, isso vem a ser conhecido como Shebang. O arquivo em anexo trata da Gerência de Processos, Capítulo 3 do livro: Referência: Silberschatz, Abraham. Sistemas Operacionais com Java. 7 ed. Rio de Janeiro: Elsevier, 2008. Exercício 3: Qual a função do Bloco de Controle de Processos (BCP)? A) Repositório para quaisquer informações de um processo, podem variar de um processo para outro. B) Controlar os processos que estão parados. C) Controlar e armazenar as informações dos programas inativos dos usuários. D) https://online.unip.br/Arquivo?id=47940.PDF Repositório para quaisquer informações do Sistema Operacional. E) Repositório para quaisquer informações do Shell. O aluno respondeu e acertou. Alternativa(A) Comentários: A) O bloco de controle de processo é uma estrutura de dados no núcleo do sistema operacional que serve para armazenar a informação necessária para tratar um determinado processo. Exercício 21: POSCOMP 2004 Questão 39. Em um sistema operacional, um processo pode, em um dado instante de tempo, estar em um de três estados: em execução, pronto ou bloqueado. Considere as afirmativas abaixo sobre as possíveis transições entre estes estados que um processo pode realizar. I. Do estado em execução para o estado bloqueado II. Do estado em execução para o estado pronto III. Do estado pronto para o estado em execução IV. Do estado pronto para o estado bloqueado V. Do estado bloqueado para o estado em execução VI. Do estado bloqueado para o estado pronto Quais são as afirma�vas verdadeiras? A) Somente as afirma�vas I, II e III são verdadeiras. B) Somente as afirmativas I, II, III e VI são verdadeiras. C) Somente as afirmativas I, III, IV e VI são verdadeiras. D) Somente as afirma�vas I, III, IV e V são verdadeiras. E) Todas as afirma�vas são verdadeiras. O aluno respondeu e acertou. Alternativa(B) Comentários: B) Durante sua “vida”, tempo que está “rodando”, um processo pode se encontrar em um dos seguintes estados: Execução, Pronto e Espera. O arquivo em anexo trata dos conceitos de Threads: Capítulo 4 do livro Referência: Silberschatz, Abraham. Sistemas Operacionais com Java. 7 ed. Rio de Janeiro: Elsevier, 2008. Fluxos de Execução Nota O estado de um processo é definido pelos recursos que ele está usando e pela posição na qual está sendo executado. Existem muitos casos, entretanto, em que seriam úteis o acesso e o compartilhamento simultâneo de recursos. Essa situação é similar ao caso em que a execução de uma chamada ao sistema fork é realizada com um novo contador de instruções, ou fluxo de execução (thread), com o processamento compartilhando o mesmo espaço de endereçamento. q Estrutura de Fluxos de Execução o Um fluxo de execução (thread) é uma unidade básica de utilização da CPU e consiste em um contador de instruções, um conjunto de registradores e um espaço de pilha. Ele compartilha com fluxos irmãos sua seção de código, a seção de dados e os recursos do sistema operacional, como arquivos abertos e sinais, conhecidos coletivamente como uma tarefa. o Um processo tradicional é igual a uma tarefa com um único fluxo de execução. o Uma tarefa não faz coisa alguma sem um fluxo de execução, enquanto um fluxo de execução deve fazer parte de apenas uma tarefa. o Compartilhamentos extensivos de recursos são beneficiados pela troca da CPU entre fluxos de execução irmãos e pela criação de novos fluxos de execução, em comparação com mudanças de contexto necessárias entre processos tradicionais. Fork No UNIX cada processo é identificado por um identificador de processo, um valor inteiro único que o distingue dos outros processos. Um novo processo é criado pela chamada ao sistema fork. O espaço de endereçamento do novo processo é uma cópia do espaço de endereçamento do processo original. Esse mecanismo permite ao processo pai comunicar-se facilmente com seu processo filho, com uma diferença: o códigoretornado pela chamada fork é zero para o processo novo (FILHO), enquanto o identificador de processo (diferente de zero) do filho é retornado ao pai. https://online.unip.br/Arquivo?id=48030.PDF o Embora uma mudança de contexto entre fluxos de execução ainda exija uma alteração no conjunto de registradores, não é necessário nenhum trabalho relacionado ao gerenciamento de memória. o Como qualquer ambiente de processamento paralelo, a existência de vários fluxos de execução para um processo pode introduzir problemas de controle de concorrência que necessitam do uso de regiões críticas ou semáforos. o Podemos entender melhor o comportamento de fluxos de execução ao comparar o controle de vários fluxos com o controle de vários processos. o Quando diversos processos estão envolvidos, cada processo opera independentemente dos outros, cada um deles tem seu próprio contador de instruções, registrador apontador de topo da pilha e espaço de endereçamento. o Esse tipo de organização é útil quando as tarefas realizadas pelos processos não têm relação umas com as outras. o Diversos processos podem também desempenhar uma mesma tarefa. Por exemplo, eles podem fornecer dados para máquinas remotas na implementação de um sistema de arquivos de uma rede de computadores. o É mais eficiente ter um processo contendo diversos fluxos de execução que sirvam ao mesmo propósito. Na implementação com diversos processos, cada processo executaria o mesmo código, mas teria espaço em memória e recursos de arquivo próprios. o Uma implementação com um único processo e vários fluxos de execução usa menos recursos do que no caso de vários processos redundantes, incluindo memória, arquivos abertos e alocação da CPU. Por exemplo, à medida que o Solaris evolui, daemons que implementam mecanismos de comunicação na rede estão sendo reescritos como fluxos de execução do núcleo, para aumentar o desempenho das funções de servidores em redes de computadores. o Os fluxos de execução operam, em muitos aspectos, da mesma maneira que os processos. Eles podem estar em um dos vários estados: pronto, bloqueado, em execução ou finalizado. o Assim como os processos, os fluxos de execução compartilham o uso da CPU e apenas um fluxo de execução a cada vez está ativo (em execução). o Um fluxo de execução é processado seqüencialmente e cada um tem sua própria pilha e contador de instruções. o Um fluxo de execução pode criar um fluxo filho e pode ser bloqueado, ficando em espera até o término de uma chamada ao sistema. o Se um fluxo de execução está bloqueado, um outro fluxo pode ser executado. o Em contraste com os processos, os fluxos de execução não são independentes uns dos outros. o Como todos os fluxos podem usar os mesmos endereços em uma tarefa, um fluxo pode ler e escrever sobre pilhas de outros fluxos. o O mecanismo não oferece proteção fluxos de execução. Essa proteção, entretanto, não deve ser necessária. Os processos podem se originar-se de usuários diferentes, podendo interferir uns com os outros de maneira não desejada, ao passo que, no caso de vários fluxos de execução, um único usuário é responsável por uma dada tarefa. Nota O mecanismo de fluxos de execução permite que processos seqüenciais sejam executados paralelamente, apesar de poderem fazer chamadas ao sistema que bloqueiam processos. O uso de fluxos de execução está crescendo porque apresentam algumas das características de processos tradicionais, mas podem ser executados de maneira mais eficiente. Comunicação Entre Processos Quando tratamos de comunicação entre processos dois mecanismos são possíveis: Comunicação por meio de memória compartilhada Requer que os processos usem uma área de armazenamento comum e que o código para implementar as operações de armazenagem e leitura de valores da área de armazenamento seja escrito explicitamente pelo programador da aplicação. Sistema de troca de mensagens Uma outra maneira de se obter a comunicação entre processos é permitida pelo sistema operacional. Esse mecanismo permite que os processos se comuniquem uns com os outros e realizem operações de modo sincronizado, através da troca de mensagens. · Os esquemas de comunicação por meio de memória compartilhada e de sistema de troca de mensagens não são mutuamente exclusivos e podem ser usados simultaneamente em um único sistema operacional ou mesmo em um único processo. q Estrutura Básica o Os sistemas de troca de mensagens têm a função de permitir que os processos se comuniquem entre si sem a necessidade de usar variáveis compartilhadas. o Um mecanismo de suporte a esse sistema deve fornecer pelo menos duas operações, para enviar e receber uma mensagem. o Se dois processos P e Q querem se comunicar, eles devem enviar mensagens para receber um do outro; deve existir um canal de comunicação entre eles. o Nesse capítulo não vamos nos preocupar com métodos para implementação física desse canal de comunicação (como memória compartilhada, barramento de hardware ou rede de comunicação). o Para que dois processos se comuniquem, eles devem ter uma maneira de se referir um ao outro. Eles podem usar tanto comunicação direta quanto comunicação indireta: § Comunicação Direta – Cada processo que queira se comunicar com outro deve usar explicitamente o nome do processo receptor ou remetente da mensagem. § Comunicação Indireta – As mensagens são enviadas e recebidas de caixas postais. Uma caixa postal pode ser vista abstratamente como um lugar no qual processos podem colocar mensagens e do qual mensagens podem ser retiradas. · Cada caixa postal possui uma identificação única. Nesse esquema, um processo pode se comunicar com outro por intermédio de diversas caixas postais diferentes. · Dois processos só podem se comunicar se compartilharem o uso de alguma caixa postal. · Um canal tem sua capacidade determinada pelo número máximo de mensagens que pode estar na fila de mensagens associada ao canal. Há basicamente três maneiras de implementar essa fila. o Capacidade zero o Capacidade limitada o Capacidade ilimitada Resumo Um processo é um programa em execução. Quando um processo é executado, ele muda de estado. O estado de um processo é definido pelas atividades que estão sendo realizadas por esse processo. Cada processo pode estar em um dos seguintes estados: novo, pronto, em execução, em espera ou terminado. Cada processo é descrito no sistema operacional por um bloco de controle de processos. Quando um processo não está sendo executado, ele é colocado em alguma fila de espera. Existem duas grandes classes de filas em um sistema operacional: fila de requisição de E/S e fila de processos prontos. A segunda contém todos os processos que estão esperando pela CPU. Cada processo é representado por um BCP, e os BCPs podem ser ligados para formar uma fila de processos prontos. O escalonador de processos faz uma seleção de processos que podem passar a competir pela CPU. Normalmente, essa seleção é bastante influenciada por considerações relativas à alocação de recursos, especialmente o gerenciamento de memória. A alocação de CPU consiste em selecionar um processo da fila de processos prontos. Existem diversas razões para permitir a execução concorrente de processos em um sistema: compartilhamento de informações, aumento na velocidade de processamento, modularidade e conveniência. Para suporte à execução concorrente, é preciso um mecanismo para criação e finalização de processos. A execução de dois ou mais processos pode ser feita de modo independente ou cooperativo. Dois processos cooperativos devem ter meios de comunicarem um com o outro. Existem basicamente dois esquemas de comunicação complementares: memória compartilhada e troca de mensagens. O método de memória compartilhada requer que processos em comunicação compartilhem o uso de variáveis. Em um sistema de memória compartilhada,a responsabilidade de estabelecer uma comunicação é dos programadores de uma aplicação; o sistema operacional precisa fornecer apenas a memória compartilhada. No método de troca de mensagens, a responsabilidade de estabelecer uma comunicação é do próprio sistema operacional. Esses dois esquemas não são mutuamente exclusivos e podem ser usados ao mesmo tempo em um único sistema operacional. Os processos cooperativos que compartilham diretamente um mesmo espaço de endereços lógicos podem ser vistos como fluxos de execução. Um fluxo de execução é uma unidade básica de utilização da CPU e compartilha com fluxos irmãos a seção de código, a seção de dados e os recursos do sistema operacional, que são coletivamente conhecidos como uma tarefa. Uma tarefa não faz nada se não tiver algum fluxo de execução a ela associado, e um fluxo de execução deve estar associado a apenas uma tarefa. O compartilhamento extensivo de recursos entre fluxos de execução irmãos torna mais eficiente a mudança de contexto entre eles, assim como a criação de novos fluxos, em comparação com as trocas de contexto entre processos tradicionais. Exercício 1: Enade 2008 - questão 19 Uma alternativa para o aumento de desempenho de sistemas computacionais é o uso de processadores com múltiplos núcleos, chamados multicores. Nesses sistemas, cada núcleo, normalmente, tem as funcionalidades completas de um processador, já sendo comuns, atualmente, configurações com 2, 4 ou mais núcleos. Com relação ao uso de processadores multicores, e sabendo que threads são estruturas de execução associadas a um processo, que compartilham suas áreas de código e dados, mas mantêm contextos independentes, analise as seguintes asserções. Ao dividirem suas atividades em múltiplas threads que podem ser executadas paralelamente, aplicações podem se beneficiar mais efetivamente dos diversos núcleos dos processadores multicores porque o sistema operacional nos processadores multicores pode alocar os núcleos existentes para executar simultaneamente diversas seqüências de código, sobrepondo suas execuções e, normalmente, reduzindo o tempo de resposta das aplicações às quais estão associadas. Acerca dessas asserções, assinale a opção correta. A) As duas asserções são proposições verdadeiras, e a segunda é uma justificativa correta da primeira. B) As duas asserções são proposições verdadeiras, mas a segunda não é uma justificativa correta da primeira. C) A primeira asserção é uma proposição verdadeira, e a segunda, uma proposição falsa. D) A primeira asserção é uma proposição falsa, e a segunda, uma proposição verdadeira. E) Tanto a primeira quanto a segunda asserções são proposições falsas. O aluno respondeu e acertou. Alternativa(A) Comentários: A) A resposta correta é a letra A, pois as duas asserções são proposições verdadeiras, sendo que a segunda é uma justificativa correta da primeira. Tanto as definições sobre arquiteturas multicore quanto sobre threads na primeira asserção estão corretas. A afirmação principal, a qual diz que aumento de desempenho de sistemas computacionais pode ser obtido com o uso de processadores com múltiplos núcleos, também está correta, e ainda se tomou o cuidado de destacar que esta é apenas uma das alternativas possíveis para que este ganho de desempenho ocorra. A segunda asserção pode ser entendida como uma justificativa correta da primeira, no sentido que descreve mais detalhadamente uma das formas como as aplicações podem ser preparadas para que este ganho de desempenho seja possível. Também está correta a explicação de como essas aplicações com várias threads são executadas pelo sistema operacional para que este aumento de desempenho possa efetivamente ser obtido. Aqui também se tomou o cuidado de se fazer uma ressalva indicando que, mesmo com todas as condições atendidas, o tempo de execução das aplicações pode não ser reduzido (por exemplo, devido a questões de E/S).
Compartilhar