Notas de Aula - MAC 5755 - Sistemas Operacionais Distribuídos
Aula 3 - 15/8/2001
Sistemas Operacionais Flexíveis e Configuráveis
O nosso repositório de artigos contém artigos sobre cada
um desses sistemas. Dê também uma olhada na página
de ponteiros.
-
Por que precisamos de Sistemas Operacionais flexíveis e configurá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/
-
vou colocar mais informações sobre o SPIN aqui mais tarde
-
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 5755
Página do Fabio
Página do DCC