Notas de Aula - MAC 5755 - Sistemas Operacionais
Distribuídos
Aula 23 - 20/11/2003
Plan B: Boxes for network resources
- Sistema operacional distribuído experimental desenvolvido
pelo grupo do Prof. Francisco Ballesteros
- Grupo de Sistemas y Comunicaciones del Universidad Rey Juan Carlos
- Altamente influenciado pelo Plan9 da Bell Labs
- No Plan 9, tudo é um arquivo; no Plan B, tudo é uma
caixa (box)
Motivação
- Sistemas distribuídos heterogêneos utilizado por
usuários comuns em seu dia a dia
- o artigo Plan
B: Boxes for network resources foi escrito em um ambiente
computacional composto por
- ethernet, wi-fi, linhas seriais
- laptop, PDA, desktop, servidor de CPU e servidor de arquivos
- alguns computadores tem dispositivos ligados a eles, outros
não
- leitor de CD, gravador de CD, alto-falante, impressora, etc.
- gostaríamos de dizer coisas como
- imprima arquivoX em qualquer impressora
- se há várias impressoras disponíveis, o
sistema deveria escolher a melhor
- quero usar o teclado do desktop para digitar uma mensagem no PDA
- quero iniciar uma apresentação no meu Palm mas
redirecionar a saída para o projetor
- etc.
- Em outras palavras, gostaríamos de um sistema
distribuído, heterogêneo, onde aplicações
pudessem migrar facilmente e onde suas entradas e saídas
pudessem ser redirecionadas facilmente.
- Implementação
- está no meio do caminho
- por enquanto só existe uma versão semi-funcional
hospedada em sistema do Plan9
- futuramente pretende-se construir uma versão nativa para
o PC
- O Plan B tenta alcançar este objetivo através da
abstração "caixa"
The Box
- é a única abstração implementada pelo
sistema operacional
- possui uma interface diferente da interface de arquivos o que
leva a um modelo diferente de programação de sistemas
- boxes não possuem comandos open, close, read e write.
- a principal operação com boxes é copy
- ao contrário de sistemas de arquivos tradicionais onde
cópias passam pelo cliente, isso não acontece com as
boxes:
- Exemplo de execução de programa através do
shell:
- mk
/b/proc/lb
# create a process box
for lb
cp /bin/lb
/b/proc/lb/prog # load the lb program on it
- na verdade, digitando apenas lb teria o mesmo efeito
- o mesmo efeito poderia ser obtido programaticamente com:
make("/b/proc/lb", nil,
nil, nil);
copy("/bin/lb", nil,
"/b/proc/lb/prog", nil);
- não há a abstração de fluxos (streams) via rede que podem quebrar
- o modelo de programação é: copia entrada,
trabalha, copia saída.
- Outra operação útil é link cujo significado depende
do contexto:
link("/b/term/cons", nil,
"/b/proc/lb/io1", nil);
- redireciona a saída padrão (io1) para o console
- A interface do sistema é muito simples
- Muito da semântica do sistema é derivada de
convenções de nomes no espaço de nomes (a
convenção é bem definida no manual do Plan B).
- O Plan B possui apenas 14 chamadas ao sistema (O Linux possui 190
!):
- System
call Purpose
cast
defines a type conversion
change
changes the current box name
chinfo
modifies metadata for a box
copy
copies one box to another
delete
deletes a box
dot
retrieves the current box
name
forget
forgets about an imported box
import
defines a new name for a box
info
retrieves type, constraints and
metadata for a box
kind
retrieves the type and constraints
for a given box
link
links one box to another
make
makes a box
selectors
retrieves names for boxes contained within another
uncast
forgets about a type conversion
Tipos e restrições
- Toda box tem um tipo e uma lista de restrições a
ela associadas
- o tipo determina quais outras boxes podem ser usadas (copiadas ou
ligadas) com ela
- restrições descrevem propriedades das boxes
- tipos e restrições são especificados
através de uma cadeia de caracteres do tipo
- tipo!restr1!restr2!restr3
...
- exemplo: bin!386!wavelan
ou bin!p98!ether
- dentro de um mesmo diretório (box na verdade) podem haver
vários arquivos (boxes na verdade) com o mesmo nome
- em geral, as restrições são diferentes; o
sistema usa as restrições para saber qual box selecionar
Espaço de Nomes
- boxes tem nomes semelhantes a caminhos em sistemas de arquivos
tradicioanais
- cada processo pode personalizar seu próprio espaço
de nomes através da chamada import:
import /a/prefix
networkaddress /a/box/name constraint spec
- spec determina se a box vai ser incluída antes ou depois
de outras boxes que tenham o mesmo nome (/a/prefix)
- nós podem anunciar a disponibilidade de recursos usando um
protocolo distribuído e nós podem manifestar interesse
nestes recursos
- exemplo concreto de manifestação de interesse:
import /b/proc any /proc
proc!p98 b
- cria uma nova entrada no espaço de nomes chamada /b/proc antes (before)
das homônimas; qualquer box anunciada com o nome /proc e com
restrição casando com proc!p98 (processador PC Plan9)
vai ser associada ao nome local /b/proc
Conversão de Boxes
- para que uma cópia funcione, as boxes tem que ser do mesmo
tipo
- por exemplo, /bin/lb
e /b/proc/lb/prog
são ambas do tipo bin
- no entanto, cada espaço de nomes carrega consigo uma lista
de conversores de tipo
- a chamada ao sistema cast
adiciona um coversor e a uncast
remove um conversor
- normalmente o conversor é um programa executável
mas pode também ser nulo
- se não há uma conversão direta, o sistema
tenta montar uma cadeia de conversores que levará à
conversão apropriada
Distribuição: o protocolo Op
- um protocolo bem simples que pode ser implementado em
máquinas com poucos recursos
- principais operações:
- * kind,
to ask for box metadata
* selectors,
to ask for inner box names
* copy
to request a box copy
* getmem/putmem,
to implement copy
* link
to request a box link
* make
to create a box
* delete
to destroy a box
* chinfo
to update box metadata
- note a separação entre copy e getmem/putmem que permite fazer
a cópia de forma inteligente sem mandar os dados para o cliente.
Conclusão
- Plan B apresenta um modelo de sistema bem diferente do que
estamos acostumados
- parece que ele apresenta algumas vantagens
- mas não está absolutamente claro se as desvantagens
vão ser muito grandes
- na verdade, ainda não está nem claro se será
possível implementar um sistema assim de forma eficiente (mas
esperamos que sim)
Referências
Próxima
Aula
Aula Anterior
Página de MAC 5755
Página do Fabio
Página do DCC