Académique Documents
Professionnel Documents
Culture Documents
Windows 2000
O livro Sistemas Operacionais da Série didática do Instituto de
Informática da UFRGS cobre os tópicos tipicamente abordados em uma
disciplina de graduação de Sistemas Operacionais, além de usar as
implementações do Linux e do Windows 2000 para ilustrar a teoria
apresentada. O livro segue as Diretrizes Curriculares estabelecidas pelo
MEC para cursos da área de Computação e Informática. O texto é de
fácil leitura, possui cerca de 100 figuras e inclui exercícios no final de
cada capítulo, podendo ser adotado como bibliografia básica da
disciplina. O livro conta ainda com uma página web
(http://www.inf.ufrgs.br/~asc/livro) onde o leitor encontrará a sua
disposição o material didático de apoio a este livro na forma de
transparências.
O capítulo 10, introduzido na segunda edição, apresenta o sistema
operacional Windows 2000 (NT 5.0). Nesse capítulo, são discutimos
detalhes da arquitetura do Windows 2000 seguindo, na medida do
possível, a mesma ordem de apresentação do capítulo sobre Linux
(capítulo 9) para que o leitor possa ter uma visão comparativa entre as
soluções adotadas por um e por outro sistema na implementação de seus
mecanismos básicos.
O Windows NT é um sistema operacional proprietário, desenvolvido pela Microsoft, que surgiu com
o objetivo ser um sistema operacional da década de 90, atento aos novos avanços tecnológicos e às
exigências do mercado. Desde o seu lançamento, em 1993, com a versão 3.1, o Windows NT teve a
preocupação de fornecer suporte a ambientes de rede e distribuídos. Sua evolução, até chegar ao
Windows NT 5.0, comercialmente conhecido como Windows 2000, foi orientada à interoperabilidade
com outros sistemas operacionais. A estrutura básica da arquitetura Windows NT manteve-se
praticamente inalterada desde o seu lançamento até as versões mais recentes. Neste capítulo, nós
apresentaremos detalhes da arquitetura do Windows 2000 seguindo, na medida do possível, a mesma
ordem de apresentação do capítulo sobre Linux para que o leitor possa ter uma visão comparativa
entre esses dois sistemas. Nós concluíremos este capítulo com uma breve apresentação do sucessor do
Windows 2000: Windows XP.
184 Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani
sistema) para ter um aspecto UNIX-like. Essa decisão tem um impacto importante se considerarmos
a série de ferramentas UNIX voltadas a ambientes distribuídos e de rede, além, é claro, de reduzir o
número de “versões’’ de interfaces de programação disponibilizadas por diferentes sistemas
operacionais. Outro ponto não negligenciável é o fato de que, cada vez mais, licitações nos Estados
Unidos impõem como condição o fato de o sistema operacional possuir conformidade POSIX. Aqui
surge também a segunda parte, a certificação C2. Essa certificação diz respeito a normas de
segurança, facilidades de auditoria, deteção de ataques, controle de quotas e de acesso a recursos do
sistema. Novamente, todas as licitações americanas estão exigindo essa certificação. Então para
atender esse requisito de mercado, cada vez mais comum no mundo inteiro, o projeto do Windows
2000 foi orientado a possuir conformidade POSIX e a oferecer os serviços necessários à obtenção
da certificação C2.
para outros sistemas operacionais Microsoft executem no Windows 2000 sem problemas. Outros
subsistemas disponíveis são o subsistema OS/2 e o subsistema POSIX.
A estrutura do Windows 2000 pode ser dividida em duas partes: modo usuário (onde estão
localizados os subsistemas protegidos) e modo kernel (o executivo). Os subsistemas protegidos são
assim denominados porque residem em processos separados cuja memória é protegida do acesso de
outros processos. Os subsistemas interagem entre si através de um mecanismo de troca de
mensagens (Local Procedure Call - LPC). No modo kernel, rodam os componentes do sistema
operacional que necessitam de desempenho e por isso interagem com o hardware e um com o outro
sem estarem sujeitos a trocas de contexto e de modo. Todos os componentes estão protegidos das
aplicações porque estas não possuem acesso à parte protegida do sistema operacional. Ainda, cada
componente está protegido um do outro devido à adoção da orientação a objetos. Todo acesso a um
objeto é feito através de um método.
O modo kernel é estruturado em três grandes módulos funcionais: hardware abstraction layer,
drivers de dispositivos e o executivo. A camada denominada de hardware abstraction layer (HAL)
é um módulo carregável do núcleo. Esse módulo respeita uma interface padrão de serviços, porém
possui uma implementação específica para o hardware no qual o Windows 2000 está executando.
Todas as funcionalidades que são dependentes de um determinado hardware, como interfaces de
E/S, controladores de dispositivos e de interrupções, ou ainda, o próprio processador, são
implementadas dentro desse módulo. Esse tipo de projeto permite que todos os componentes do
sistema operacional acima do módulo HAL executem de forma independente do hardware,
fornecendo assim o grau de portabilidade necessário a um sistema que visa a operar em ambientes
heterogêneos.
Os drivers de dispositivos são outra categoria de módulos carregáveis do núcleo. Esses drivers
oferecem, dentro do executivo do Windows 2000, uma interface entre o sistema de E/S e o HAL. O
gerenciamento dos drivers de dispositivos foi um dos aspectos em que o Windows 2000 (NT 5.0)
apresentou uma evolução significativa em relação a sua versão anterior (Windows NT 4.0) através
da integração de suporte a plug-and-play.
188 Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani
Modo Usuário
Processos do Sistema Serviços
Subsistemas do ambiente Aplicações
Replicador
Controlador de POSIX
Serviços Alerta
Modo Kernel
Executivo
API do Executivo
! Espera (waiting): uma thread passa a esse estado sempre que (1) for bloqueada pela
espera da ocorrência de um evento (e.g. E/S); (2) realizar uma primitiva de
sincronização; ou (3) quando um subsistema ordena a suspensão da thread. Quando
a condição de espera é satisfeita, a thread é inserida na lista de aptos.
! Transição (transition): corresponde ao estado em que uma thread está apta a ser
executada, porém os recursos de sistema necessários a sua execução (e.g. estar
paginada em memória), ainda não estão disponíveis. Quando esses recursos estão
disponibilizados, a thread passa ao estado apto.
! Término (terminated): estado que uma thread assume quando atinge seu final, ou é
terminada por uma outra thread, ou ainda quando o processo a que está associada
termina.
Ativo
Escalonamento Chaveamento de
contexto
Preempção
Apto Execução
Desbloquear Bloquear/
(recurso disponível) Término
suspender
Recurso
disponível
Prioridade 31
Prioridade 30
Classe
Tempo real
! !
Prioridade 16
Prioridade 15
Prioridade 14
Classe
variável
! !
Prioridade 0
Em outros termos, o escalonador do Windows 2000 tende a atribuir prioridades mais elevadas para
threads do tipo I/O bound.
Em máquinas monoprocessadoras, a thread de mais alta prioridade está sempre ativa a menos que
esteja bloqueada esperando por um evento (E/S ou sincronização). Caso exista mais de uma thread
com um mesmo nível de prioridade o processador é compartilhado de forma round-robin entre essas
threads. Em um sistema multiprocessador com n processadores, as threads de mais alta prioridade
executam nos n-1 processadores extras. As threads de mais baixa prioridade disputam o processador
restante.
Na realidade, existe ainda um fator adicional que influencia fortemente o escalonamento do
Windows 2000: a afinidade de uma thread. Uma thread pode definir sobre qual (ou quais)
processador(es) ela deseja executar. Nesse caso, se a thread estiver apta a executar, porém o
processador não estiver disponível, a thread é forçada a esperar, e uma outra thread é escalonada
em seu lugar. O conceito de afinidade é motivado pela tentativa de reaproveitar os dados
armazenados na cache do processador pela execução anterior de uma thread. O Windows 2000
possibilita dois tipos de afinidade: soft e hard. Por default, a política de afinidade soft é utilizada
para escalonar threads a processadores. Nesse caso, o dispatcher tenta alocar uma thread ao mesmo
processador que ela executou anteriormente, porém, se isso, não for possível, a thread poderá ser
alocada a outro processador. Já com a política de afinidade hard, uma thread (com os devidos
privilégios) executa em apenas um determinado processador.
privilégios necessários, bloqueie páginas em memória, fazendo com que essas páginas nunca
sofram um procedimento de swapping.
Espaço de endereçamento
default do Windows 2000
FFFFFFFF
Espaço destinado
ao
Sistema Operacional
80000000
7FFFFFFF !!!
Espaço destinado
ao
Processo usuário
00000000
acessada (se presente). Finalmente, o índice de byte é somado ao endereço inicial da página em
memória, resultando no endereço físico correspondente ao endereço virtual desejado. A Figura 10.5
apresenta a relação entre esses três valores e a forma pela qual eles são utilizados para mapear um
endereço virtual em endereço físico.
Cada processo possui um único diretório de páginas para mapear a localização das tabelas de
páginas pertencentes a esse processo. O diretório de páginas possui 1024 entradas, o que limita o
número máximo de tabelas de páginas de um processo. As tabelas de páginas são criadas sob
demanda; por conseqüência, normalmente, muitas das entradas do diretório de página não são
válidas. Cada tabela de páginas possui, por sua vez, também 1024 entradas, o que, de forma
análoga, limita a quantidade de páginas por tabela de páginas. O tamanho de cada entrada, tanto do
diretório de páginas como da tabela de páginas, é de 4 bytes. Isso implica que cada uma dessas
estruturas ocupe 4 Kbytes de memória, ou seja, exatamente uma página (lembre-se de que o
tamanho mínimo de páginas é 4 Kbytes). Essas tabelas são armazenadas no espaço de
endereçamento virtual do processo, na área destinada ao sistema operacional (2 Gbytes superiores),
e sua localização exata é mantida no descritor de processo.
Bloco descritor
de processo
Índice do diretório de Índice da tabela de Índice o byte
página página
Figura 10.5 – Esquema de tradução de endereço virtual para endereço físico em arquiteturas Intel
saída. A quantidade de páginas lidas em avanço (cluster) difere para páginas de código e páginas de
dados e ainda varia conforme o tamanho da memória física.
A política para substituição de páginas na memória empregada pelo Windows depende do tipo do
arquitetura da máquina e de seu processador. Para arquiteturas do tipo multiprocessador baseadas
em processadores da família Intel, e em todas as máquinas baseadas em processadores da família
Alpha, a estratégia utilizada é essencialmente FIFO local. Nessa estratégia, considera-se para fins
de seleção da página a ser substituída em memória, apenas as páginas pertencentes ao processo. Nas
arquiteturas de monoprocessadores Intel, o algoritmo de seleção de página a ser substituída é LRU,
implementado através do algoritmo do relógio (clock).
O número de páginas presentes em memória para um processo é mantido através do mecanismo de
working set. Para cada processo, esse número varia entre um valor mínimo e um valor máximo
definidos apenas a partir do tamanho da memória física. Quando ocorre uma falta de página, os
limites do tamanho do working set e a quantidade de memória livre são examinados. Havendo
memória livre disponível, a gerência de memória permite que o processo aumente seu working set
até atingir o valor máximo (na realidade, o valor máximo pode vir a ser ultrapassado em função da
quantidade de memória livre). Se um processo atingir o limite máximo de seu working set, e ainda
necessitar da carga de páginas em memória, sem que haja memória disponível, a gerência de
memória iniciará o mecanismo de substituição, considerando apenas as páginas do working set do
processo. Caso o número de faltas de página seja elevado, a gerência de memória verifica o working
set de todos os processos em memória. Os processos que tiverem mais páginas em memória que o
valor mínimo terão seus working sets reduzidos, e suas áreas de memória liberadas serão
disponibilizadas para alocação global, isto é, um processo que necessite de memória poderá
requisitar esse espaço.
disponibiliza uma série de ferramentas para a tolerância a falhas; entre elas, podemos citar o suporte
a RAID.
ou seja, em cada espaço de nomes (DNS ou active directory), os nomes são resolvidos para
informações diferentes. Na realidade, o DNS é um serviço de resolução puro, isto é, um cliente
DNS envia uma requisição a um servidor DNS para “traduzir” um nome de máquina em IP. Já o
active directory é um serviço de diretório. A resolução do nome depende do tipo de objeto que o
nome representa. Nesse procedimento, um cliente active directory realiza requisições a um servidor
active directory (também denominado de controlador de domínio) através de um protocolo
específico: o LDAP (Lightweight Directory Access Protocol). O LDAP é um protocolo
desenvolvido dentro da Internet para fornecer acesso a serviços de diretório. O fato de o Windows
empregá-lo oferece a este um grau adicional de conectividade a ambientes heterogêneos.
Mas, de uma forma pragmática, o que finalmente é, e para que serve o active directory ? O objetivo
principal do active directory é facilitar a adminstração da rede. Versões anteriores do Windows
incluíam uma série de serviços e conceitos para auxiliar usuários e administradores de redes a
localizar e gerenciar recursos da rede. O network neighborhood, o WINS Manager, o Server
Manager são alguns exemplos desses serviços. Os objetos gerenciados por essas ferramentas
consistiam no que se denominava de domínio Microsoft Windows NT. Essa abordagem, entretanto,
mostrou-se um pouco prática para usuários e administradores – especialmente quando a rede
apresentava uma certa complexidade pois forçava a sua subdivisão em vários domínios Windows
NT, o que dificultava a localização e o gerenciamento de seus recursos. O active directory foi
concebido para executar esse mesmo serviço, porém de uma maneira mais eficiente.
Os principais componentes que formam o active directory são: objeto, esquema, contêiner. Um
objeto é qualquer usuário, sistema, recurso ou serviço existente dentro do active directory. Os
objetos são descritos por seus atributos, como por exemplo, nome de uma máquina e seu endereço
IP. O conjunto de atributos para qualquer tipo particular de objeto é chamado de esquema. Um
contêiner é um tipo especial de objeto utilizado para organizar o active directory. Sua idéia é similar
de folder (pasta) do Windows, isto é, se um folder contém arquivos e outros folders, um contêiner
armazena objetos e outros contêiners. Os três tipos possíveis de contêiner são domínios, sites e
unidades organizacionais.
Um domínio em Windows 2000 é muito similar ao conceito de domínio do Windows NT 4.0. Um
domínio é um grupo de usuários e computadores que formam uma unidade administrativa isolada.
Um site consiste em uma localização geográfica empregada para distinguir localizações remotas de
localizações locais. Os sites podem ser comparados a subredes, isto é, sua estrutura pode ser
empregada por aplicativos para localizar um determinado servidor mais próximo a esta subrede,
reduzindo assim o tráfego em redes remotas. Uma unidade organizacional é um contêiner utilizado
para agrupar objetos com políticas de acesso idênticas, podendo ser criada com base em vários
critérios, como função, localização, recursos, etc. As unidades organizacionais existem dentro de
um domínio.
Uma característica das grandes organizações é a necessidade de criar vários domínios para controlar
de forma mais apropriada os recursos de um determinado setor, departamento, filial, etc. O active
directory permite que os domínios sejam organizados hierarquicamente na forma de uma árvore.
Essa organização cria uma relação de filiação entre os domínios com uma relação de confiança: um
pai confia em seu filho, e o filho confia em seu pai. Essa relação de confiança permite que recursos
sejam compartilhados entre pais e filhos, e entre filhos de um mesmo pai. Cada árvore possui um
espaço de nome próprio. O conjunto de árvores, isto é, de espaços de nomes diferentes define o que
se denomina, em terminologia Windows, de uma floresta.
O active directory é disponível no Windows 2000 apenas na sua versão server e, além de prover
meios para o armazenamento de dados e acesso a serviços de um diretóiro, ele também integra
mecanismos de segurança para evitar acessos não autorizados a objetos e mecanismos de replicação
para garantir um certo grau de tolerância a falhas.
200 Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani
diretamente a partir do Windows Explorer, emprego de temas (skins) para tela de fundo,
atualizações automáticas, mecanismos para publicação de arquivos de imagens e de texto na
Internet, etc.
Entre as novidades do Windows XP, está ainda um mecanismo de proteção contra pirataria
denominado de WPA (Windows Product Activation). Seu funcionamento é baseado na criação de
um código único, válido apenas para o computador no qual o Windows XP é instalado. Esse código
é criado no momento da instalação e é obtido através de identificadores próprios únicos a cada
computador, tais como número de série da BIOS, do disco rígido, o endereço físico da placa de rede
(endereço MAC), etc. Esse código é então informado à Microsoft, que imediatamente gera e reenvia
um código de liberação para o uso do Windows XP. Ambos os códigos, o gerado na instalação e o
código de instalação, são cadastrados na Microsoft. Sempre que houver uma modificação de
hardware da máquina, ou a tentativa de burlar o sistema de ativação do Windows XP, o usuário
deverá repetir o procedimento de ativação do Windows XP, ou seja, recontactar a Microsoft e gerar
uma nova chave de ativação. Esse procedimento criou, na comunidade de usuários, muita
controvérsia devido a rumores de que a Microsoft aproveitava-se dele para obter informações
adicionais sobre a configuração da máquina, como por exemplo, os softwares instalados. Essa
polêmica levou à análise das transações realizadas pelo mecanismo WPA por consultores
independentes que concluíram que apenas o código de ativação é enviado à Microsoft.
O Windows XP foi desenvolvido com a preocupação de manter a compatibilidade com várias
aplicações já existentes para a família Windows, principalmente jogos e multimídia. A Microsoft
divulga que todos os aplicativos existentes para Windows 98, Millenium, e Windows NT
continuarão a funcionar normalmente no Windows XP. A mesma preocupação de compatibilidade
existe a nível de hardware; assim sendo, o Windows XP dispõe de uma grande gama de drivers para
os mais diversos periféricos. Além disso, é possível instalar em uma máquina Windows XP drivers
existentes para outras versões da família Windows.
As diferenças entre as versões Windows XP Personal Edition e Windows XP Professional Edition
estão relacionadas com desempenho e atividades de gerenciamento. A versão Professional explora
o multiprocessamento real oferecido pelas máquinas multiprocessadoras, ao passo que a versão
Personal é otimizada para máquinas monoprocessadoras.
Sob o ponto de vista do sistema operacional, o Windows XP é um sistema operacional de 32 bits e
herda em muito a arquitetura NT 5.0. As modificações, segundo a Microsoft, estão em otimizações
de algoritmos básicos e nas estruturas de dados internas ao núcleo. Essas melhorias fazem com que
o Windows XP apresente um desempenho melhor que seus antecessores. O Windows XP, assim
como o Windows 2000 (NT 5.0), não fornece a capacidade de realizar boot em modo DOS. A
compatibilidade com aplicativos que rodam sob DOS (como o Clipper) é feita exatamente da
mesma forma que no Windows 2000, ou seja, através de um emulador DOS.
10.11 Exercícios
1. Compare o sistema de paginação do Windows com o do Linux, considerando os aspectos:
políticas de substituição de páginas, tradução de endereço lógico a endereço físico, e
estratégia de alocação de páginas em memória.
2. O Linux utiliza um modelo de estados de processo diferente do Windows. Faça uma
correspondência entre os estados utilizados em cada um desses sistemas operacionais.
3. Pesquise sobre a capacidade do Linux de atribuir prioridades para threads no mesmo
estilo da classe de tempo real oferecida pelo Windows. Caso exista algum mecanismo,
faça uma análise comparativa.
202 Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani
4. Cite prós e contras do sistema de swapping utilizado pelo Windows quando confrontado
com o do Linux.
5. Analise como é organizado o sistema de arquivos NTFS. Compare-o com o do Linux.