Sunteți pe pagina 1din 10

Análise da Família de Sistemas Operacionais Microsoft

Windows NT

João de Matos P. de S. Neto

Romualdo André da Costa

Lidiany Cerqueira Santos

Resumo: Este documento fornece uma visão geral da arquitetura dos sistemas
operacionais da família Microsoft Windows NT, apresentando suas
características e seus principais componentes.

Palavras-chave: Windows, NT, Sistema Operacional, hardware, software

1. Introdução

Apesar de ser mundialmente conhecido pelas suas falhas críticas de segurança e


pela sua alta vulnerabilidade aos vírus e programas-espiões (spywares), o impacto deste
sistema no mundo atual é simplesmente incalculável devido à seus milhares de usuários
em todo o mundo.
O Windows começa a ser considerado um verdadeiro SO a partir da versão
Windows NT, lançada em agosto de 1993. Antes eram apenas processos gráficos sendo
executados sobre alguma versão dos sistemas compatíveis com o DOS.
O código fonte das várias versões do Windows é escrito principalmente em C++.
Até a versão 3.11, o sistema era 16 bits, daí em diante, em 32 bits. As últimas
versões (como o XP, o 2003 Server e o Windows Vista — código Longhorn) tem
capacidade para executar instruções com 64 bits.
2. Arquitetura
O Windows 2000 possui duas partes: o próprio sistema operacional (modo
núcleo) e os subsistemas de ambiente (modo usuário). O núcleo é tradicional, no tocante
ao gerenciamento de processo, memória, aos sistemas de arquivos e assim por diante. Já
os subsistemas de ambiente são processos isolados que ajudam os programas dos
usuários a realizar certas funções.
O núcleo do sistema é bastante inchado, pois o tratamento de chamadas do
sistema e todas as chamadas gráficas estão neste. Isso é feito por questões de
desempenho. O sistema é dividido em várias camadas, sendo que cada uma usa os
serviços da camada mais abaixo.
Toda arquitetura será definida nesta e na próxima sessão, desde o nível mais
baixo (HAL e Kernel) aos subsistemas de ambiente.

2.1 HAL — Hardware Abstraction Layer

Embora as camadas superiores do sistema operacional possam se tornar


completamente portáveis (pois lidam principalmente com estruturas de dados internas),
as camadas inferiores lidam com registradores, interrupções de DMA entre outros
aspectos de hardware. Assim a Microsoft criou uma camada para ocultar as
dependências de máquina, chamando-a de HAL — o nome dessa camada foi inspirado
no computador HAL do filme de Stanley Kubrick, 2001: uma odisséia no espaço, esta
camada de software oculta as diferenças de hardware dos níveis superiores do sistema
operacional. Todas as funcionalidades que são dependentes de um determinado
hardware, como interface de E/S, controladores de dispositivos e de interrupções, ou
ainda o próprio processador, são implementadas dentro desse módulo , Assim todos os
componentes do sistema operacional acima do HAL executam de forma independente
do hardware, tornando o Windows portável em ambientes heterogêneos. Os serviços
escolhidos para serem incluídos na HAL são aqueles que se relacionam com um
conjunto de chips na placa- mãe e que variam de máquina para máquina.
Dentre os serviços da HAL, destacam-se o acesso a registradores de dispositivos,
o endereçamento de dispositivos, o tratamento de interrupções e da reinicialização, as
transferências do DMA, o controle dos temporizadores e do relógio de tempo real, os
sincronismo entre múltiplos processadores e a interface entre o BIOS e sua memória
CMOS de configuração.

2.2 Kernel

O kernel é a mais baixa camada de interface entre o software e o hardware no


Windows, encontra-se acima da camada de abstração de hardware, fornecendo a base
para o executivo e outros subsistemas. No modo kernel estão os componentes o sistema
que se comunicam entre si e com o hardware, sem a necessidade de trocas de modo e de
contexto, para aumentar o desempenho do sistema, todos estes componentes são
protegidos das aplicações.
As famosas telas azuis — Blue Screen of Death — são o resultado de uma falha
interna do kernel ou de uma falha num driver associado ao processo, este tipo de erro é
tão grave que o sistema operacional não consegue se recuperar normalmente, sendo
necessário muitas vezes a recuperação do Windows.
O propósito do núcleo é tornar o sistema operacional completamente
independente do hardware.
Tem quatro responsabilidades principais:
• Threads e escalonamento — o código para escalonamento de Thread fica no
núcleo, quando for o momento de verificar se um novo Thread pode executar, o
núcleo escolherá o Thread e fará a alternância do contexto, usa um esquema de
prioridade de 32 bits para determinar a ordem da execução dos Threads.
• Primitivas de sincronismo — sincronização de baixo nível do processador e
recuperação após uma falta de energia
• Interrupção de software e Exceções e interrupções — fornece tratamento para
exceções geradas por interrupções de hardware ou software. São definidas várias
exceções independente da arquitetura: violação de acesso à memória, overflow,
divisão por zero, instrução ilegal, erro de leitura de página, entre outras.

