Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create Threads, Virtualização, Clientes e Servidores #14

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

amandapollosarlo
Copy link

  • Processos

    O que é :

    • Para sistemas distribuídos, um processo é uma unidade de execução independente que possui seu próprio espaço de endereço, recursos e estado. Ele pode ser executado em um único nó ou em vários nós diferentes da rede distribuída. Os processos se comunicam entre si através de mensagens, proporcionando um mecanismo para a coordenação de tarefas e o compartilhamento de recursos.

    Caracterícas:

    • Algumas características de processos são, sua independência. ou seja, cada processo tem sua própria área de execução e recursos, permitindo uma execução de forma independente; o isolamento, já que possuem proteção de memória, permitindo que um processo acesse a memória de outro indevidamente; a sincronização, que permite com que os processos se comuniquem e coordenem suas ações de forma ordenada por fim a comunicação, que ocorre por meio de mensagens e permite que haja um compartilhamento de dados e a coordenação de tarefas.
  • Threads

    O que são:

    • São fluxos de execução dentro de um processo que compartilham o mesmo espaço de endereçamento, mas podem executar de forma independente, o que permite que um processo execute várias threads simultaneamente, aumentando a eficácia e desempenho. Um desafio das threads é a sincronização comunicação entre elas, por ser complexa e suscetíveis a erros, como condições de corrida e deadlocks.

    Caracteristicas:

    • Algumas características são, a leveza, de forma que por serem mais leves que os processos, exigem menos recursos para serem criadas e gerenciadas; o compartilhamento de memória, que permite o acesso rápido aos dados compartilhados, a sincronização, que permite que as threads se comuniquem e coordenem suas ações de forma ordenada; e sua eficiência, de forma que as threads permitem que um processo utilize recursos de forma mais eficiente, executando tarefas simultaneamente.

    Modelo de threads:

    • Threads de Usuário: gerenciadas em nível de aplicação, ou seja, a biblioteca de threads faz todo o gerenciamento no espaço do usuário, sem a necessidade de interação direta com o kernel (núcleo do sistema operacional, responsável por gerenciar os recursos do computador e facilitar a interação entre o hardware e o software) do sistema operacional.
      • Vantagens: rapidez (como as threads são gerenciadas no espaço do usuário, as operações de criação, alternância (context switch) e sincronização de threads são mais rápidas, porque não envolvem chamadas ao kernel) e flexibiliade (bibliotecas de threads podem ser implementadas em qualquer sistema operacional sem necessidade de suporte específico do kernel)
      • Desvantagens: bloqueio ( se uma thread de usuário fizer uma chamada bloqueante, como leitura de disco ou espera de rede, todo o processo é bloqueado, já que o kernel não reconhece as threads individuais, mas somente o processo como um todo) e escalonamento ( o kernel não tem conhecimento das threads de usuário e, portanto, não pode escaloná-las diretamente. Isso pode resultar em uma utilização ineficiente dos recursos da CPU).
    • Threads de Kernel: gerenciadas pelo próprio kernel do sistema operacional. Cada thread é tratada como uma entidade separada pelo kernel, que cuida da criação, escalonamento e gerenciamento das threads.
      • Vantagens: eficiência do escalonamento ( kernel pode realizar o escalonamento de threads com base na prioridade e nas necessidades de recursos de cada thread. Isso permite uma utilização mais eficiente da CPU e um melhor desempenho em sistemas multiprocessadores), não realização de bloqueio (como o kernel conhece todas as threads, ele pode continuar executando outras threads dentro do mesmo processo, mesmo se uma thread estiver bloqueada e uma operação de I/O(Input/Output).
      • Desvantagens: overhead maior (as operações de gerenciamento de threads, como criação e alternância de contexto, são mais lentas porque envolvem chamadas ao kernel. Isso pode introduzir um overhead considerável, principalmente quando há muitas threads) e complexidade (a implementação e o gerenciamento de threads de kernel são mais complexos, exigindo suporte específico do sistema operacional).

    Implementação de Threads:

    • Bibliotecas de threads: facilitam o uso e melhor utilização dos recursos da CPU, melhoram a estruturação do código e na escalabilidade das aplicações. Permitem uma utilização das threads de forma eficiente podendo levar a um aumento significativo no desempenho e na responsividade de aplicações, especialmente em sistemas multiprocessadores
    • Sincronização de Threads: mecanismos como semáforos e barreiras são explicados para coordenar a execução de threads e evitar condições de corrida.
  • Virtualização

    O que é:

    • É a tecnologia que permite criar uma versão virtual de um recurso físico, como hardware, sistemas operacionais, dispositivos de armazenamento ou recursos de rede. Em vez de usar o recurso físico diretamente, a virtualização permite que você utilize uma versão simulada do recurso, que se comporta como se fosse real. Ela usa software para criar uma camada de abstração sobre o hardware físico. Isso permite que um único conjunto de hardware físico seja dividido em vários ambientes virtuais independentes, conhecidos como máquinas virtuais (VMs).

    Benefícios:

    • Melhora a utilização de recursos, facilita o gerenciamento e a migração de sistemas, e isola diferentes aplicações para melhorar a segurança e a estabilidade.

    Tipos de Virtualização:

    • Virtualização completa: também conhecida como full virtualization, emula um hardware completo para que sistemas operacionais e aplicações existentes possam ser executados sem nenhuma modificação.
    • Paravirtualização: envolve a modificação do sistema operacional convidado para que ele possa se comunicar diretamente com o hypervisor, o que melhora a performance.
    • Virtualização de Nível de Sistema Operacional: também conhecida como containerização, permite que múltiplas instâncias isoladas de um sistema operacional rodem em um único host, utilizando containers.

    Hypervisores: software que cria e gerencia máquinas virtuais (VMs). Ele permite que múltiplos sistemas operacionais compartilhem um único hardware físico, isolando-os uns dos outros. O hypervisor gerencia a distribuição dos recursos físicos, como CPU, memória e dispositivos de I/O, entre as VMs.

    • Hypervisor Tipo 1 (Bare-Metal): Corre diretamente sobre o hardware, proporcionando maior eficiência e controle.
    • Hypervisor Tipo 2 (Hospedado): Corre sobre um sistema operacional existente, facilitando a instalação e a compatibilidade com diferentes plataformas, mas com overhead maior.
  • Clientes

    O que são:

    • São dispositivos, programas ou sistemas que fazem solicitações a um servidor para acessar ou utilizar recursos, serviços ou dados. Eles atuam como consumidores no modelo cliente-servidor.

    Características:

    • Os clientes iniciam a interação com o sistema enviando solicitações aos servidores.
    • Geralmente possuem uma interface gráfica ou uma interface de linha de comando que permite que os usuários interajam com o sistema.
    • Se comunicam com os servidores através de protocolos de rede, como HTTP ou TCP/IP.
    • Podem realizar parte do processamento localmente, antes de enviar solicitações aos servidores ou após receber respostas dos servidores.

    Arquitetura Cliente-Servidor

    • O modelo Cliente-Servidor é uma estrutura onde clientes solicitam serviços e servidores fornecem esses serviços. Facilita a distribuição de tarefas e recursos em um sistema distribuído.
    • Servidores podem ser de diferentes tipos, como servidores de arquivos, de impressão, web, entre outros.
  • Servidores

    O que são:

    • São sistemas ou aplicações que fornecem serviços, recursos, ou dados para outros programas ou dispositivos, conhecidos como clientes, através de uma rede.
      Em um sistema cliente-servidor, um servidor é um processo que fornece serviços aos clientes. Os servidores geralmente aguardam passivamente por solicitações dos clientes e respondem a essas solicitações, fornecendo os serviços desejados.

    Características:

    • Oferecem funcionalidades específicas aos clientes, como armazenamento de dados, processamento de informações ou acesso a recursos.
    • Geralmente aguardam passivamente por solicitações dos clientes.
    • Gerenciam recursos compartilhados, como memória, processamento e armazenamento, de forma a atender às solicitações dos clientes de forma eficiente.
    • Podem ser escalados para atender a um grande número de clientes, adicionando mais recursos ou distribuindo a carga de trabalho entre vários servidores.

    Tipos de servidores:

    • Servidores de Aplicação: Executam aplicações específicas. Exemplos: servidores web, servidores de email ou servidores de banco de dados.
    • Servidores de Arquivos: Armazenam e fornecem acesso a arquivos para os clientes.
    • Servidores de Impressão: Gerenciam filas de impressão e imprimem documentos enviados pelos clientes.
    • Servidores de Diretório: Armazenam e fornecem acesso a informações sobre usuários, grupos e recursos em uma rede.
    • Servidores de Proxy: Intermediam a comunicação entre os clientes e outros servidores, fornecendo serviços como cache, segurança e filtragem de conteúdo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant