Baixe o app para aproveitar ainda mais
Prévia do material em texto
Capítulo 3 (Processos) -Tanenbaum (pág 68) 2) Teria sentido limitar o número de threads em um servidor? Sim, pois threads requerem memória para sua própria pilha. Assim, com muitas threads o consumo de memória pode impedir que o servidor trabalhe corretamente. Outra razão é que para um sistema operacional, threads independentes tendem a operar de forma caótica. Isso pode dificultar o funcionamento estável do sistema de memória virtual, resultando em falhas de paginação e erros de E/S. Desse modo, muitas threads, podem levar à degradação de desempenho em comparação ao caso do uso de única thread (single thread). 4) Associar estaticamente somente um thread com um processo leve não é uma idéia assim tão boa. Por quê? Tal associação se traduz efetivamente a ter somente threads a nível de kernel, implicando que muito do ganho de performance que se tem ao ter threads ao nível do usuário é perdido. 5) Ter só um processo leve por processo nem sempre é uma ideia assim tão boa. Por quê? Não é uma ideia tão boa pois nesse esquema, que efetivamente tem apenas threads de usuário, qualquer chamada de sistema de bloqueio irá bloquear todo o processo. 11) Faça um desenho esquemático de um servidor multithread que suporta vários protocolos que usam sockets como sua interface de nível de transporte para o sistema operacional subjacente. Um projeto relativamente simples é ter um único segmento T à espera de mensagens de transporte de entrada (TPDUs). Se assumirmos o cabeçalho de cada TPDU contém um número que identifica o protocolo de nível superior, o piso pode levar a carga útil e passá-lo para o módulo para esse protocolo. Cada módulo tem um tal segmento separado espera para esta capacidade de carga, o qual trata de um pedido de entrada. Depois de processar o pedido, uma mensagem de resposta é passado para T, que, por sua vez, envolve-o em uma mensagem de nível de pedido, uma mensagem de resposta é passado para T, que, por sua vez, envolve-o em uma mensagem de nível de pedido, uma mensagem de resposta é passado para T, que, por sua vez, envolve-o em uma mensagem de nível de transporte e envia para a reconstrução da casa destino adequado. 13) Um servidor que mantém a conexão TCP/IP com um cliente é com estado ou sem estado? Assumindo que o servidor não mantém outras informações sobre esse cliente, pode-se justificar que o servidor é sem estado. A questão é que não o servidor, mas a camada de transporte no servidor mantém o estado no cliente. O que os sistemas operacionais locais podem acompanhar é, em princípio, de nenhum interesse para o servidor. 14) Imagine um servidor Web que mantenha uma tabela na qual endereços IP de clientes sejam mapeados para páginas Web acessadas mais recentemente. Quando um cliente se conecta ao servidor, este consulta o cliente em sua tabela e, caso o encontre, retorna a página registrada. Este servidor é com estado ou sem estado? Ele pode ser fortemente argumentado que este é um servidor sem estado. Neste exemplo, se a tabela é perdida por alguma razão, o cliente e o servidor ainda podem interagir corretamente como se nada tivesse acontecido. Em um projeto de estado, tal interação só seria possível após o servidor ter se recuperado de uma possível falha. Capítulo 2 1) Se um cliente e um servidor forem colocados longe um do outro, podemos ver a latência de rede dominar o desempenho global. Como podemos atacar esse problema? Pode-se alterar a comunicação de síncrona para assíncrona. Desse modo o cliente deve ser reorganizado para que ele possa realizar outras tarefas enquanto ele estiver aguardando o servidor. 2) O que é uma arquitetura cliente-servidor de três divisões? Uma arquitetura de cliente-servidor de três níveis é constituído por três camadas lógicas, em que cada camada é, em princípio, implementado em uma máquina separada. A camada mais elevado consiste de uma interface de utilizador cliente, a camada intermédia contém a aplicação real, e a camada mais baixa implementa os dados que estão a ser utilizados. 3) Qual a diferença entre uma distribuição vertical uma distribuição horizontal? Distribuição vertical: é a organização da aplicação em multi-camadas. Divide componentes logicamente diferentes em máquinas fisicamente diferentes. Com isso, facilita o gerenciamento do sistema, pois cada máquina pode ser responsável por um grupo específico de funções. Distribuição horizontal: é a distribuição usada no P2P. É baseada na distribuição dos clientes e servidores. Um cliente ou servidor podem estar fisicamente divididos em partes lógicas equivalentes, cada uma operando sobre sua porção de dados, o que balanceia a carga. Os processos que constituem o sistemas são todos iguais, o que significa que que as funções necessárias devem estar em todos os processos que compõe o sistema. Maioria das interações entre os processos é simétrica, com isso, cada processo atua como “cliente” e “servidor” ao mesmo tempo. 10) Nem todo nó em uma rede peer-to-peer deve se tornar um superpar. Cite requisitos razoáveis que um superpar deve cumprir. Os superpares só podem realizar comunicação com outros superpeers. Os superpares devem comunicar somente com o superpar dentro de uma hierarquia
Compartilhar