Sistemas.

 

 SISTEMAS DISTRIBUÍDOS

 
* DEFINIÇÃO

 
UM CONJUNTO DE UNIDADES DE PROCESSAMENTO INDEPENDENTE
QUE DA A IMPRESSÃO AO USUÁRIO QUE TODA A APLICAÇÃO É
GERENCIADA POR UM SISTEMA ÚNICO.


*OBJETIVO

 
É CRIAR A ILUSÃO QUE A APLICAÇÃO (OU AS APLICAÇÕES) ESTÁ
SENDO PROCESSADA EM UM ÚNICO SISTEMA

.
*CARACTERÍSTICAS

 
=> OTIMIZAÇÃO
=> TRANSPARÊNCIA


*TRANSPARÊNCIA DE ACESSO

 
QUANDO TEMOS A POSSIBILIDADE DE ACESSAR E OU INTERAGIR COM
UM DADO.


*TRANSPARÊNCIA DE LOCALIZAÇÃO

 
OS RECURSOS, DADOS E DISPOSITIVOS QUE ESTÃO
COMPARTILHADOS E ACESSADOS, NÃO PRECISAM E NÃO DEVEM
CONTER NENHUMA INFORMAÇÃO RELEVANTE QUE FORNEÇA AO
USUÁRIO A LOCALIZAÇÃO OU REGIÃO QUE ESSE RECURSO ESTA
CONTIDO.


*TRANSPARÊNCIA DE MIGRAÇÃO

 
QUANDO UM RECURSO É RE-ALOCADO EM OUTRO SERVIDOR.


*TRANSPARÊNCIA DE REPLICAÇÃO

 
POPULARMENTE DITO COMO SISTEMA DE GERENCIAMENTO DE BANCO
DE DADOS RELACIONAIS ONDE PODE SER FEITA A REDUNDÂNCIA OU
BALANÇO DE DADOS ENTRE VÁRIOS SERVIDORES DE BANCO DE
DADOS.


*TRANSPARÊNCIA EM RELAÇÃO À FALHAS

 
EM CASO DE FALHAS É ESSENCIAL QUE O SISTEMA SEJA CAPAZ O
SUFICIENTE PARA GERENCIAR SEM QUE ISSO PASSE A ESPALHAR
PARA TODO O SISTEMA DE COMPARTILHAMENTO.


*EXEMPLO DE SISTEMA DISTRIBUÍDO

 
A PRÓPRIA INTERNET. TEMOS UM CONJUNTO DE COMPUTADORES
INDEPENDENTES QUE SE INTERLIGAM MUTUAMENTE COM O OBJETIVO
DE COMPARTILHAR RECURSOS, DANDO A IMPRESSÃO AO USUÁRIO
QUE TUDO ISSO É UM ÚNICO SISTEMA.


*ORGANIZAÇÃO

 
ORGANIZAR A INTERAÇÃO ENTRE CADA COMPUTADOR É PRIMORDIAL.
VISANDO PODER USAR O MAIOR NÚMERO POSSÍVEL DE MÁQUINAS E
TIPOS DE COMPUTADORES, O PROTOCOLO OU CANAL DE
COMUNICAÇÃO NÃO PODE CONTER OU USAR NENHUMA INFORMAÇÃO
QUE POSSA NÃO SER ENTENDIDA POR CERTAS MÁQUINAS. CUIDADOS
ESPECIAIS TAMBÉM DEVEM SER TOMADOS PARA QUE AS MENSAGENS
SEJAM ENTREGUES CORRETAMENTE E QUE AS MENSAGENS
INVÁLIDAS SEJAM REJEITADAS, CASO CONTRÁRIO, LEVARIA O
SISTEMA A CAIR OU ATÉ O RESTO DA REDE.
OUTRO FATOR DE IMPORTÂNCIA É A HABILIDADE DE MANDAR
SOFTWARES PARA OUTROS COMPUTADORES DE UMA MANEIRA
PORTÁVEL DE TAL FORMA QUE ELE POSSA EXECUTAR E INTERAGIR
COM A REDE EXISTENTE. ISSO PODE NÃO SER POSSÍVEL OU PRÁTICO
QUANDO USANDO HARDWARE E RECURSOS DIFERENTES, ONDE CADA
CASO DEVE SER TRATADO SEPARADAMENTE COM CROSS-COMPILING
OU REESCREVENDO SOFTWARE.


*CARACTERÍSTICAS

 
-COMPARTILHAMENTO DE RECURSOS
-ABERTURA
-CONCORRÊNCIA
-ESCALABILIDADE
-ROBUSTEZ
-TOLERÂNCIA À FALHAS
-DISPONIBILIDADE
-TRANSPARÊNCIA


*COMPARTILHAMENTO DE RECURSOS

 
“RECURSOS” CARACTERIZA O CONJUNTO DE ELEMENTOS QUE PODEM
SER COMPARTILHADO DE FORMA ÚTIL EM UM SISTEMA DISTRIBUÍDO:
-HW (HARDWARE), IMPRESSORAS, DISCOS E ETC.
SW (SOFTWARE), ARQUIVOS, BANCO DE DADOS, COMPILADORES E
ETC.
-O COMPARTILHAMENTO REDUZ CUSTOS
-RECURSOS FISICAMENTE ENCAPSULADOS EM UM DOS
COMPUTADORES DE UM SD (SISTEMA DISTRIBUÍDO) SÓ PODEM SER
ACESSADOS POR OUTROS COMPUTADORES ATRAVÉS DE
COMUNICAÇÃO
-CADA CONJUNTO DE RECURSOS DE UM TIPO PARTICULAR DEVE SER
GERENCIADO POR UM PROGRAMA (GERENCIADOR DE RECURSOS)
QUE OFERECE UMA INTERFACE DE COMUNICAÇÃO
-UMA INTERFACE DE COMUNICAÇÃO EM UM GERENCIADOR DE
RECURSOS PERMITE QUE OS MESMO SEJAM ACESSADOS
-HAVERÁ UM ESQUEMA DE NOMEAÇÃO PARA PERMITIR QUE
RECURSOS INDIVIDUAIS SEJAM ACESSADOS A PARTIR DE QUALQUER
LOCALIZAÇÃO
-MAPEAMENTO DE NOMES DE RECURSOS EM ENDEREÇOS DE
COMUNICAÇÃO
-MANIPULADOS E ATUALIZADOS
-HÁ NECESSIDADE DE SINCRONIZAÇÃO DE ACESSO CONCORRENTE
PARA GARANTIR CONSISTÊNCIA (CONTROLE DE CONCORRÊNCIA)


