Prévia do material em texto
Desenvolvimento de aplicações com Pthreads Exercícios 1. A maior parte das tarefas que são executadas na atualidade envolve o processamento de uma grande quantidade de dados. Com o crescimento da tecnologia, foram construídos computadores com mais poder de processamento, surgindo, assim, o conceito de paralelismo. Um thread estabelece um processo leve, conduzido por meio de um fluxo sequencial de controle que atua ligado a determinado programa. A respeito do thread, considere as seguintes afirmativas e classifique-as em V (verdadeiras) ou F (falsas): ( ) Um thread, em suma, é uma unidade de uso da CPU que abrange informações de identificação (ID). ( ) Um processo com diversos threads poderá executar também diversas tarefas simultaneamente. ( ) Entre as características de um thread, temos parâmetros de escalonamento e tamanho da pilha. ( ) No processo tradicional, há somente um segmento de controle, que executa várias tarefas simultaneamente. Assinale a alternativa que indica a sequência correta. Resposta correta. A. V – V – V – F. O thread define um processo leve que é conduzido por meio de um fluxo sequencial de controle que atua atrelado a um programa específico. Representa uma unidade básica de utilização da CPU, incluindo informações de identificação (ID), um contador de programa, um conjunto de registradores e uma pilha. Os processos tradicionais têm um segmento de controle, mas, se um processo tiver vários threads de controle, será capaz de executar várias tarefas ao mesmo tempo, possibilitando a criação de modelos de programação. Cada thread tem um identificador, um conjunto de registradores (incluindo o contador de programa) e um conjunto de características, que são armazenados em uma estrutura. As características incluem tamanho da pilha, parâmetros de escalonamento e outros itens necessários para a utilização do thread. 2. Foram surgindo algumas desvantagens relacionadas com os threads, pois os fabricantes passaram a desenvolver versões próprias de threads, trazendo dificuldades aos desenvolvedores na criação de aplicativos portáteis devido às diferenças das implementações. Portanto, foi necessária uma interface de programação, possibilitando, assim, o aproveitamento dos recursos dos threads. O Posix (do inglês portable operating system interface) é um conceito readaptado de thread, criado especialmente para sistemas operacionais com base no Unix. A respeito do thread no ambiente Unix, escolha a alternativa correta. Você acertou! C. No ambiente Unix, o thread é capaz de compartilhar os recursos do processo com os demais threads. O Posix funciona como um conjunto de padrões implementado para criar e manipular threads, tendo como objetivo atuar como uma API padrão. No ambiente Unix, um thread existe dentro de um processo e utiliza os recursos do processo em que está alocado; funciona por meio de um fluxo de controle independente, desde que seu processo pai e o sistema operacional existam; duplica somente os recursos essenciais necessários para ser considerado escalonável; pode compartilhar os recursos do processo com outros threads, mas cada um segue funcionando de maneira independente; se o processo pai for encerrado, a Pthread também será encerrada. 3. Quando um thread é criado, a sua execução costuma ocupar um espaço na CPU temporariamente, não importando a arquitetura de sistema em que funciona ou da sua padronização. Nessa conjuntura, quando uma aplicação multithread é executada, um thread ocupa diferentes estados durante o seu ciclo de vida. Em relação às Pthreads, todo o processo que abrange sua operação é o mesmo. A respeito das estruturas e das funções de Pthreads, avalie as afirmativas a seguir: I. As funções essenciais para a execução do thread são determinadas pela biblioteca pthreads.2. II. A biblioteca pthread_join tem a função de criar novos threads e direcionar o ID como valor da função. III. A biblioteca pthread_t (struct) tem como função levar as informações a respeito da estrutura da Pthread. É(são) verdadeira(s) a(s) afirmativa(s): Você acertou! B. III. Sempre que uma aplicação multithread é executada, um thread passa a ocupar diferentes estados no decorrer do seu ciclo de vida: em execução, bloqueado (aguardando recursos), pronto para ser executado ou finalizado. Todas as funções necessárias para a execução de um thread são definidas de acordo com a biblioteca pthreads.h, que define as estruturas e funções usadas. Na estrutura das Pthreads, entre suas bibliotecas e funções, temos a pthread_join, cuja função é que, quando uma Pthread aguardar que outro finalize, ele chama essa função. Na biblioteca pthread_t (struct), são carregadas informações sobre a estrutura da Pthread. 4. Como as Pthreads de um processo atuam em conjunto, existem algumas situações em que é necessário que o código escrito pelo mesmo programador alterne entre a execução. Nesses casos, há duas chamadas que podem ser usadas pelas Pthreads na programação. A respeito dessas duas chamadas, avalie as afirmativas a seguir: I. O pthread_attr_destroy tem a função de retirar a estrutura de atributos de um thread, sem afetar os demais. II. O pthread_attr_destroy efetua a liberação da memória por meio da adição da estrutura de atributos ao thread. III. O pthread_attr_init bloqueia a estrutura de atributos relacionada com um thread e o ativa com os valores padrão. IV. Com a função pthread_attr_init, podem ser alterados os valores quando a estrutura dos atributos é manipulada. É(são) verdadeira(s) a(s) afirmativa(s): Você acertou! D. I e IV. Como as Pthreads de um processo trabalham em conjunto, em alguns casos, é preciso que o código escrito pelo mesmo programador alterne entre a execução. Para tanto, existem duas chamadas que podem ser usadas pelas Pthreads na programação, sendo elas: pthread_attr_init, que cria a estrutura de atributos associada com um thread e o inicializa com os valores padrão, sendo que os valores podem ser modificados sempre que a estrutura dos atributos for manipulada através dos campos; pthread_attr_destroy, a função que remove a estrutura de atributos de um thread e a memória é liberada, sem que os demais sejam prejudicados. 5. Os threads são usados para que diversas atividades sejam executadas ao mesmo tempo no mesmo processo e as Pthreads foram criadas para assegurar que, nos sistemas Unix, determinadas bibliotecas sejam usadas para chamar essas funções. A respeito da utilização de thread, considere as seguintes afirmações e classifique- as em V (verdadeiras) ou F (falsas): ( ) O processo de identificação dos usuários novos que estão conectados ao sistema é realizado com o uso de thread. ( ) O reconhecimento da ocorrência da conexão de usuários é feito pelo sistema operacional com a utilização de thread. ( ) Uma das rotinas básicas executadas por meio da utilização de thread é o envio de mensagens entre os usuários. Assinale a alternativa que contenha a sequência correta: Você acertou! A. V – V – V. Existem algumas rotinas básicas que são executadas pelo sistema operacional com a utilização de thread, como as tarefas que dizem respeito à identificação dos usuários novos que estão conectados ao sistema. As tarefas de recebimento e envio de mensagens entre os usuários também são realizadas com o uso de thread. A identificação de eventos em que os usuários se conectam ou se desconectam do sistema é executada com o uso de thread. Na maioria das vezes, essas tarefas são executadas simultaneamente. Entretanto, nem sempre um único processo é capaz de suportá-las. Quando um processo é segmentado em Pthreads, se torna mais eficiente. Um deles trata das conexões ativas;outro, do gerenciamento de mensagens; e outro, da identificação de novas contas. Desenvolvimento de aplicações com Pthreads Exercícios