O Kernel usa uma tabela de interrupções para associar cada nível de interrupção a
uma rotina de serviço.
Segundo Tanenbaum (1999), o Kernel do Windows não deveria ser chamado de
Kernel, pois o gerenciador de memória, o sistema de arquivos, e outros componentes
importantes residem no espaço do núcleo e funcionam no modo núcleo.

2.3 Executivo

Constitui o núcleo do sistema operacional. Implementando os serviços básicos e


fornecendo um conjunto de serviços que todos os subsistemas de ambiente podem usar.
Os serviços estão nos seguintes grupos: gerente de objetos, gerente de memória
virtual, gerente de processos, recurso para chamada de procedimento local, gerente de
I/O e monitor de referencia de segurança.

2.3.1 Gerência de processos

Fornece serviços para criação, exclusão e uso de Threads e processos.


O recurso de chamada de procedimento local (LPC – Local Procedure Call) é
usado para passar pedidos e resultado entre processos cliente e servidor dentro de uma
mesma máquina. É semelhante em muitos aspectos aos mecanismos de chamadas de
procedimentos remotos (RPC), que são usados por muitos sistemas operacionais para
processamento distribuído em redes, mas a LPC é otimizada para uso no sistema NT. É
um mecanismo de troca de mensagens.
Uma thread executa no modo usuário, mas ao realizar uma chamada ao sistema
ela alterna para o modo núcleo. Além dos threads normais que executam dentro dos
processos do usuário, o Windows 2000 tem vários threads daemons, que executam
somente no espaço do núcleo e não estão associadas a qualquer processo do usuário.
Novos processos são criados usando a função CreateProcess.
O Windows 2000 não tem um esquema de endereçamento central, quando um
thread não pode executar ela entra no modo núcleo e executa o próprio escalonador
para verificar qual thread deve ser executado. A api win32 fornece dois ganchos para o
escalonamento de threads. Há uma chamada SetPriorityClass que define a classe de
prioridade de todos os threads no processo, depois há uma chamada SetThreadPriority
que define a prioridade relativa de alguns threads comparados aos outros threads do
processo. Assim o escalonador escolhe um thread entre a fila de threads dentro da classe
de prioridade.
2.3.2 Gerência de memória

No Windows 2000 cada processo de usuário tem o espaço de


endereçamento virtual de 32 bits. Portanto é possível se endereçar 4 GB, dos quais 2GB
estão disponíveis para código e dados do processo enquanto nos outros 2GB o sistema
é mapeado.
Uma página virtual pode estar livre, reservada ou comprometida. Uma página
livre não está em uso e uma referência a esta causa falta de página. Quando o código ou
os dados estão mapeados, a página está comprometida. Uma página pode estar
reservada, portanto indisponível para indisponível para ser mapeada.
Não há pré-paginação, apenas paginação sob demanda, com tamanho fixo de
página (4KB no Pentium). O sistema tenta manter na memória um número substancial
de páginas livres na memória, evitando assim acesso duplo ao disco durante uma falta
de página (leitura apenas em vez de leitura e escrita). Isso é feito por meio de threads
que alocam as páginas presentes na memória em listas quatro listas: modificadas,
disponíveis, livres e zeradas.
A lista de páginas livres, contém páginas que não são mais referenciadas por
nenhum processo. Quando um thread zera todos os bits de conteúdo destas páginas, elas
passam para a lista de zeradas. Quando há uma falta de página, o ideal é que se tenha
páginas nessas listas, para que a substituição não seja muito custosa. Páginas
pertencentes a processos em execução, podem estar nas listas de modificadas ou
disponíveis, sendo que apenas as que estão nesta última possui uma cópia válida em
disco. Sendo assim, as páginas modificadas são as menos indicadas para substituição,
dado que além de pertencerem a um processo não têm cópia válida em disco.

2.3.3 Gerência de objetos