*ABERTURA

 
DETERMINA-SE UM SD ESTENDIDO DE VÁRIAS MANEIRAS:
-EXTENSÃO POR HW
-EXTENSÃO POR SW
-SEM INTERRUPÇÃO OU DUPLICAÇÃO DE SERVIÇOS EXISTENTES
-CONSEGUIDA ATRAVÉS DA PUBLICAÇÃO DE INTERFACES TORNADOAS
DISPONÍVEIS PARA DESENVOLVEDORES DE SOFTWARE
-UNIX É UM EXEMPLO DE SISTEMA ABERTO


*CONCORRÊNCIA

 
CONCORRÊNCIA E EXECUÇÃO PARALELA EXISTEM EM UM SD POR
CAUSA DE:
-ATIVIDADES SEPARADAS DE USUÁRIOS
-INDEPENDÊNCIA DE RECURSOS
-LOCALIZAÇÃO DE PROCESSOS EM COMPUTADORES SEPARADOS


*ESCALABILIDADE

 
FILOSOFIA DE PROJETO: SE A DEMANDA POR UM RECURSO
AUMENTAR, DEVE SER POSSÍVEL ESTENDER O SISTEMA PARA
ATENDER À MESMA.
-SD, DEVEM SER CAPAZES DE OPERAR EFETIVAMENTE E
EFICIENTEMENTE EM ESCALAS DIFERENTES
-SW DE SISTEMA DE APLICAÇÃO NÃO PRECISA MUDAR QUANDO A
ESCALA DO SISTEMA MUDA
-O PROCESSAMENTO DEVE SER INDEPENDENTE DO TAMANHO DA
REDE.
EXEMPLOS DE LIMITAÇÕES DE ESCALABILIDADE:
CONCEITOS EXEMPLOS
SERVIÇOS CENTRALIZADOS UM ÚNICO SERVIDOR PARA TODOS OS USUÁRIOS
DADOS CENTRALIZADOS UMA ÚNICA LISTA TELEFÔNICA ON-LINE
ALGORITMOS CENTRALIZADOS ROTEAMENTO BASEADO EM INFORMAÇÃO COMPLETA
ESSE CONCEITO NOS IMPEDE QUE O SERVIÇO SEJA EXECUTADO DE
FORMA QUE TENHAMOS UM ALTO ÍNDICE DE DESEMPENHO E QUE NÃO
OCORRA FALHAS AO ACESSO DAS INFORMAÇÕES.


*TOLERÂNCIA À FALHAS

 
EM UM SD, O HW É ESSENCIAL PARA A OPERAÇÃO CONTÍNUA DE
APLICAÇÕES CRÍTICAS E PODE SER REPLICADO.
ESTE HW REDUNDANTE PODE SER USADO PARA ATIVIDADES NÃO
CRÍTICAS QUANDO NÃO HÁ FALHAS.
O SW PODE SER PROJETADO PARA RECUPERAR O ESTADO DE DADOS
PERMANENTES QUANDO UMA FALHA É DETECTADA.


*TIPOS DE FALHAS

 
-TRANSIENTE: PODE ACONTECER UMA VEZ
-INTERMITENTE: ACONTECE DE TEMPOS EM TEMPOS
-PERMANENTE: ACONTECE SEMPRE


*DISPONIBILIDADE

 
QUANDO UM COMPONENTE FALHA EM UM SD, APENAS A PARTE QUE
USA ESTE COMPONENTE É AFETADA, ALEM DISSO, O COMPONENTE
PODE SER REINICIALIZADO EM OUTRO COMPUTADOR.
ASSIM UM SD TEM MAIS PARTES DISPONÍVEIS POR MAIS TEMPO

.
*TRANSPARÊNCIA

 
ESCONDE DO USUÁRIO E DO PROGRAMADOR DE APLICAÇÃO A
SEPARAÇÃO DE COMPONENTES EM UM SD.
O SISTEMA É PERCEBIDO COMO UM TODO, EM VEZ DE UMA COLEÇÃO
DE COMPONENTES INDEPENDENTES.
OS TIPOS MAIS COMUNS DE TRANSPARÊNCIA FORAM CITADOS ACIMA.


*INFRA-ESTRUTURA BÁSICA PARA SISTEMAS DISTRIBUÍDOS

 
-REDE COM FIO: VELOZES E CONFIÁVEIS
-REDE SEM FIO: CADA VEZ MAIS VELOZES E AINDA POUCO CONFIÁVEIS
-HARDWARE E SOFTWARE


*VANTAGENS

 
-ECONOMIA: MELHOR RELAÇÃO CUSTO E DESEMPENHO
-EFICIÊNCIA: MAIOR PODER TOTAL DE COMPUTAÇÃO
-DISTRIBUIÇÃO INERENTE: MÁQUINAS ESPACIALMENTE SEPARADAS
-CONFIABILIDADE: SE UMA MÁQUINA FALHA, O SISTEMA COMO UM
TODO PODE AINDA SOBREVIVER
-CRESCIMENTO INCREMENTAL: PODER COMPUTACIONAL ADICIONADO
EM INCREMENTOS


*DESVANTAGENS

 
-POUCO SW DISPONÍVEL AINDA
-NETWORKING: A REDE PODE CAUSAR PROBLEMAS
-SEGURANÇA: VÁRIAS PORTAS DE ACESSO ABERTAS
1. CLASSIFICAÇÃO DOS SISTEMAS OPERACIONAIS
OS SISTEMA OPERACIONAIS PODEM SER CLASSIFICADOS DE ACORDO
COM SEU GRAU DE ACOPLAMENTO, A SABER:
ı REDES
ı AUTÔMATOS
ı CENTRALIZADOS
ı DISTRIBUÍDOS
PARA CLASSIFICÁ-LOS DESTE MODO, SÃO LEVADOS EM
CONSIDERAÇÃO OS SEGUINTES FATORES:
ı INTEROPERABILIDADE
ı TRANSPARÊNCIA
ı AUTONOMIA
APENAS CITAREMOS AS FUNCIONALIDADES DE ALGUNS SISTEMAS
REFERENCIADOS ACIMA, UMA VEZ QUE A ÊNFASE SERÁ DADA AOS
SISTEMAS DISTRIBUÍDOS.


1.1. SISTEMAS CENTRALIZADOS

 
CARACTERÍSTICAS:
SÃO FORTEMENTE ACOPLADOS, SÃO DO TIPO MONOLÍTICO, OU SEJA
NÃO HÁ O PARTICIONAMENTO DO NÚCLEO. NOS SISTEMAS
MONOLÍTICOS OS SERVIÇOS DO SISTEMA E DO NÚCLEO FAZEM PARTE
DE UM MESMO PROGRAMA.


1.2. SISTEMAS EM REDE

 
CARACTERÍSTICAS:
É UM MULTICOMPUTADOR FRACAMENTE ACOPLADO NO QUAL NÃO
EXISTE NENHUM TIPO DE CONTROLE DIRETO DE UMA MÁQUINA SOBRE
AS OUTRAS E NO QUAL A COMUNICAÇÃO ENTRE AS OUTRAS
MÁQUINAS É BEM MAIS LENTA QUE DENTRO DE UMA DADA MÁQUINA.
O COMPATILHAMENTO DE RECURSOS É O OBJETIVO PRINCIPAL DOS
SISTEMAS EM REDE.


1.3. SISTEMAS AUTÔMATOS

 
TAIS SISTEMAS MANTÉM AS NOÇÕES DE TRANSPARÊNCIA E
INTEROPERABILIDADE QUE EXISTEM NOS SISTEMAS DISTRIBUÍDOS,
MAS ABOLEM A IMPRESSÃO DE QUE EXISTE SOMENTE UM USUÁRIO NO
SISTEMA.


1.4. SISTEMAS DISTRIBUÍDOS

 
SÃO AQUELES QUE GERENCIAM AS ATIVIDADES E OS RECURSOS
DISTRIBUÍDOS, POSSIBILITANDO UM PROCESSAMENTO
DESCENTRALIZADO E MELHORANDO O DESEMPENHO DO SISTEMA.
OUTRA DEFINIÇÃO: UM CONJUNTO DE PROCESSOS QUE SÃO
EXECUTADOS DE FORMA CONCORRENTE, CADA UM DOS QUAIS
ACESSANDO UM SUBCONJUNTO DE RECEURSOS DO SISTEMA POR
MEIO DE UM MECANISMO DE TROCA DE MENSAGENS ATRAVÉS DE UMA
REDE DE COMUNICAÇÃO, QUE NEM SEMPRE É CONFIÁVEL.
AS VANTAGENS DE UM SISTEMA DISTRIBUÍDO EM RELAÇÃO AOS
OUTROS É SUA MAIOR DISPONIBILIDADE, GERALMENTE RESULTANTE
DA REDUNDÂNCIA DE SEUS COMPONENTES SISTEMA DISTRIBUÍDO
SISTEMAS EM REDE


2. O QUE SÃO THREADS?

 
DEFINIÇÃO BÁSICA:
“FLUXO DE CONTROLE SEQÜENCIAL ISOLADO DENTRO DE UM
PROGRAMA.”
OUTRA DENOMINAÇÃO: LIGHTWEIGHT PROCESSES (PROCESSOS PESO
PENA) OU PROCESSOS LEVES QUE COMPARTILHAM O ESPAÇO DE
ENDEREÇOS LÓGICOS.
PROGRAMAS MULTITHREADED: MÚLTIPLOS THREADS CONCORRENTES
DE EXECUÇÃO NUM ÚNICO PROGRAMA, REALIZANDO VÁRIAS TAREFAS
“AO MESMO” TEMPO.
EXEMPLO:
PROGRAMA DO USUÁRIO + COLETA DE LIXO DIFERENTES THREADS
PODEM EXECUTAR EM DIFERENTES PROCESSADORES, SE
DISPONÍVEIS, OU COMPARTILHAR UM PROCESSADOR ÚNICO
DIFERENTES THREADS NO MESMO PROGRAMA COMPARTILHAM UM
AMBIENTE GLOBAL (MEMÓRIA, PROCESSADOR, REGISTRADORES,
ETC.)


2.1. QUAIS AS FUNCIONALIDADES DOS THREADS?

 
THREADS PERMITEM QUE UM PROGRAMA SIMPLES POSSA EXECUTAR
VÁRIAS TAREFAS DIFERENTES AO MESMO TEMPO,
INDEPENDENTEMENTE UMAS DAS OUTRAS.
QUANDO EXECUTADO, UM PROGRAMA PODE GERAR RAMIFICAÇÕES
NO SEU FLUXO DE CONTROLE. TAIS RAMIFICAÇÕES (THREADS) TEM
SEUS ESTADOS LOCAIS INDIVIDUAIS, MAS PERMANECEM ASSOCIADOS
AO PROCESSO QUE AS GEROU.
CADA UM DESSES PROCESSOS POSSUI UM TCB (THREAD CONTROL
BLOCKS), SEMELHANTE AO PCB DOS PROCESSOS. COMO OS THREADS
SÃO PROCESSOS LEVES, ASSOCIADOS AOS PROCESSOS QUE OS
GEROU, ESSES TCB POSSUEM INFORMAÇÕES LOCAIS REDUZIDAS
(CONTADOR DE PROGRAMA, APONTADORES DE PILHA E CONJUNTO DE
REGISTRADORES).
A MUDANÇA DE CONTEXTO DE UM THREAD EM RELAÇÃO A UM
PROCESSO É MAIS RÁPIDA POIS OS THREADS ALÉM POSSUEM
INFORMAÇÕES LOCAIS, COMPARTILHAM O RESTANTE DAS
INFORMAÇÕES COM OS PROCESSOS QUE OS GEROU.
OS PROCESSOS FUNCIONAM COMO MÁQUINAS VIRTUAIS, POIS
COMPARTILHAM SEU ESPAÇO DE ENDEREÇAMENTO COM OS
THREADS.


2.2. ONDE SÃO IMPLEMENTADO OS THREADS?

 
AS THREADS SÃO IMPLEMENTADAS NO ESPAÇO DO USUÁRIO.
NESTE CASO O CONTROLE DE PROCESSOS É FEITO DIRETAMENTE
PELO SISTEMA OPERACIONAL, MAS OS THREADS SÃO CONTROLADOS
POR PROCEDIMENTOS EM TEMPO DE EXECUÇÃO QUE SERVE COMO
INTERFACE ENTRE A MÁQUINA VIRTUAL (PROCESSOS) ONDE RODAM
OS THREADS E O SISTEMA OPERACIONAL.
OBS: NESTE CASO, O SISTEMA OPERACIONAL NÃO “ENXERGA” OS
THREADS, POIS ELES SÃO IMPLEMENTADOS NO ESPAÇO DO USUÁRIO.
SENDO SUBMISSOS AO PROCESSO QUE OS CRIOU.
OS THREADS NÃO PODEM USUFRUIR DO SISTEMA DE INTERRUPÇÕES
DO SISTEMA OPERACIONAIS E PORTANTO SÃO NÃO-PREEMPTÍVEIS.


VANTAGENS


ı AGILIDADE
ı O GERENCIAMENTO É MENOS COMPLICADO


DESVANTAGENS
ı NÃO PREEMPÇÃO
ı IMPEDIDOS DE UTILIZAR INTERRUPÇÕES DO SISTEMA OPERACIONAL


EFICIÊNCIA
SE O OBJETIVO É EFICIÊNCIA, ENTÃO OS THREADS PODEM SER
IMPLEMENTADOS NO NÚCLEO DO SISTEMA OPERACIONAL, PODENDO
SER VISTOS PELO SO E USUFRUINDO DE SEU SISTEMA DE
INTERRUPÇÕES.
PORTANTO PASSAM A SEREM PREEMPTÍVEIS.
NESSE SENTIDO OS THREADS PASSAM A SER TRATADOS COMO
PROCESSOS, POSSIBILITANDO O BLOQUEIO DE OUTROS THREADS E
TAMBÉM EFICIÊNCIA NO ESCALONAMENTO.
O LEITOR DEVE NOTAR QUE AGORA NÃO HÁ NECESSIDADE DE
INTERROMPER O PROCESSO QUE O GEROU (PROCESSO PAI), UMA VEZ
QUE O THREAD “É UM PROCESSO”.


COM ISSO O SISTEMA OPERACIONAL PODE INTERROMPER UM THREAD
SEM INTERROMPER O PROCESSO PAI, E TAMBÉM OUTRAS
RAMIFICAÇÕES EM EXECUÇÃO. O THREAD TAMBÉM IRÁ COMPETIR
IGUALMENTE COM OS PROCESSOS OS CICLOS DO PROCESSADOR.
VANTAGENS DE IMPLEMENTAÇÃO NO NÚCLEO:
ı MAIOR AUTONOMIA DOS THREADS


DESVANTAGENS

 
ı SISTEMA PERDE EM PORTABILIDADE, AS MUDANÇAS DE CONTEXTO
DOS THREADS TEM AGORA A MESMA COMPLEXIBILIDADE DOS
PROCESSOS E A CONCORRÊNCIA FICA REDUZIDA A DOIS NÍVEIS
(THREADS E PROCESSOS).


QUANDO UM THREAD DEIXA DE EXISTIR?

 
ı QUANDO TERMINAM SUA EXECUÇÃO
ı QUANDO O TEMPO ALOCADO A SEU PROCESSO PAI FOI ESGOTADO
ı OU SE SOLICITOU ALGUM RECURSO DO SISTEMA
APLICAÇÕES MULTITHREAD PROGRAMAS MULTITHREAD SÃO
PROGRAMAS QUE CONTÉM VÁRIAS THREADS, EXECUTANDO TAREFAS
DISTINTAS, SIMULTANEAMENTE. O BROWSER HOTJAVA,
IMPLEMENTADO EM JAVA, É UM EXEMPLO. DA MESMA FORMA QUE O
NETSCAPE, O HOTJAVA PODERÁ FAZER UM SCROLL EM UMA PÁGINA
ENQUANTO CARREGA UMA IMAGEM OU EXECUTA VÁRIOS APPLETS AO
MESMO TEMPO.


EXEMPLOS:


PROGRAMAÇÃO REATIVA : APLICAÇÃO RESPONDE A EVENTOS DE
ENTRADA.


EXEMPLO:

 
INTERFACES COM O USUÁRIO, ONDE CADA EVENTO CORRESPONDE A
UMA AÇÃO PROGRAMAÇÃO INTERATIVA: UMA TAREFA PARA FAZER
ALGUMA INTERAÇÃO COM O USUÁRIO, OUTRA PARA EXIBIR
MENSAGENS, OUTRA PARA FAZER ANIMAÇÃO, ETC...
PARALELISMO FÍSICO/ DISTRIBUIÇÃO: PARA TIRAR VANTAGEM DE
MÚLTIPLAS CPUS CENTRALIZADAS OU DISTRIBUÍDAS

 

 

 

 

 

 

Introdução


O que é um sistema distribuído?
É uma coleção de computadores independentes que aparenta ser um único computador aos seus usuários.

Conceitos relacionados a hardware e software, respectivamente.
Exemplos: Rede com estações de trabalho e processadores stand-alone alocados por demanda com um sistema de arquivos unificado.
Sistema bancário com terminais espalhados geograficamente e um único banco de dados.

Como se tornou possível o surgimento desses sistemas?
Computadores mais rápidos e baratos e o surgimento de redes de computadores de alta-velocidade

Objetivos

Vantagens de sistemas distribuídos sobre sistemas centralizados.

Lei de Grosch – O poder de computação de um computador é proporcional ao quadrado do seu preço. (Aplicável a mainframes).

No caso de microprocessadores, é mais barato se comprar vários processadores e montá-los em um sistema multi-processador. (preço)

Em alguns casos, é teoricamente impossível de se construir um computador centralizado que possa ser comparado a um sistema distribuído com uma grande quantidade de processadores. (velocidade)

Algumas aplicações são inerentemente distribuídas - sistema de uma cadeia de lojas, jogos ou outras aplicações cooperativas. (distributividade inerente)

Maior confiabilidade, útil em aplicações de alto risco. (confiabilidade)

Crescimento incremental – acaba com necessidade da compra de mainframes cada vez maiores, agora o sistema pode ser trocado aos poucos. (crescimento incremental)

Vantagens de sistemas distribuídos sobre micros independentes:
Compartilhamento de dados. (colaboração e preço)
Compartilhamento de dispositivos. (preço)
Comunicação.
Mistura de computadores pessoais e compartilhados pode permitir uma distribuição de tarefas mais eficiente. (flexibilidade)

Desvantagens de sistemas distribuídos:
Software – sistemas operacionais, linguagens de programação e aplicações.
Comunicação – tratamento e recuperação de mensagens. Melhoria da rede pode acarretar em custos altos.
Segurança – Compartilhamento de dados implica em esquemas especiais para proteção de dados sigilosos.

Ideal – Pessoas trabalhando juntas e compartilhando informações sem se preocupar com distribuição física dos dados, máquinas e outros usuários.

Conceitos de Hardware.


Tanenbaum propõe a divisão de máquinas MIMD (múltiplas instruções e múltiplos dados) em multiprocessadores, que usam memória compartilhada e multicomputadores que possuem somente memória própria. Exemplos de multiprocessadores e multicomputadores. Outra subdivisão dessa classificação é em sistemas com barramento ou switches (ligações ponto-a-ponto). Outro ponto da taxonomia de Tanenbaum é a caracterização dos sistemas pelo grau de ligação entre as máquinas, que podem ser fortemente acopladas ou fracamente acopladas. Máquinas fortemente acopladas possuem um baixo retardo no envio de mensagens e uma alta taxa de transmissão, o oposto de máquinas fracamente acopladas. Geralmente, sistemas fortemente acoplados são usados como sistemas paralelos, trabalhando em um único problema enquanto que sistemas fracamente acoplados são utilizados como um sistema distribuído, trabalhando em diversos problemas. Geralmente multiprocessadores são sistemas fortemente acoplados enquanto que multicomputadores são sistemas fracamente acoplados.




Multiprocessadores baseados em barramento.

Consiste em um número de CPUs (que pode ter alguma memória local - cache) ligadas através de um barramento. Sem caches locais, o barramento tende a ser sobrecarregado rapidamente. Solução: adicionar caches locais. Novo problema: A coerência dos dados que estão armazenados em cada cache é fundamental.

Cache write-trough: Toda escrita na cache acarreta em escrita na memória. Escritas sempre geram tráfego no barramento, enquanto que leituras só geram tráfego quando a palavra não está na cache (cache miss). Para manter a consistência, as outras caches escutam o barramento e invalidam as posições que são escritas por outras caches na memória (snoopy caches). Um design deste tipo é coerente e invisível ao programador.
É um esquema difícil de funcionar com um grande número de processadores.

Multiprocessadores com switch.

Podem ser usados com barras cruzadas ou com pontos de cruzamento. Memórias são localizadas de um lado e os processadores do outro. Caminho em uma comunicação é switched e a memória em questão tem o acesso bloqueado para os outros processadores.
Número de switches pode tornar custo do sistema proibitivo. Rede ômega diminui número de switches necessários de n2 para n log2n. O retardo em redes ômegas com muitos níveis pode se tornar considerável, ou o seu custo caso switches ultra-rápidos sejam utilizados.

Solução: contruir um sistema que use uma hierarquia de memórias. Um design deste tipo é o NonUniform Memory Access (NUMA) onde cada CPU tem uma memória local além de memórias que servem a várias CPUs. O retardo diminui, mas a localização de software se torna crucial para o bom funcionamento do sistema.

Conclusão: construir um grande sistema de multiprocessadores fortemente acoplados com memória compartilhada é possível, mas é muito caro e complicado.
Multicomputadores baseados em barramento.

Conjunto de CPUs com memória local trocando mensagens através de um barramento. Rede local ou CPUs conectadas com um barramento rápido.

Multicomputadores com switch.

CPUs tem um certo número de conexões para outras CPUs e mensagens são trocadas através de CPUs que intermediam a comunicação quando necessário. Abaixo estão as topologias de grid e hipercubo. No grid, número de conexões e número máximo de passos em uma comunicação cresce com a raiz quadrada do número de CPUs enquanto que no hipercubo esse número cresce com o logaritmo do tamanho. Atualmente já são usados grids com dezenas de milhares CPUs. A Teragrid conecta milhares de computadores usando uma rede de 40 Gb/s.

Conceitos de Software
A imagem que o sistema apresenta aos usuários é quase que completamente determinada pelo sistema operacional.
Software fracamente acoplado (loosely-coupled) permite que máquinas e usuários sejam fundamentalmente independentes dos outros. Exemplo: LAN.
Software fortemente acoplado (tightly-coupled) funciona como uma única máquina. Exemplo: Computador multiprocessador que executa um programa de xadrez em paralelo.
Existem 8 possíveis combinações de hardware e software, entretanto somente quatro são distinguíveis pelos usuários já que os mesmos não tem a noção de qual tecnologia de interconexão está sendo utilizada (com barramento ou switches). Das 4 opções restantes, a combinação hardware fortemente acoplado (tightly-coupled) e software fracamente acoplado (loosely-coupled) não faz sentido, já que se estaria indo de encontro ao objetivo principal da construção de um SD.

Sistemas operacionais de rede
Loosely coupled – comunicação é explicitamente solicitada pelo usuário e se dá através de troca de mensagens. A distribuição do sistema é clara para o usuário.
rlogin (ssh), rcp (scp).
Servidores de arquivos fornecem arquivos a máquinas clientes.
Usuários diferentes tem visões diferentes do sistema, devido a diferenças em como os sistemas de arquivo locais estão organizados, quais dispositivos locais as máquinas possuem, etc.
Máquinas podem rodar diferentes versões de um mesmo SO ou até diferentes SOs desde que os protocolos de comunicação e serviços sejam usados por todas as máquinas. A “coordenação” (mínima) de serviços entre as máquinas é feita através a aderência aos protocolos.

Sistemas distribuídos verdadeiros
As vezes são chamados de sistemas operacionais distribuídos. Software fortemente acoplado (tightly-coupled) em um hardware fracamente acoplado (loosely-coupled). O objetivo é a criação de uma ilusão para os usuários que o sistema de multicomputadores funciona como uma grande máquina de tempo compartilhado. As vezes são referenciados como sistemas de imagem única ou uniprocessador virtual.
Características de SDs:
Sistema de comunicação interprocessos único, independente se os dois processos estão localizados na mesma máquina ou não.
Esquema de proteção global.
Gerenciamento de processos único, isto é, como eles são criados, destruídos, iniciados ou parados. A idéia usada nos sistemas operacionais de rede de se estabelecer protocolos para a comunicação cliente-servidor não é suficiente. Deve haver um único conjunto de chamadas de sistema em todas as máquinas e as chamadas devem ser projetadas levando em conta o ambiente distribuído.
Sistema de arquivos deve ter a mesma visão e regras em todas as máquinas. Segurança deve ser implementada em relação aos usuários e não as máquinas.
Geralmente, o mesmo núcleo (kernel) roda em todas as máquinas, já que os mesmos implementam as mesmas funções e chamadas. Entretanto cada núcleo pode ter um controle razoável sobre os recursos locais, por exemplo, no gerenciamento de memória, swapping, ou até escalonamento de processos, no caso de uma CPU possuir mais de um processo sendo executado.

