reenvio com mais questões e respostas sobre o mach.
DCE
P.:Qual a diferença principal de abordagem entre o
Distributed Computing Environment (DCE) e outros sistemas distribuídos
clássicos como o Amoeba, Mach e Chorus?
R.:Os outros sistemas citados utilizam uma abordagem baseada em microkernel, já
o DCE busca construir um ambiente de computação distribuída em cima de sistemas
operacionais já existentes (Windowns, Unix, OS/2), oferecendo assim uma
plataforma para a execução de aplicações distribuídas sem prejudicar as
aplicações já existentes.
P.:Distributed Time Service (DTS) é um serviço no DCE responsável pelo
gerenciamento de relógios. Quais as questões principais com que o DTS se depara
e qual a diferença entre a forma como DTS armazena o tempo e a forma de
armazenamento da maioria dos demais sistemas?
R.:O DTS deve ser responsável por manter os clocks consistentes mutuamente, ou
seja, fazer com que todos os relógios concordem sobre o mesmo valor de tempo.
Uma segunda questão de responsabilidade do DTS é fazer com que este valor com o
qual todos os relógios concordaram esteja condizente com a realidade (de acordo
com os relógios do mundo real).
O DTS armazena o tempo na forma de intervalos (exemplo:
entre 16:13 e 16:15), diferente da maioria dos outros sistemas que armazena na
forma de um simples número binário.
P.:De que forma usuários, máquinas e outros recursos são agrupados em um
sistema DCE? E quais os fatores considerados para escolher um
agrupamento?
R.:Em DCE, coleções de máquinas, usuários e outros recursos são agrupados em células. A divisão em
células se dá de acordo com fatores como propósito (todos os integrantes de uma
mesma célula devem ter como meta um objetivo em comum), segurança (obter
recursos dentro de uma célula é simples e direto, mas acessar recursos de uma
outra célula necessita negociação), overhead e administração(toda célula deve
ter seu administrador).
P.:Quais são os 4 principais serviços oferecidos pelo DCE?
R.: Serviços de tempo, diretório, segurança e de arquivos.
P.: Quais os algoritmos de escalonamento de threds que são implementados no DCE?
R.:-Fifo com filas diferentes para por prioridades
-Round Robin com diferentes filas por prioridade
-Round robin com apenas uma fila, mas processos ganham um quantum maior conforme prioridade
P.: O que é skulking?
R.: É uma técnica de atualização de diretórios distribuidos, que consiste em não atualizar
os diretórios escravos imediatamente após o mestre ser atualizado. Permitindo que vários
updates sejam feitos antes da atualização global. Aumentando o desempenho. Só é possivel
quando as informações não são críticas.
AMOEBA
P.: Cite os 3 servidores padrão do Amoeba e de características:
R.: Servidor bala: gerencia o armazenamento as informações;
Servidor de diretório: trata da identificação de arquivos e da gerencia dos diretórios;
Servidor de replicação: resolve a questão da replicação de arquivos[TAN98].
P.: Cite uma diferença importante entre Amoeba e a maioria dos demais sistemas operacionais distribuídos:
R.:
Uma diferença importante está no fato de que o Amoeba não usa o
conceito de máquina hospedeira, o arquivo aberto pode estar em qualquer
máquina que faça parte do pool de processadores.
P.:
Os arquivos no Amoeba são imutáveis. Isso tornou a escrita em várias
operações mais complexa. Para contornar este problema foi introduzido
dois novo tipos de arquivos. Que tipos são esses? Dê uma breve
explicação.
R.:São eles os não comprometidos e os comprometidos. Os
primeiros estão em processo de criação e que podem ser modificados, os
outros, que são permanentes, não permitem modificações.
P.:Como é feito o gerenciamento de memória no Amoeba?
R.:O modelo de memória do Amoeba é simples e eficiente. O espaço
de endereço de um processo consiste em um ou mais segmento mapeados em endereços
virtuais específicos do usuário. Quando um processo está executando, todos os
seus segmentos estão na memória. Não há swapping ou paginação neste momento. Portanto,
Amoeba so pode executar programas que caibam na memória física. A principal
vantagem desse esquema é a simplicidade a alta performance. A principal
desvantagem é que não é possível rodar programas maiores do que a memória física.
P.: Quais os dois tipos de comunicação entre processo no
Amoeba?
R.: Comunicação ponto-a-ponto: baseada em RPC. Um cliente manda
a mensagem ao servidor, então fica bloqueado até que o servidor mande a
resposta.
Comunicação em grupo: permite que uma mensagem seja enviada
de uma fonte para vários destinos.
P.:Qual o procedimento realizado para executar uma operação em
um objeto no Amoeba?
R.:Um cliente realiza um RPC com o servidor, especificando o
objeto, a operação a ser executada e, opcionalmente, algum parâmetro necessário.
O servidor faz o trabalho e retorna a resposta. Operações são realizadas de
forma síncrona, ou seja, depois de iniciar um RPC com o servidor, a thread
cliente fica bloqueada até que o servidor responda. Porém, outras threads do mesmo
processo podem continuar rodando.
CHORUS
P.: O mecanismo de comunicação do
Chorus é a troca de mensagens entre portas (buffers) associadas aos
processos. Quais operações básicas de comunicação estão disponíveis
neste sistema e qual a diferença entre elas?
R.: O sistema disponibiliza duas
operações: envio assíncrono e RPC. A primeira consiste no envio de uma
mensagem sem confirmação de recebimento ou notificação de erro. No
segundo caso, quando um processo executa uma operação de RPC, ele fica
bloqueado até o recebimento de uma resposta ou a ocorrência de um
evento de timeout.
P.: Por definição, um processo
no sistema Chorus é uma coleção de elementos ativos e passivos que
trabalham em conjunto. Cite-os e dê algumas características.
R.: Os elementos ativos são as threads que executam código, sendo que um
processo pode ter mais de uma threads. Os elementos passivos são dois:
um espaço de memória compartilhado pelas threads do processo e um
conjunto de portas usadas para envio/recebimento de mensagens.
P.: O sistema Chorus suporta
uma ou mais threads por processo, assim como Amoeba e Mach.
Considerando um sistema multiprocessado usando Chorus, como podem ser
escalonadas as threads de um mesmo processo e como isso é tratado?
R.: O sistema Chorus suporta a execução de múltiplas threads
de um mesmo processo em diferentes processadores ao mesmo tempo. O
escalonamento das threads é realizado inteiramente pelo kernel, que
considera a prioridade do processo e a prioridade relativa de cada
thread dentro do processo.
P.:A qual modelo de memória é baseado???
R.:Seu modelo de memória e baseado em paginação, onde o acesso de
leitura é permitido a todas as máquinas, porém somente uma pode
executar escrita.
P.:O microkernel é formado pro quatro partes, quais são elas e o que
elas fazem?
R.: O supervisor gerencia o hardware em baixo nível e trata exceções e
interrupções, assim como outros detalhes de hardware, além de
manipular trocas decontexto.
O gerenciador de memória virtual manipula a parte de baixo nível do
sistema de paginação.
O executor de tempo real é responsável por gerenciamento de processos,
threads e escalonamento, além de prover sincronização entre threads
para exclusão mútua, dentre outros propósitos.
O gerente de comunicação interprocessos controla interfaces do usuário,
portas e envio de mensagens de forma transparente, fazendo uso dos serviços do
executor de tempo real e do gerenciador de memória virtual.
P.:Há três tipos de processos,com diferentes níveis de privilégio (privilege) e
confiança (trust): processos do kernel, do sistema e do usuário.
Explique cada um deles.
R.: Os processos do kernel são os mais poderosos: rodam em modo kernel,
compartilham espaço de endereçamento entre si e com o microkernel, podem ser
carregados ou descarregados em tempo de execução e comunicam-se entre
si por um
tipo especial de RPC (minimensagem), mais leve, não disponível a
outros processos.
Processos dos sistema rodam em modo usuário (sem privilégios), não
podendo executar I/O e outras instruções protegidas diretamente, mas
por outro lado são confiáveis e podem assim fazer chamadas ao kernel e
obter seus serviços diretamente,sem intermediários. Cada processo do
sistema roda em seu próprio espaço de endereçamento.
Processos do usuário não recebem qualquer privilégio ou confiança; assim,
são impedidos de executar qualquer operação de I/O ou chamadas ao kernel. De
maneira similar ao que ocorre no UNIX, processos do usuário são
divididos em duaspartes: a parte normal do usuário e aquela que é
invocada após uma trap (chamadas ao kernel solicitando algum serviço).
MACH
P.: Qual a relação entre o Mach e o BSD UNIX?
R.: O desenvolvimento do Mach é uma evolução do sistema BSD UNIX. Inicialmente, foi desenvolvido dentro do
kernel do BSD, que tinha seus componentes substituídos conforme os do Mach eram finalizados.
P.: Como é o suporte para multiprocessamento no Mach?
R.: É muito flexível, sendo compatível tanto com sistemas de memória compartilhada entre os processadores,
quanto com sistemas sem memória compartilhada.
P.: Como funciona a criação de threads no Mach?
R.: É similar ao UNIX, assim como a chamada de sistema fork produz um novo processo, no Mach é criada uma nova
tarefa que simula esse comportamento. A nova tarefa tem memória duplicata da memória do pai, contém apenas uma
thread e começa no mesmo ponto de onde foi chamado o fork no pai.
P: Como funciona a exclusão mútua no Mach?
R: O sistema não possui um mecanismo de semáforo ou de monitor, apenas de construção e manipulação de mutexes que, ao invés de bloquear a execução de uma thread numa task, deixam ela em busy waiting. Mesmo assim, a flexibilidade do kernel permite a criação de monitores através de variáveis condicionais (booleanas) e de mutexes.
P: Como é implementada a comunicação entre processos no Mach?
R: Usando dois componentes, portas e mensagens. Quase tudo no Mach é um objeto, e todos os objetos são endereçados por sua porta de comunicação. Mensagens são passadas por essas portas para começar operações nos objetos receptores, utilizando as rotinas implementadas nos objetos. Dessa maneira, o Mach implementa independência de localização e segurança na comunicação.
P: Quais são os principais recursos de multiprocessamento do Mach?
R: Portabilidade para várias plataformas de hardware (formação de clusters), segurança e sincronização implementadas de forma simples e segura (ports e mensagens), extensiva utilização de objetos tornando o acesso a memória e troca de mensagens entre processos remotos mais transparente, scheduler com filas individuais para cada CPU, etc.
INFERNO
P.:Defina o Sistema Operacional Inferno e explique as suas principais
características.
R.:o Inferno é um sistema operacional, desenvolvido pela Lucent
Technologies? Bell Labs, que visa fornecer facilidades para o
desenvolvimento e a execução de serviços distribuídos e aplicações de
rede.
As principais características do Inferno são:
- portabilidade através de processadores : Intel, SPARC, MIPS, PowerPC.
- portabilidade através de ambientes, podendo ser utilizado como
sistema operacional Nativo ou hospedado em Windows, Unix (Irix,
Solaris, FreeBSD, Linux, AIX, HP/UX) ou Plan 9) .
- portabilidade de aplicações - Através da linguagem de programação
Limbo, fornecida pelo Inferno, é possível desenvolver aplicações que
possam ser utilizadas através das diferentes plataformas.
- adaptabilidade dinâmica - Dependendo do hardware e dos recursos
diponíveis, diferentes módulos poderiam ser carregados para a
realização de funcionalidades específicas. Um video-player poderia
carregar diferentes decodificadores, por exemplo;
- requerimentos mínimos de hardware ? Executa aplicações úteis sobre
máquinas com 1MB de memoria.
P.:O inferno teve grande influência do sistema operacional Plan 9, que é
baseado nos princípios de recursos como arquivos, espaço de nomes e
protocolo de comunição padrão. Explique como funciona o princípio de
-recursos como arquivos? e quais as principais vantagens relacionadas
a esta abordagem.
R.:Segundo o princípio de ?Recursos como Arquivos? todo recurso
disponível no sistema é visto como arquivo, não importando se é local
ou remoto. Até mesmo ?processos?, conceito presente na maior parte dos
sistemas operacionais, são representados como recursos e, portanto,
também são vistos como arquivos. O que o Inferno faz na verdade é
levar o conceito de recursos como arquivos ao extremo. O acesso a
esses recursos é feito através das operações: open, close, read, write.
As principais vantagens relacionadas a essa abordagem são :
- interface simples e bem definida - Através de operações simples é
possível acessar os recursos e suas funcionalidades uniformemente;
- alta portabilidade - Como todo recurso é visto como um arquivo, a
facilidade na portabilidade torna-se evidente;
- segurança - Essa visão sobre os recursos permite que os aspectos
relacionados a segurança sejam focados no tratamento de arquivos.
P.:Descreva o protocolo de comunicação utilizado entre máquinas no Inferno.
R.:Styx é protocolo para apresentação de recursos utilizado pelo Inferno.
Como todas as mensagens são operações sobre arquivos ( já que tudo no
mundo Inferno/Styx é um arquivo), o protocolo Styx tem um conjunto
muito pequeno de comandos (apenas 13 comandos e um indicador de erro).
O protocolo garante transparência completa de recursos, ou seja,
usuários (desenvolvedores de aplicações) não vêem o protocolo, mas
apenas arquivos.
Ele é acima e independente da camada de comunicação (TCP/IP, ATM, PPP,
infravermelho, etc)
Além disso, é o Styx quem provê :
- visão hierárquica de recursos;
- informações de acesso: permissões, tamanhos e datas de arquivos (recursos);
- semântica para leitura e escrita.
FS,Servers,UNIX
P.: Descreva o sistema de arquivos
padrão do Amoeba.
R.:O sistema de arquivos consiste em
3 servidores: o Bullet Server, que gerência o armazenamento de arquivos, o
Directory Server, que toma conta dos nomes dos arquivos e do gerenciamento de
diretórios, e o Replication Server, que gerencia a replicação de arquivos.
P.:Como o Mach roda seu servidor
Unix? Quais as vantagens dessa abordagem?
R.:O Mach roda o Unix no "user
space", como uma aplicação. As vantagens dessa abordagem são:
1- Por separar o sistema em uma
parte que gerencia recursos (Kernel) e uma que manipula chamadas de sistema
(Unix server), ambas se tornaram mais simples e fáceis de manter;
2- Colocar o Unix no "user
space", tornou-o extremamente portável, deixndo todas as dependências de
arquitetura no Kernel do Mach.
3-Múltiplos sistemas operacionais
podem rodar simultaneamente.
P.:Compare a compatibilidade com
Unix do Amoeba, Mach e Chorus.
R.:No Amoeba a compatibilidade com
Unix é provida ao nível de ao nível de código fonte, baseada no POSIX, mas não
100% completa.
No Mach, o servidor que roda
Unix, provem uma compatibilidade de 100% aos arquivos binários.
O Chorus provem compatibilidade
binária completa com o Sytem V Unix.
COMUNICAÇÃO
P.:Quais são as três primitivas do
kernel que o mecanismo de RPC utiliza em um sistema Amoeba? Descreva
sucintamente o que cada uma faz.
R.:
-get_request: indica que um servidor espera uma mensagem em uma porta
-put_reply: chamada quando um servidor quer respondera um envio
-trans: envio de uma mensagem do cliente para o servidor e a espera pela resposta
P.:Quais são os dois tipos operações de comunicação que são providos pelo Chorus?
R.:Mensagens assíncronas, não havendo garantia de que estas
cheguem ao destino ou qualquer notificação de erro. O outro tipo de
comunicaçõa é através de RPC que bloqueia o processo automaticamente
até que a resposta seja enviada
P.:Cite três Chamadas de gerenciamento de portas e descreva-as.
R.:
-Set_qlimit: Seta o número de mensagens que uma porta pode suportar
-Allocate: Cria uma porta e sua "capability" na lista
-Extract_right: Extrai o n-th "capability de outro processo
EXTRAS
P.: Que outras alternativas existem na área de SO distribuídos além das já
citadas?
R.: Nesta pesquisa foi encontrada uma imensidão de projetos, a maioria
aparamente inacabados ou descontinuados. Certamente é uma área que desperta
muito interesse já há muitos anos, mas ainda existem poucas implementações
maduras e funcionais. E poucas que sejam populares.
Existem várias tentativas ousadas, buscando paradigmas diferente ou níveis
de abstração mais alto para SOs, incluindo SOs baseados em objetos
distribuídos, componentes, agentes, focados em distribuição sobre a Internet,
etc.
Destacamos os sistemas QNX e OpenMosix.
P.: Qual o nicho do QNX e que o caracteriza como um SO distribuído?
R.: O QNX é um sistema operacional voltado principalmente para sistemas
embarcados, comercializado pela QNX Software Systems. Ele é um "Realtime OS"
(suporta aplicações de tempo real), baseado em um arquitetura de microkernel.
O que o caracteriza como um SO distribuído é a tecnologia que eles chamam de
Transparent Distributed Processing (TDP).
O TDP provê um "framework" para conexão dinâmica de recursos de hardware e
software localizados em nós remotos, fornecendo balanceamento de carga e
redundância de forma transparente. Permite indepêndencia de localização,
através de serviços globais de nomes e localização. A camada de transporte
das mensagens funciona sobre a rede TCP/IP, backplanes, e outros tipos de
barramento.
P.: O OpenMosix é um SO distribuído? Que funcionalidades ele oferece,
resumidamente?
R.: Não exatamente. É uma extensão para o kernel linux que fornece uma camada
de gerenciamento que fornece uma imagem única do sistema (Single System
Image), permitindo que aplicações utilizem os recursos de um cluster
transparentemente, sem terem sido originalmente preparadas para isso.
O OpenMosix migra processos de um nó para o outro de forma a balancear a
carga nas máquinas do cluster e evitar o esgotamento de recursos em quaisquer
das máquinas. Migração de threads ainda não é suportado. O acesso aos
arquivos é feito através de um cluster file system. Se um processo faz a
maior parte de seu I/O buscando arquivos de uma máquina remota, ele pode ser
migrado para essa máquina.
Originalmente, o openMosix não suportava aplicações que usam memória
compartilhada, mas já foi implementado um módulo que provê um sistema DSM
(Distributed Shared Memory) quase completo, o migShm. Também não possui uma
tolerância a falhas muito avançada, mas um módulo que faz checkpointing do
estado de processos no linux foi integrado ao openMosix, melhorando esse
aspecto.
Abstrações do Kernel
P.: Todos os 4 sistemas trabalham com processos e
threads. Quais as diferenças de implementação?
R.: No Amoeba, cada processo tem um espaço de
endereçamento único e pode ter uma ou mais threads, cada uma com seu próprio
program counter, registros e pilha.
No Mach os processos tem, além de um espaço de
endereçamento, uma ou mais pilhas. As threads tem apenas o program counter e
seus registros e pertencem obrigatoriamente a apenas um processo.
No Chorus os processos tem um espaço de endereçamento
e cada thread tem um program counter, registros, pilha e ponteiro de pilha.
Além disso, cada thread é independente das outras e podem até rodar em
processadores diferentes.
No DCE os processos dependes da forma como o Sistema
Operacional hospedeiro implementa. As threads podem ser tanto as do próprio
S.O. hospedeiro apenas modificadas para ficarem no padrão do DCE como podem ser
usadas as implementadas pelo DCE. Nesse caso, o próprio DCE pode criar
múltiplas threads a partir de um processo com apenas uma thread.
P.: Como essas threads se comunicam?
R.: Amoeba: Através de mensagens ponto-a-ponto com
send-receive bloqueante ou por mensagens em grupo, com diversos destinatários.
Mach: passagem de mensagens através de portas
gerenciadas como uma fila pelo kernel no próprio kernel.
Chorus: passagem de mensagens através de portas
estilo buffer situadas em cada processo e apenas ele tem acesso a essas
mensagens.
DCE: Processo Cliente faz uma RPC para processo
Servidor que pode ou não retornar uma resposta.
P.: O quê de diferente cada Sistema implementa?
R.: Amoeba: Threads podem alocar ou desalocar blocos de
memória chamados segmentos. Cada processo possui ao menos um segmento, mas pode
ter diversos. Implementa Drivers para todos os dispositivos de I/O e os
processos conversam com os Drivers e não com os dispositivos.
Mach: Objetos de Memória: Estrutura de dados que
podem ser mapeadas para um espaço de endereçamento de um processo e que são a
base do Sistema de Memória Virtual. Através delas o kernel, na presença de um
page fault, pode mandar uma mensagem a um servidor no nível do usuário para
fazer a busca da página faltante da memória principal.
Chorus: Tem um nomeador que gera um identificador
único de 64 bits para cada recurso do sistema, seja um processo, uma porta,
etc, que garantidamente não será repetido por nenhuma outra máquina da rede.
Isso ajuda a descobrir quem enviou o pedido pela rede.
DCE: Serviço de tempo para sincronizar todos os
computadores da rede;
Serviço de diretório para guardar a localização dos
recursos;
Serviço de segurança para proteger qualquer tipo de
recurso a fim de apenas quem tiver autorização poder acessar;
Serviço de Arquivos Distribuídos que podem estar em
qualquer lugar do mundo e sua localização é transparente para o processo. Pode
ser usado sobre o sistema de arquivos do SisOp onde o DCE foi instalado ou usar
o do próprio DCE no lugar deste.