Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação paralela utilizando memória compartilhada Exercícios 1. Um sistema operacional tem a responsabilidade de fazer o gerenciamento de todo o hardware do computador, tendo como objetivo propiciar decisões importantes como a definição dos processos que irão ser executados. Entretanto, para exercer suas funcionalidades, terá que operar em sincronia com todos os componentes de hardware que integram a estrutura computacional, onde diversos componentes, dispositivos e controladores são interligados entre si para que a comunicação aconteça de maneira correta. Para a compreensão do funcionamento da memória compartilhada, se faz necessário entender sua importância a partir da inicialização de um sistema operacional. A respeito das etapas que envolvem esse processo, analise as afirmativas a seguir: I. A partir do momento em que o computador inicia sua operação, os recursos necessários para essa operação também serão alocados. II. Na primeira etapa, serão inicializados os registradores da CPU (central process unit – unidade central de processamento) ao conteúdo da memória e, na etapa seguinte, todos os requisitos do sistema. III. A CPU tem a responsabilidade de concentrar todas as operações de cálculo, bem como desempenhar funções de processamento. É(são) verdadeira(s) a(s) afirmativa(s): Você acertou! B. I e III. Desde que o computador inicia sua operação, os recursos necessários são alocados para que se possa operar, o que torna a afirmativa I verdadeira. Logo após, um pequeno programa, denominado Bootstrap, passa a ser executado, bem como todas as instruções que definem sua utilidade. Na etapa inicial, todos os requisitos do sistema são inicializados, assim como os registradores da CPU, os controladores de dispositivos e conteúdo da memória, o que torna a afirmativa II falsa. Além da memória, a CPU é um dos componentes mais importantes para garantir a funcionalidade de um sistema operacional, tendo a responsabilidade de realizar todas as operações de cálculo e as tarefas de processamento, sendo considerado o cérebro do computador, o que torna a afirmativa III verdadeira. 2. No multiprocessamento simétrico (SMP), cada processador da CPU executa as funções simultaneamente, abrangendo funções que são realizadas pelo sistema operacional e processos direcionados pelo usuário a partir de um conjunto próprio de registros e cache. A respeito da memória compartilhada em sistemas multiprocessadores, considere as seguintes afirmações e classifique-as em verdadeiras (V) ou falsas (F): 1. ( ) Alguns recursos são compartilhados entre processadores como a memória física do barramento, possibilitando a execução de muitos processos por CPU ao mesmo tempo. 2. ( ) O controlador de memória faz a sincronização do acesso à memória compartilhada, garantindo acessos ordenados pelos processos do sistema. 3. ( ) Os sistemas Unix são exemplos de memória compartilhada, sendo que estes usam parte da memória cheia do sistema para bloquear o armazenamento de informações. 4. ( ) O compartilhamento de recursos entre os processadores faz com que os processos sejam executados pelas CPUs, um de cada vez, de forma isolada e individual. Assinale a alternativa que apresenta a sequência correta. Você acertou! C. V – V – F – F. A relação dos sistemas multiprocessadores com a memória compartilhada no sistema diz respeito ao fato de alguns recursos serem compartilhados entre os processadores como memória física do barramento, fazendo com que muitos processos sejam executados por cada CPU simultaneamente, o que torna a afirmativa 1 verdadeira e a afirmativa 4 falsa. Entre os controladores, está o controlador de memória, que sincroniza o acesso à memória compartilhada para garantir um acesso ordenado por parte dos processos do sistema, o que torna a afirmativa 2 verdadeira. Os sistemas Unix são um exemplo disso, pois usam uma parte da memória livre do sistema para gerenciar as interrupções, o armazenamento de informações importantes e as instruções que devem ser seguidas para o melhor desempenho do ambiente. Nesse caso, a CPU e a memória compartilhada entre os processos são sempre gerenciadas em paralelo, o que torna a afirmativa 3 falsa. 3. Nos sistemas operacionais legados, enquanto um processador de texto estava sendo utilizado e o usuário precisasse usar a agenda também, o primeiro processo era bloqueado para que o segundo fosse finalizado, sendo, portanto, os processos apenas executados um por vez. Já, nos sistemas operacionais modernos, na maior parte do tempo, os processos trabalham juntos com a possibilidade de compartilhar alguma memória. A respeito do processo da memória compartilhada, analise as afirmativas a seguir: I. A memória compartilhada precisa estar sempre localizada na memória principal, nas estruturas de dados centrais. II. A localização da memória compartilhada não é um fator que tenha poder de alterar a natureza da comunicação. III. A área da memória que é utilizada por diversos processos no compartilhamento de memória é denominada buffer. IV. No compartilhamento de memória, uma área específica é usada, denominada “múltiplos processos”. São verdadeiras as afirmativas: Você acertou! A. II e III. Normalmente, nos sistemas operacionais modernos, a execução de dois processos pode acontecer simultaneamente, podendo estes compartilhar alguma memória comum para que ambos sejam capazes de ler e escrever ao mesmo tempo, por exemplo. A memória compartilhada pode estar tanto na memória principal (provavelmente em estruturas de dados centrais) ou relacionada com o uso de um arquivo compartilhado. Portanto, a localização da memória compartilhada não modifica a natureza da comunicação ou mesmo dos problemas que possam ser resultado desse processo, o que torna a afirmativa I falsa e a II verdadeira. O compartilhamento de memória tem sido um dos mecanismos de comunicação entre os processos mais utilizados. Sendo assim, determinada área de memória é manuseada por diversos processos e essa área é chamada de buffer, sendo o recurso acessível para vários processos de uma aplicação concorrente, o que torna a afirmativa III verdadeira e a IV falsa. 4. A programação paralela é uma maneira de solucionar muitos problemas de forma concorrente, sendo que cada parte do problema é formada por diversas instruções executadas em sequência, mas, ao mesmo tempo, concorre com a execução simultânea de vários processadores. A respeito da programação paralela, escolha a alternativa correta. Você acertou! D. A programação paralela auxilia na resolução de problemas complexos, levando em consideração um tempo satisfatório de processamento. É possível executar a programação paralela considerando diferentes métodos e uma das mais importantes razões para a sua utilização diz respeito ao fato de que os requisitos necessários de um programa estão sempre mudando. Com a programação paralela, é possível resolver muitos problemas com base em programas, de maneira ágil, e lidar com problemas complexos, considerando um tempo aceitável de processamento. Também é possível evitar a subutilização de recursos computacionais e superar limitações de memória quando uma única máquina não oferece recursos necessários para atender a determinada demanda. 5. A utilização de arquiteturas paralelas e da programação baseada no compartilhamento de memória é uma forma eficiente de impulsionar a capacidade de execução. Os modelos de programação paralela são divididos em modelos de memória compartilhada e de memória distribuída, sendo que, nas execuções com base no compartilhamento de memória, a programação é realizada utilizando threads. A respeito da comunicaçãopor meio da memória compartilhada e dos threads, considere as seguintes afirmações e classifique-as em verdadeiras (V) ou falsas (F): 1. ( ) Por meio de um thread,podem ser organizadas tarefas, sendo ele uma unidade básica usada pela CPU. 2. ( ) O surgimento do OpenMP ocorreu por ser difícil ter APIs (application programming interface – interface de programação de aplicações) padronizadas para memória compartilhada. 3. ( ) O OpenMP usa threads que realizam a comunicação por meio de variáveis compartilhadas. Assinale a alternativa que apresenta a sequência correta. Você acertou! E. V – V – V. Um thread é uma unidade básica utilizada pela CPU, sendo que, a partir de um thread, é possível a organização de tarefas, o que torna a afirmativa 1 verdadeira. O OpenMP surgiu da dificuldade de encontrar APIs padronizadas para arquiteturas de memória compartilhada, tendo sido construído como uma API, o que torna a afirmativa 2 verdadeira. O principal objetivo do OpenMP é fornecer instruções para expressar paralelismo de dados, assim como paralelismo de tarefas em fragmentos de código e aplicações que usam loops em sua estrutura. O OpenMP é um modelo de memória compartilhada. Por isso, utiliza os threads que se comunicam por meio de variáveis compartilhadas, o que torna a afirmativa 3 verdadeira. Programação paralela utilizando memória compartilhada Exercícios
Compartilhar