Sistemas multiprocessadores de tempo compartilhado
Software fortemente acoplado (tightly-coupled) em um sistema fortemente acoplado (tightly-coupled). Exemplo: multiprocessadores rodando Unix. Implementação mais simples que um verdadeiro sistema distribuído devido ao projeto do SO poder ser centralizado. Único sistema de arquivos, e fila de execução, que é mantida em um espaço de memória compartilhada. Somente uma cópia do SO é executada, ao contrário dos outros dois tipos de sistema.
Como nenhuma CPU possui memória local e todos os programas são armazenados em memória global compartilhada. Teoricamente um processo que seja executado por um longo período passaria aproximadamente o mesmo tempo sendo executado em cada CPU do sistema, entretanto é preferível a execução contínua na mesma CPU (caso esteja disponível) devido a pater do espaço de endereçamento do processo permanecer na cache da CPU.
Processos bloqueados esperando por E/S podem ser suspensos ou marcados como esperando (busy waiting), dependendo da carga total do sistema.
Implementa um sistema de arquivos tradicional.

Questões de Projeto

1- Transparência.

O objetivo final é passar a impressão de um sistema único aos usuários, logo a transparência é o aspecto mais importante em SOD. Transparência pode ser atingida em dois níveis: Escondendo-se a distribuição dos usuários e escondendo-se a distribuição dos programas (muito mais difícil). Qual o significado de tranparência?

Transparência de Acesso – Esconde as diferenças de representação de dados e como os recursos são acessados.
Transparência de localização – Os usuários não sabem onde os recursos estâo localizados.
Transparência de migração – Recursos podem ser movidos dentro do sistema sem que os usuários percebam.
Transparência de relocação – Mudança de local de um recurso é transparente aos usuários.
Transparência de replicação – Usuários não sabem quantas cópias de um programa ou arquivo existem.
Transparência de concorrência – Vários usuários dividem recursos sem saber.
Transparência de paralelismo – Atividades ocorrem em paralelo ser que os usuários saibam. Muito complicado. Geralmente o usuário tem que programar sua aplicação para que ela tome vantagem do paralelismo do sistema.


2- Flexibilidade.

Utilização de núcleos monolíticos ou de micro-núcleos associados com servidores a nível de usuário.
O núcleo monolítico é basicamente um SO com aplicações de conexão via rede e a integração de serviços remotos. Sistemas adaptados do Unix utilizam essa abordagem, pois o Unix usa um núcleo monolítico.

Os micro-núcleos são mais flexíveis e implementam quatro serviços:
1. Um mecanismo de comunicação inter-processo.
2. Algum gerenciamento de memória.
3. Um pouco de gerenciamento de baixo-nível de processos e escalonamento.
4.    Entrada e saída de baixo-nível.

A vantagem do micro-núcleo é que é altamente modular: existem interfaces bem definidas para cada serviço e cada serviço é igualmente acessível para cada usuário independente da localização. Também facilita a implementação, instalação e depuração de novos serviços - flexibilidade. O teste de um novo serviço não acarreta em uma recompilação e reinicialização do núcleo. Usuários que não estão satisfeitos com os serviços podem implementar os seus próprios serviços.




Pode-se ter mais de um servidor de arquivos, com cada um funcionando com um formato.
As únicas vantagens em potencial dos núcleos monolíticos são a performance e o custo inicial, no entanto um estudo experimental comparando o Sprite com o Amoeba não mostrou diferenças significativas em performance e o vantagem de custo inicial do núcleo monolítico tende a desaparecer a medida que serviços vão sendo implementados e/ou atualizados.

3- Confiabilidade.

Um dos objetivos originais em se construir SODs era o de se obter um sistema mais confiável que sistemas com um único processador. A idéia e que se uma máquina quebra, outra máquina do sistema pode assumir as suas funções. Teoricamente, a confiabilidade total do sistema seria um OU das confiabilidades dos componentes.
“Um sistema distribuído é um sistema onde eu não consigo trabalhar porque alguma máquina na qual  eu nunca ouvi falar não está funcionando” Leslie Lamport.

Aspectos de confiabilidade:
1. Disponibilidade (availability). Replicação de dados pode melhorar disponibilidade.
2.    Segurança. Mais problemático do que em sistemas uniprocessador.
3.    Tolerância a falhas. É desejável que a ocorrência de falhas seja transparente aos usuários. Servidores cooperativos podem ser usados para este fim.

4- Performance.

Problema: comunicação entre CPUs (essencial em um SD) é bem mais lenta que execução nas CPUs, devido ao overhead de protocolos. Reduzir o número de mensagens? Seria bom se isso não afetasse a execução paralela de processos, além da confiabilidade.
Uso de granularidade de paralelismo na alocação de processos. Processos com paralelismo fine-grained, isto é, com um grande número de pequenas computações devem ser executados localmente enquanto que os coarse-grained, com grandes computações e pouca interação e dados são mais adequados a execução em paralelo.

5- Capacidade de expansão (scalability).

A maioria dos SDs são projetados para trabalhar com algumas centenas de CPUs. Soluções viáveis para sistemas com 200 máquinas podem falhar bisonhamente para um sistema com 200.000.000 máquinas.
Arquiteto do sistema deve evitar tabelas (catálogo telefônico), componentes (servidor de correio eletrônico) e algoritmos (que necessitem de um servidor centralizado) centralizados.
Algoritmos descentralizados tem as seguintes características:
1.    Nenhuma máquina tem informação completa sobre o estado do sistema.
2.    Máquinas tomam decisões baseadas somente em informações locais.
3.    A quebra de uma máquina não faz com que o algoritmo falhe.
4.    Não trabalham com nenhuma suposição de que existe um clock global.








