Ir para o conteúdo

CCT-UFCA/Ciência da Computação/Sistemas Operacionais/Estruturação de Sistemas Operacionais

De Wikiversidade

A estruturação de sistemas operacionais está centrada no modo como eles são projetados para desempenhar suas funções fundamentais de gerenciar recursos e fornecer uma interface amigável aos usuários. A escolha da arquitetura influencia diretamente o desempenho, a manutenção e a escalabilidade do sistema.

Arquitetura do Sistema Operacional

[editar | editar código]

A arquitetura de um sistema operacional refere-se à forma como ele é estruturado para interagir com o hardware e os aplicativos. Ela define os componentes principais do sistema e como eles se comunicam.

  • Conceito de Camadas:
    • Os sistemas operacionais modernos são organizados em camadas, cada uma desempenhando uma função específica, desde a interação com o hardware até o fornecimento de serviços para aplicativos de usuário.
  • Principais Áreas Arquiteturais:
    1. Núcleo (Kernel):
      • É o componente central que interage diretamente com o hardware, controlando os recursos essenciais como CPU, memória e dispositivos de I/O.
      • O kernel pode ser monolítico, microkernel ou híbrido.
    2. Espaço de Usuário:
      • Parte do sistema operacional onde aplicativos de usuário e ferramentas são executados. Ele interage com o núcleo para acessar os recursos do sistema.
    3. Interfaces de Sistema:
      • API e interfaces como POSIX fornecem meios para que os aplicativos se comuniquem com o núcleo.
Exemplo: O sistema operacional Linux usa uma arquitetura monolítica, enquanto o Windows utiliza uma arquitetura híbrida.

Módulos e Componentes Principais

[editar | editar código]

Os sistemas operacionais são compostos por vários módulos, cada um responsável por uma área específica da funcionalidade.

  • Gerenciamento de Processos:
    • Controla a criação, execução e término de processos, além de coordenar a comunicação entre eles.
Exemplo: A fila de processos prontos no Linux, organizada pelo escalonador do kernel.
  • Gerenciamento de Memória:
    • Monitora a alocação e liberação de memória para processos, garantindo isolamento e eficiência.
Exemplo: O uso de memória virtual no Windows.
  • Gerenciamento de Sistemas de Arquivos:
    • Controla como os arquivos são armazenados, organizados e acessados no disco.
Exemplo: O ext4 no Linux e o NTFS no Windows.
  • Gerenciamento de Dispositivos:
    • Gere drivers de hardware que comunicam o sistema operacional com dispositivos como impressoras e teclados.
Exemplo: A camada HAL (Hardware Abstraction Layer) no Windows.
  • Segurança e Controle de Acesso:
    • Protege dados e processos contra acessos não autorizados.
Exemplo: O sistema de permissões no Linux.

Monolíticos, Microkernel e Sistemas Híbridos

[editar | editar código]
  • Monolíticos:
    • No modelo monolítico, todos os serviços do sistema operacional (gerenciamento de memória, dispositivos, sistemas de arquivos, etc.) são implementados em um único bloco dentro do núcleo.
    • Vantagens: Desempenho rápido devido à comunicação direta entre componentes no kernel.
    • Desvantagens: Dificuldade de manutenção; qualquer alteração no kernel exige a recompilação completa.
Exemplo: O kernel do Linux.
  • Microkernel:
    • Segue uma abordagem minimalista, delegando a maior parte das funcionalidades para módulos que operam no espaço de usuário.
    • Vantagens: Maior segurança e estabilidade, já que falhas em serviços não comprometem o kernel.
    • Desvantagens: Comunicação entre módulos é mais lenta devido ao maior número de trocas de mensagens.
Exemplo: Minix e o sistema operacional de tempo real QNX.
  • Sistemas Híbridos:
    • Combinam características de kernels monolíticos e microkernels, buscando o melhor desempenho e flexibilidade.
    • Vantagens: Maior desempenho em relação ao microkernel e mais modularidade em relação ao monolítico.
    • Desvantagens: Complexidade no design.
Exemplo: Windows e macOS.

Sistemas de Camadas e Módulos

[editar | editar código]

Os sistemas baseados em camadas seguem uma abordagem hierárquica onde cada camada depende da camada inferior para realizar suas funções. Os sistemas modulares, por outro lado, são projetados para permitir maior flexibilidade e extensibilidade.

  • Sistemas de Camadas:
    • As camadas são organizadas de forma que a camada mais baixa interage diretamente com o hardware, e as camadas superiores fornecem interfaces ao usuário.
Exemplo: O sistema THE (desenvolvido por Dijkstra), um dos primeiros exemplos de sistemas estruturados em camadas.
  • Sistemas Modulares:
    • Adotam uma abordagem mais flexível, permitindo adicionar ou remover módulos (como drivers e sistemas de arquivos) sem precisar modificar o núcleo principal.
Exemplo: O kernel do Linux, que suporta a inserção dinâmica de módulos (loadable kernel modules, LKMs).

Referências

[editar | editar código]
  1. https://www.alura.com.br/artigos/sistemas-operacionais-conceito-estrutura
  2. https://linuxuniverse.com.br/artigo/kernel-mono-hib-micro
  3. https://servernet.com.ar/tipos-de-nucleos-informatica/
  4. https://pt.estudyando.com/sistema-operacional-em-camadas-arquitetura-abordagem-e-estrutura/