A gerência de objetos cabe ao gerenciador de objetos, que é mais uma coleção


de procedimentos que outros threads podem executar em modo núcleo. Ele controla
todos os objetos conhecidos pelo sistema operacional (processos, threads, arquivos,
diretórios, semáforos, dispositivos de entrada e saída, temporizadores...)
2.3.4 Moni tor de referência de segurança

Gerencia o subsistema de segurança cumprindo as regras da política de


segurança no computador local. Monitora o acesso aos recursos do sistema operacional,
protegendo e auditando os objetos durante sua execução.

2.3.5 Gerenciador de entrada e saída

O gerenciador de entrada e saída é responsável pelos sistemas de arquivos,


drivers de dispositivo e drivers de rede (Silberchartz, 2004). Esta parte do executivo
cuida do registro de drivers de dispositivo, drivers de filtro e sistemas de arquivos
carregados no decorrer da utilização do sistema. Outra função do gerenciador de E/S é
gerenciar os buffers para requisições de operações de entrada e saída solicitadas pelos
processos.
A atuação do gerenciador de E/S está relacionada com a do gerenciador de
memória virtual. Desta forma é possível oferecer entrada e saída mapeada em memória
e múltiplos fluxos de dados (stream). O funcionamento do gerenciador de entrada e
saída na família NT é assíncrono, porém um serviço síncrono é oferecido esperando-se
explicitamente a operação ser finalizada.
Tendo em vista a modularização e abstração do sistema, os drivers de dispositivo
seguem um modelo de pilha de drivers e modelo porta/miniporta. Uma pilha de drivers
pode englobar uma lista de drivers onde cada um é responsável por um processamento
específico sobre uma requisição. As requisições são tratadas como mensagens entre
processo e o gerenciador de entrada e saída, estas requisições são chamadas de IRP (I/O
Request Packet). Enquanto um IRP está sendo processado, drivers de filtro podem ser
inseridos na pilha de drivers. Um driver de filtro têm a oportunidade de examinar e
potencialmente modificar uma operação de entrada e saída (Silberchartz, 2004).
O modelo porta/miniporta foi criado para prover uma abstração maior quando se
está fazendo um driver. Neste modelo, uma classe de dispositivos possui uma driver em
comum chamado driver de porta. Enquanto funcionalidades específicas são
implementadas em um driver de miniporta.
Para manter a conformidade com o sistema operacional é recomendado que os
drivers sigam o WDM (Windows Driver Model – Modelo de driver do Windows) que
diz quais os requisitos e interfaces que um driver deve implementar.

2.3.6 Gerenciador de IPC

(IPC — Interprocess Communication), gerencia a comunicação entre os clientes (no


subsistema de ambiente) e servidores (componentes do executivo ).

2.3.7 Gerenciador de PnP

Controla a detecção e instalação de dispositivos durante o boot e manipula o


Plug and Play

2.3.8 Sistema de arquivos

O sistema de arquivos utilizado pela família Windows NT é o NTFS (New


Technology File System). Este sistema de arquivos possui significativas melhorias em
relação ao seu antecessor o FAT-32 (File-Allocation Table – tabela de alocação de
arquivos). O NTFS foi projetado para fornecer todas as funcionalidades de um sistema
de arquivos moderno. Entre as características presentes no NTFS estão arquivos e
sistemas de arquivos grandes, segurança, criptografia, tolerância a falhas, recuperação
de dado, cópias de sombra e compactação. No NTFS tudo é arquivo, inclusive os
diretórios são um tipo especial de arquivos.
A unidade de alocação de espaço no NTFS é o cluster. Um cluster é um
conjunto de setores de disco cuja quantidade é uma potência de 2. O valor do cluster é
definido no momento da formatação do volume de acordo com o tamanho. Esta
configuração visa manter uma relação a melhor possível entre fragmentação e ocupação
do sistema de arquivos.
O NTFS utiliza uma estrutura de dados chamada árvore B+ para dar maior
velocidade de pesquisa e referência de arquivos. Cada diretório armazena uma árvore
B+. Esta estrutura tem a propriedade de todos os nós externos (folhas) estarem no
mesmo nível, o que garante que as operações de busca, inserção e remoção são todas
O(log n), onde n é o número de itens na árvore (Preiss, 1998). (Silberchartz et al.,2001)
possui maiores detalhes sobre árvores B+.
O arquivo mais importante do NTFS é a MFT (Master File Table – Tabela
Mestre de Arquivos). Este arquivo contém as informações sobre a gerência do sistema
de arquivos. Cada registro desta tabela possui 1 KB e cada arquivo possui um registro
associado. Como a MFT é vital para o sistema, uma cópia contendo as 16 primeiras
entradas da MFT é mantida no volume NTFS.
A recuperação de arquivos no NTFS é conseguida por meio do processo de log
onde cada transação com o sistema de arquivos que é completada, produz uma entrada
no arquivo de log do sistema de arquivos. Dessa forma se houver uma falta de energia
ou alguma outra falha, é possível restaurar o volume para uma configuração estável.
O NTFS também dá suporte a sistemas RAID e criptografia, para dar maior
segurança e confiança em máquinas servidoras e com extensos bancos de dados.