FS – Distributed File System 
Sistema de arquivos distribuído é um serviço que suporta sistema de ficheiros compartilhado por uma rede de computadores.
Este serviço é conhecido pela sigla em inglês 'DFS e é utilizado nas redes para gerenciá-lo o compartilhamento de arquivos.
O DFS Distributed File System (Sistema de Arquivos Distribuídos) é constituído em um sistema de arquivos, onde múltiplos usuários compartilham arquivos e recursos tendo como objetivo gerenciar servidores de arquivos e recursos de forma eficiente mantendo-os disponíveis e seguros para os usuários. Para explicar a estrutura de um DFS, precisamos entender que ele é constituído por serviços onde fazem parte o servidor e o cliente. O serviço é um processo executado em uma ou mais máquinas para atender a requisição de um cliente qualquer, já o servidor,é o programa de computador provedor de um serviço, sendo que o cliente requisita um serviço junto ao servidor.
Podemos dizer que um Sitema de Arquivo Distribuído oferece serviços para a manipulação de arquivos dos clientes, podendo ser usadas ações primitivas como excluir, criar, deletar e escrever, sendo controladas por um servidor onde fica o disco magnético onde são feitas as leituras de um arquivo e as modificações que são requisitadas pelo cliente.
No DFS esses arquivos ficam distribuídos em diversas memórias em diversas máquinas, simulando a funcionalidade de um sistema de arquivo local, permitindo assim que sejam agrupadas pastas compartilhadas localizadas em servidores diferentes e exibindo-nas aos usuários como uma árvore virtual de pastas, onde deixa de existir um repositório central de pastas.
O tempo é uma das medidas mais importante em um DFS, ou seja o tempo necessário para a realização de um serviço quando requisitado pelo cliente, esse desempenho para ser considerado, tem que ser o mesmo tempo da relização de um serviço feito por um sistema de arquivo convêncional. O DFS tem como uma de suas principais características, a capacidasde de gerenciar vários dispositivos de armazenamento, que se encontram dispersos em diferentes localidades. Os arquivos são um mecanismo de abstração onde oferecem a capacidade de armazenar e mais tarde a capacidade de leitura dos mesmos. Para que esses arquivos sejam armazenados, acontece o que chamamos de criação de um objeto (arquivo), nesse processo o sistema lhe dá um nome, conhecido como Sistema de Nomeação de Arquivos e quando esse processo de criação termina, esse processo ainda continua existindo e pode ser acessado por outros processos e utilizando o nome criado, nomes esse que podem variar de Sistema Operacional, onde na maioria dos casos são aceitas de uma a oito letras como nomes de arquivos válidos, sendo diferenciados por letras maiúsculas e minúsculas. Existem Sistema Operacionais que conseguem suportar arquivos com duas partes onde são separados por um (.), sendo que a parte que fica após o ponto indica alguma característica do tipo do arquivo ou seja sua extensão, como por exemplo um Arquivo.txt, indicando que é um arquivo texto, mas isso não é considerado como regra pois na maioria das vezes serve apenas para reconhecimento dentro de um diretório. Já certas extensões são obrigatórias quando não há compatibilidade de programas e esses arquivos necessitam de uma determinada extensão para que haja reconhecimentodo arquivo.
Como organizações acumulam mais e mais dados, os administradores muitas vezes achar que ter um único servidor de arquivos não atender às suas necessidades. Embora adicionando mais servidores de ficheiros ou até mesmo rede-Attached Storage (NAS) dispositivos é certamente uma opção de fazê-lo, introduz um grau de complexidade para a organização, porque os usuários' arquivos já não estão a ser hospedado em um único local.
No passado, teve um administrador para manter controle dos recursos que estavam no arquivo que servidores, e redirecionar os usuários nesse sentido. Esta foi confusa para ambos os usuários e administradores, especialmente quando arquivo recursos tinham de ser transferidas a partir de um servidor para outro para compensar o espaço em disco ou outro servidor escassez dos recursos.
No Windows 2000 Server, a Microsoft introduziu um recurso chamado o sistema de arquivos distribuídos (DFS). Este recurso, que também está presente no Windows Server 2003 e 2008, permite que um administrador para virtualizar o sistema de arquivos de modo a localização física dos arquivos do usuário já não importa. DFS gera uma visão consolidada das pastas, mesmo se essas pastas estão espalhados por vários servidores de arquivo. Utilizadores aceder a esta visão consolidada através de uma raiz DFS, o que dá a ilusão de ser uma parte normal em um servidor de arquivos.
Esta forma de virtualização do sistema de arquivos é destinado para ajudar a reduzir a confusão, apresentando aos usuários uma visão unificada dos sistemas de ficheiros de múltiplos servidores de arquivo. Apesar disso, os usuários ainda podem não compreender por que eles têm para chegar aos seus arquivos em uma nova forma, ou porque de repente eles podem ver um monte de arquivos e pastas que não existia antes.
Com esses tipos de questões em mente, a Microsoft incorporou algumas alterações no Windows Server 2008 que compõem o sistema de arquivos virtualização processo um pouco menos confusa para os utilizadores finais. Destas novas funcionalidades, o mais importante é o acesso à base de Enumeração.
A idéia básica por trás Acesso à base de Enumeração é que os usuários só estão autorizados a ver os arquivos e pastas que tenham acesso. Em versões anteriores do Windows Server, os usuários acessando Virtualizado um sistema de arquivos através de uma raiz DFS podia ver a estrutura inteira do arquivo, mesmo se eles não têm permissão para realmente abrir todos os arquivos e pastas.
Uma coisa para se manter em mente sobre Acesso à base de Enumeração é que ele não é ativado por padrão (embora seja ativado por padrão para a recém-criada partes no Windows Server 2008). Há uma dúzia de razões para isso. Em primeiro lugar, torna mais consistente a experiência do Windows Server 2008 DFS com o que os usuários tinham quando a raiz DFS foi hospedado em versões anteriores do Windows Server.
A mais importante razão para acesso à base de Enumeração não é ativado por padrão, porém, é que não é compatível com versões anteriores do Windows Server. Se você quiser usar Acesso à base de Enumeração, você deve estar usando um namespace DFS autônomo que está hospedado em um servidor executando o Windows 2008, ou um domínio baseado namespace que está executando no Windows Server 2008 mode.
No caso de você nunca ouviu falar do Windows Server 2008 mode, é um novo nível funcional oferecidos pela versão do Windows 2008 DFS. Configurar o Windows para usar o modo de domínio do Windows Server 2008 com base em namespaces faz duas coisas:
Permite a utilização Acesso à base de Enumeração.
Aumenta o namespace da escalabilidade.
Raízes DFS que estão executando o modo padrão namespace (que agora é chamado Windows Server 2000 mode) estão limitados a acolher cerca de 5.000 pastas com metas. Isto é devido a uma limitação do Active Directory encontrados em versões mais antigas do Windows Server, que apenas permite que um objeto Diretório namespace para crescer até 5 MB. Raízes DFS do Windows Server 2008 em execução no modo não estão sujeitos a esta limitação. Para o melhor de meu conhecimento, a Microsoft não tenha liberado qualquer informação sobre o DFS é agora capaz de escalar a

