Please enable JavaScript.
Coggle requires JavaScript to display documents.
Estruturas do Sistema Operacional - Coggle Diagram
Estruturas do Sistema Operacional
Por que aplicações são específicas para um SO?
Incompatibilade por causa das system calls
Cada SO tem um set de system calls próprio
Apps que rodam em múltiplos SOs
Escritos em uma linguagem híbridas
Aplicações rodam sobre uma "máquina virtual"
Escritos em uma linguagem com API padrão
API que possui compiladores e bibliotecas no sistema desejado
Escritos em uma linguagem interpretada
"Traduzidos" em tempo real
Projeto e implementação do SO
Problema
Solucionável x Não solucionável
Solucionável
Existe um algoritmo que resolva para toda entrada
Não solucionável
Não há um algoritmo que sempre resolva o problema
Projeto e Implementação do SO não é um problema solucionável
Estrutura interna varia bastante
Primeiro passo:
Definir objetivos e especificações
Afetado pela escolha do hardware
Objetivos do usuário
Fácil de aprender
Confiável
Seguro
Rápido
conveniente de usar
Objetivos do sistema
Fácil de projetar
Fácil de implementar
Fácil de manter
Flexível
Confiável
Livre de erros
Eficiente
Mecanismos
Como será feito
Políticas
O que será feito
Sistemas Operacionais são escritos em C/C++ atualmente
Estrutura do sistema operacional
Estrutura Monolítica
"Não estruturação"
Todas as funcionalidades do kernel em um binário
Difíceis de implementar e estender
Bom desempenho
Enfoque em Camadas
SO dividido em níveis
Nível mais baixo é hardware
Nível mais alto é interface com usuário
Cada camada só pode acessar camadas inferiores
Pouco usada
Difícil de definir função de cada camada
Baixa eficiência
Melhores em redes de computadores e aplicações web
Microkernels
Feito para "facilitar" o modelo monolítico
Move-se o máximo do kernel para o espaço do “usuário”
Benefícios
Mais fácil de estender
Mais portável
Mais confiável
Mais seguro
Detrimentos
Overhead de desempenho da comunicação entre usuário e kernel
Módulos
Loadable kernel modules
kernel tem um conjunto de componentes nucleares
Kernel vincula serviços adicionais por meio de módulos
Une benefícios de outras abordagens
Interfaces bem definidas e protegidas
Um módulo possui apenas funções nucleares
É eficiente
Híbridos
Combina mais de uma abordagem
Android
Multiplataforma
Open source
Desenvolvido pela Open Handset Alliance (Google)
Uso de camadas, assim como o IOS
Uso da linguagem Java com a API Android (específica para o sistema)
Camada de abstração de hardware (HAL)
A aplicação interage com um software que abstrai o hardware
Maior portabilidade e flexibilidade
Kernel base é Linux, mas com tantas modificações que é considerado um SO "standalone"
MacOS e IOS
Camada de experiência do user
Interface gráfica
Interface de toque
Camada de frameworks de aplicação
Dá suporte as aplicações
Diferenças entre MacOS e IOS
MacOS
Usa código compilado para Intel e ARM
Mais aberto e disponível aos desenvolvedores
IOS
Usa apenas código ARM
Diversas funcionalidades bloqueadas aos desenvolvedores
Kernel modificado para atender às necessidades do ambiente mobile