3. Subsistemas de ambiente

Os subsistemas de ambiente são processos do modo usuário dispostos sobre os


serviços executivos do Windows, para permitir que o Windows execute programas
desenvolvidos em outros sistemas operacionais (Silberchartz, 2004).
3.1 Subsistema Win32

É o principal subsistema que fornece serviços aos outros subsistemas, portanto


foi projetado para ser robusto. Ele controla o mouse, o teclado e a tela. É responsável
pela execução de aplicações que utilizam a API Win32. O subsistema Win32 valida
todos os objetos antes de usá-los, desta forma ocorre prevenção de falhas em aplicações
ou tentativas perigosas de acesso a objetos do kernel.

3.2 Subsistema POSIX

Este subsistema pretende manter a portabilidade de aplicações escritas seguindo


o padrão POSIX, implementado por programas UNIX. O acesso a qualquer sistema de
arquivos do Windows (NTFS) pode ser feito por uma aplicação POSIX. Apenas versões
profissionais e de servidores é que possuem o subsistema POSIX.
3.3 Subsistema MS-DOS

Por sua simplicidade, o subsistema MS-DOS é fornecido como uma aplicação a


parte. Ele é baseado em uma visão de máquina virtual. Mas nem todos os programas do
MS-DOS podem ser executados na VDM (Virtual DOS Machine - máquina virtual
DOS). Por medidas de segurança, aplicações que acessam o hardware diretamente não
executam na VDM.

3.4 Subsistema Win16

Criado para manter a portabilidade entre aplicações da API Win16 e a nova API
Win32. Ela também oferece uma visão de máquina virtual, que oferece rotinas do kernel
do Windows 3.1 e rotinas similares para tratamento do gerenciador de janelas e
interface gráfica. Este subsistema também oferece a função de tradução de endereços de
16 bits em endereços de 32.

3.5 Subsistema OS/2

Muito da arquitetura NT foi inspirada no OS/2. Inclusive, durante o projeto, foi


mencionada a utilização da API do OS/2 como ambiente nativo, mas ficou decidido
utilizar a API Win32 devido ao sucesso do Windows 3.0. Como um dos requisitos de
projeto era a conformidade com a API do OS/2, o subsistema foi mantido.

3.6 Subsistema de segurança

É responsável pelo logon do usuário no sistema e interceptação da seqüência de


atenção segura (Ctrl+Alt+Del). Este subsistema provê autenticação do usuário através
de um banco de dados local. Depois de autenticado, um usuário recebe um token de
segurança, que contém os privilégios apropriados como cotas de disco, instalação de
programas.
4 — Active Directory
Uma das principais novidades introduzidas no Windows 2000 é a inclusão do serviço de
diretório denominado active directory, este serviço tem como objetivo permitir que
objetos sejam criados e manipulados facilmente. Um diretório ativo é uma estrutura do
diretório usada em computadores e em usuários baseados no Windows, para armazenar
a informação e os dados sobre redes e domínios, é uma implementação do serviço de
diretório no protocolo LDAP que armazena informações sobre objetos em rede de
computadores e disponibiliza essas informações a usuários e administradores desta rede.

Referências bibliográficas

OLIVEIRA ,R., CARISSIMI, A., Toscani, S. Sistemas Operacionais. Editora Sagra-


Luzzato, 2001

SILBERSCHATZ, A., GALVIN, P. B., GAGNE, G. Sistemas Operacionais: Conceitos


e Aplicações. Campus, 2004

TANENBAUM, A. S. Sistemas Operacionais Modernos. Rio de Janeiro: Prentice -Hall,


1999.

PREISS, BRUNO R. Data Structures and Algorithms with Object-Oriented Design


Patterns in Java. Campus, 1998.

S-ar putea să vă placă și