Sistema de arquivos

Um sistema de arquivos é um conjunto de estruturas lógicas e de rotinas, que permitem ao sistema operacional controlar o acesso ao disco rígido. Diferentes sistemas operacionais usam diferentes sistemas de arquivos. Conforme cresce a capacidade dos discos e aumenta o volume de arquivos e acessos, esta tarefa torna-se mais e mais complicada, exigindo o uso de sistemas de arquivos cada vez mais complexos e robustos. Existem diversos sistemas de arquivos diferentes, que vão desde sistemas simples como o FAT16, que utilizamos em cartões de memória, até sistemas como o NTFS, EXT3 e ReiserFS, que incorporam recursos muito mais avançados.
No mundo Windows, temos apenas três sistemas de arquivos: FAT16, FAT32 e NTFS. O FAT16 é o mais antigo, usado desde os tempos do MS-DOS, enquanto o NTFS é o mais complexo e atual. Apesar disso, temos uma variedade muito grande de sistemas de arquivos diferentes no Linux (e outros sistemas Unix), que incluem o EXT2, EXT3, ReiserFS, XFS, JFS e muitos outros. Para quem usa apenas o Windows, estes sistemas podem parecer exóticos, mas eles são velhos conhecidos de quem trabalha com servidores, já que neles o Linux é que é o sistema mais popular.

Os requisitos para utilizar o Windows Server 2008 mode são bastante simples. O domínio deve ser configurado para usar o Windows Server 2008 domínio nível funcional, e todos os seus servidores DFS namespace deve estar executando o Windows Server 2008.
Depois que você começar a usar o Windows Server 2008 mode, você terá de executar manualmente Acesso à base de Enumeração. Você pode fazer isso, digitando o seguinte comando











Active Directory
 

O Active Directory surgiu da necessidade de se ter um único diretório, ou seja, ao invés do usuário ter uma senha para acessar o sistema principal da empresa, uma senha para ler seus e-mails, uma senha para se logar no computador, e várias outras senhas, com a utilização do AD, os usuários poderão ter apenas uma senha para acessar todos os recursos disponíveis na rede. Podemos definir um diretório como sendo um banco de dados que armazena as informações dos usuários.
 
O AD surgiu juntamente com o Windows 2000 Server. Objetos como usuários, grupos, membros dos grupos, senhas, contas de computadores, relações de confiança, informações sobre o domínio, unidades organizacionais, etc, ficam armazenados no banco de dados do AD.
 
Além de armazenar vários objetos em seu banco de dados, o AD disponibiliza vários serviços, como: autenticação dos usuários, replicação do seu banco de dados, pesquisa dos objetos disponíveis na rede, administração centralizada da segurança utilizando GPO, entre outros serviços. Esses recursos tornam a administração do AD bem mais fácil, sendo possível administrar todos os recursos disponíveis na rede centralizadamente.
 
Para que os usuários possam acessar os recursos disponíveis na rede, estes deverão efetuar o logon. Quando o usuário efetua logon, o AD verifica se as informações fornecidas pelos usuários são válidas e faz a autenticação, caso essas informações sejam válidas.
 
O AD é organizado de uma forma hierárquica, com o uso de domínios. Caso uma rede utilize o AD, poderá conter vários domínios. Um domínio é nada mais do que um limite administrativo e de segurança, ou seja, o administrador do domínio possui permissões somente no domínio, e não em outros domínios. As políticas de segurança também se aplicam somente ao domínio, e não a outros domínios. Resumindo: diferentes domínios podem ter diferentes administradores e diferentes políticas de segurança.
 
Ao utilizar os domínios baseados no AD, temos os seguintes recursos:
  • Logon único : com esse recurso, o usuário necessita fazer apenas um logon para acessar os recursos em diversos servidores da rede, inclusive e-mail e banco de dados.
  • Conta de usuário única : os usuários possuem apenas um nome de usuário para acessar os recursos da rede. As contas de usuários ficam armazenadas no banco de dados do AD.
  • Gerenciamento centralizado : com os domínios baseados no AD, temos uma administração centralizada. Todas as informações sobre contas de usuários, grupos e recursos da rede, podem ser administradas a partir de um único local no domínio.
  • Escalonabilidade : os domínios podem crescer a qualquer momento, sem limite de tamanho. A forma de administração é a mesma para uma rede pequena ou grande.

 
Nos domínios baseados no AD, podemos ter dois tipos de servidores:
  • Controlador de Domínio (DC – Domain Controller) : é o computador que possui o AD instalado, ou seja, é um servidor que possui uma cópia da base de dados do AD. Em um mesmo domínio podemos ter mais de um Controlador de Domínio. As alterações efetuadas em um DC são replicadas para todos os outros DC’s. São os DC’s quem fazem a autenticação dos usuários de um domínio.
  • Servidor Membro (Member Server) : é um servidor que não possui uma cópia do AD, porém tem acesso aos objetos do AD. Não fazem a autenticação dos usuários.
Os domínios do Windows 2000 podem estar nos seguintes modos:
  • Native (Nativo) : utilizado em domínios que possuem somente Controladores de Domínio (DC) Windows 2000.
  • Mixed (Misto) : utilizado em domínios que possuem Controladores de Domínio (DC) Windows 2000 e Windows NT.
Para a instalação do AD é necessário que o serviço DNS esteja disponível, ou seja, é um pré-requisito para a instalação do AD. O AD utiliza o DNS para a nomeação de servidores e recursos, e também para resolução de nomes. Caso o serviço DNS não esteja disponível na rede durante a instalação do AD, poderemos instalá-lo durante a instalação do AD.
 
Com a utilização de domínios, podemos fazer com que nossa rede reflita a estrutura de uma empresa. Quando utilizamos vários domínios temos o conceito de relação de confiança. A relação de confiança permite que os usuários de ambos os domínios acessem os recursos localizados nesses domínios. No Windows 2000, as relações de confianças são bidirecionais e transitivas, ou seja, se o domínio X confia no domínio Y, e Y confia no domínio W, o domínio X também confia no domínio W.
 
Algumas características próprias de cada domínio:
  • Um domínio armazena informações somente dos objetos do próprio domínio.
  • Um domínio possui suas próprias diretivas de segurança.