Notas de Aula - MAC 449/5755 - Sistemas Operacionais Distribuídos
Aula 2 - 15/08/2003
Sistemas Operacionais Flexíveis e Configuráveis
Dê também uma olhada na página
de ponteiros
.
- Por que precisamos de Sistemas Operacionais flexíveis, configuráveis
e personalizáveis (customizable)?
- aplicações possuem diferentes exigências
- sistemas evoluem
- configurações diferentes de acordo com o uso
- máquinas com poucos recursos, sistemas embutidos
- Choices - http://choices.cs.uiuc.edu/choices/
- 1987 a 1996
- se você quer flexibilidade, extensibilidade -> saída
natural = programação orientada a objetos
- queriam provar que é possível construir um S.O. em
C++.
- Tudo no sistema é objeto:
- objetos no espaço do usuário chamam métodos nos
objetos no espaço do núcleo (System call)
- classes abstratas que são implementadas de maneiras diferentes
por classes concretas.
- classe abstrata HardwareDependent implementada de várias
formas para
- virtual (UNIX)
- SPARC
- Intel x86
- Intel Hypercube
- A arquitetura geral do sitema é definida como um arcabouço
(framework)
- Subframeworks
- VM
- Process Management
- File System
- IPC
- Aumentaram C++ com uma biblioteca para
- coleta de lixo
- carga dinâmica
- classes de primeira classe
- depuração
- proxies
- Objetos típicos: Process, Domain, Memory Object
- Virtual choices:
- hardware interrupts -> signals
- HW VM translation table -> memory mapped files
- disk -> big UNIX file
- debugging normally with gdb
- Carga Dinâmica: carrega o código para ler um tipo novo
de arquivo só quando o arquivo é aberto.
- SPIN - http://www-spin.cs.washington.edu/
- permite a carga de módulos dos usuários dentro do núcleo
- utiliza linguagem Modula-3 para garantir segurança na execução
do sistema (safety)
- Exokernel - http://www.pdos.lcs.mit.edu/exo/
- radicalização da idéia de micronúcleos,
o núcleo é o menor possível: serve apenas para exportar
o hardware e para oferecer proteção.
- o núcleo não faz gerenciamento.
- políticas de gerenciamento são implementadas no nível
do usuário por bibliotecas (library operating system ou libOS).
- como o núcleo é muito pequeno e a sua interface é
de bem baixo nível, ele pode ser implementado de uma maneira muito
eficiente.
- cada aplicação pode usar uma biblioteca diferente simultaneamente
se quiser.
- normalmente, as aplicações escolhem uma libOS existente
de um rol de possibilidades.
- se quiser, o programador de uma nova aplicação pode
desenvolver o seu próprio libOS.
- o kernel faz 3 coisas:
- administra a propriedade dos recursos (quem detém o que),
- implementa proteção: acessos a recursos são
controlados e
- revoca os recursos das aplicações
- primeiro pede a colaboração da aplicação
(revocation)
- depois, se ela não coopera, intervém e pega o recurso
na marra (abort)
- A implementação de um exokernel é muito difícil
mas foi feita no MIT.
- Os resultados experimentais mostram ganhos considerais no desempenho.
Próxima Aula
Aula Anterior
Página de MAC 449/5755
Página do Fabio
Página do DCC