Please enable JavaScript.
Coggle requires JavaScript to display documents.
Estruturas do Sistema Operacional - Coggle Diagram
Estruturas do Sistema Operacional
Um SO...
Baseia-se em...
Projeto e Implementação
Problema não solucionável
Não existe um algoritmo único que resolva o projeto do SO
Exige um planejamento inicial
Definir objetivos e especificações
Hardware e tipo de sistema
Usuário
Conveniente
Fácil de aprender
Confiável, seguro e rápido
Sistema
Fácil de projetar/manter
Flexível e confiável
Livre de erros e eficiente
Princípio de Separação
Política
O que será feito
Mecanismo
Como será feito
Vantagem
Flexibilidade caso as políticas precisem mudar.
Linguagens Utilizadas
Padrão atual
C/C++
Facilidade de escrita e portabilidade
Ex
Windows e Linux
C com partes em Assembly (drivers)
Desempenho
Compiladores modernos
Código excelente
Trechos críticos ainda são otimizados manualmente em Assembly
Módulos
Melhor metodologia atual
Kernel possui componentes nucleares e vincula serviços na inicialização ou execução
UNIX, Solaris, Linux, macOS e Windows
Funcionamento
Dinâmico
Serviços adicionais carregados sob demanda
Evita necessidade de recompilar o kernel a cada mudança
Divisão
Algoritmos principais no kernel
Recursos como sistemas de arquivos usam módulos carregáveis
Flexibilidade e segurança
Interfaces bem definidas
Comunicação livre entre módulos
Simplicidade
Funções essenciais
Regras de comunicação
Desempenho
Alta eficiência
Comunicação direta
Sem troca de mensagens
Híbridos
Mais de uma abordagem estrutural para equilibrar desempenho, segurança e usabilidade
Quase todo sistema moderno é híbrido
Linux
Foco monolítico + Modularidade
Windows
Base monolítica com suporte a subsistemas de usuário (comportamento de microkernel) + módulos carregáveis
macOS / iOS
Interface gráfica ou de toque
Suporte a APIs (ex: Cocoa)
Linguagem Swift
QuickTime, OpenGL
Mach e BSD UNIX.
macOS: Intel e ARM; iOS usa ARM
Otimizações Mobile
Economia de energia, RAM, segurança, recursos POSIX/BSD mais bloqueados que no macOS
Android
Open-source, multiusuário/multi-hardware p/ smartphones e tablets
Máquina Virtual (ART)
Usa API específica
Compilação Ahead-Of-Time (AOT) na instalação
Mais eficiência e bateria, mas instalação lenta
Acesso nativo via JNI (C/C++)
HAL
Abstrai o hardware físico p/ portabilidade entre fabricantes
Bibliotecas
Biblioteca C otimizada Bionic no lugar da glibc do Linux
Estrutura Monolítica
Todas as funcionalidades do kernel em um único binário e espaço de endereçamento lógico
Unix tradicional e Windows
Excelente desempenho
Pouco overhead das chamadas de sistemas
Comunicação interna rápida
Difícil de implementar, estender e manter
Complexidade
Enfoque em Camadas
SO dividido em níveis superpostos
Camada 0 (hardware) -> Camada N (interface do usuário)
Uma camada usa serviços apenas das camadas inferiores
Detalhes ocultados
Facilidade de construção e depuração
Modularidade
Baixa eficiência e alto overhead nas chamadas de sistema
Pouco uso em SOs
Mais comum
Redes TCP/IP e aplicações web
Microkernels
Reação ao modelo monolítico
Anos 1980 (Mach)
Remove funcionalidades do kernel e as move para o espaço do usuário
Kernel
Apenas o essencial
Módulos isolados cuidam de funções específicas
Comunicação: passagem de mensagens
Mais fácil de estender
Portar para novas arquiteturas
Mais confiável e seguro
Menos código em modo kernel
Overhead de desempenho
Comunicação espaço de usuário e kernel
Windows NT e Darwin (Mach)
Geração do Sistema Operacional (SYSGEN)
Configura o SO genérico para o hardware específico (CPU, memória e dispositivos) na instalação.
Inicialização (Boot)
O firmware (BIOS/UEFI) executa um código bootstrap (como o GRUB) para localizar e carregar o kernel na memória.