O documento apresenta a história e principais características do sistema operacional Windows, desde as suas primeiras versões até o Windows 7. Aborda a evolução do Windows ao longo do tempo, desde sua origem no MS-DOS até se tornar um sistema operacional completo e independente, e discute os principais componentes e arquitetura do Windows XP.
2. O que pretendemos esta semana:
● Apresentar a história da evolução do Windows como
sistema operacional
● Conhecer os principais aspectos de projeto do Windows,
como base no Windows XP
● Discutir sobre as diferenças apresentadas pelas diversas
versões do Windows ao longo do tempo e o impacto sobre o
mercado de software e os usuários
3. História
● MS-DOS
– Win 1.0 / Win 2.0 / Win 3.0 / Win 3.1 / Win 3.11
● Windows 95
– Ainda precisava do DOS
● Windows 98
● Windows Millenium
● Windows 2000
● Windows 2003
● Windows XP → Windows Vista → Windows 7
4. MS-DOS
● Monousuário
● Memória limitada a 1 Mb → 640 Kb para
programas de usuário
● 16 bits
● FAT 16
7. Windows 3.1
● 1990
● Sucesso comercial
● Interface gráfica do
MS-DOS
● Espaço de
endereçamento
compartilhado
(bugs!)
8. Windows 95
● Não elimina o MS-DOS, mas
já faz algumas operações
típicas de SO
● FAT-16
– a versão Win 95 OEM
Release 2 implementava
a FAT-32
● Já vinha com o Internet
Explorer 1.0
9. Windows 95
● Memória virtual
● 32 bits, mas não em sua
totalidade – alguma coisa
ainda com16 bits
● Multiprogramação
● Nomes de arquivos mais
longos – até 256 caracteres
10. Windows 98
● Mais funcionalidades são transferidas do MS-DOS
● Ainda há partes do SO em 16 bits
11. Windows 98
● 4 Gb de memória virtual
– 2 Gb privados para processo
– 1 Gb compartilhado (bugs!)
– 1 Mb para compatibilidade para o MS-DOS
● Kernel não re-entrante
– Não permite executar vários processos em
modo kernel simultaneamente
● Integração entre desktop e internet
– Acusação de monopólio
12. Windows Me – Windows Millenium Edition
● Muito semelhante ao Windows 98, só que com
muito mais problemas
● Embora, com algumas facilidades:
● Melhor
compartilhamento de
imagens e músicas
● Aplicações voltadas
para a Internet
● Jogos multiusuários
● Restore System
13. Windows NT
● 1a versão em
1999
● Windows New Technology
● Esperava-se
grande
sucesso,
mas...
● … exigia
máquinas
com muitos
recursos, que
na época não
era muito
comum
14. Windows NT 4.0
● Mesma
interface do
Win98
● Portabilidade
✔ 16 milhões de
linhas de código
em C, C++ e
Assembly
✔ Pentium, Alpha,
MIPS e Power
PC
17. Windows 2000
● Mesma interface do Windows 98
● Era, na verdade, o Windows NT 5.0
Por que será?
–
● Modo usuário e modo supervisor
● Possibilidade de cluster: duas ou mais máquinas
como se fosse uma única
● Finalmente, livre do MS-DOS
20. Windows XP
● Eliminou alguns cenários Sucessor do Windows
de reboot 2000, nos computadores
pessoais
● Estruturas críticas do
Kernel passaram a ser
read-only
● 1o SO para usuários com
o núcleo do NT
● 32 e 64 bits
● Problemas com acusação
de monopólio, por causa
do Windows Media
Player
21. Princípios de projeto – Windows XP
● Segurança
● Confiabilidade
● Compatibilidade com aplicações
● Desempenho
● Extensibilidade
● Portabilidade
● Suporte internacional
22. Windows XP - Segurança
O Windows NT recebeu o certificado C2 de segurança do
governo dos Estados Unidos, ou seja, nível de proteção
moderado contra software defeituoso e ataques
23. Windows XP - Confiabilidade
● O Windows 2000 é tido como um dos SO mais
confiáveis da Microsoft
● O Windows XP acrescenta algumas
funcionalidades para verificação da saúde da
máquina
● Faz verificação de falhas mais sutis em drivers
● Interface gráfica mais fácil de usar que os
anteriores
24. Windows XP - Compatibilidade
● Melhor compatibilidade com aplicações de usuário que o
Win95 e Win98
– Não é tão simples quanto parece...
– Muitos problemas por conta das inúmeras versões
do Windows ainda em funcionamento
– Muitos problemas com o uso das API,
especialmente pelo fato de que alguns de seus
componentes ainda são em 16 bits, para que se
possa manter-se compatíveis com aplicações de
usuário mais antigas
25. Windows XP - Desempenho
● Foi muito além do Win98, e até mesmo do Win
2000, porém com custos na confiabilidade e
segurança
● Seus subsistemas se comunicam entre si através das
LPC (Local Procedure Call)
● Projetado para multiprocessamento simétrico
– Vários threads podem ser executados
simultaneamente em computadores
multiprocessados
26. Windows XP - Extensibilidade
● Arquitetura em camadas
– Para facilitar os upgrades
● O executivo do SO roda no kernel e fornece serviços
básicos do sistema
– Os subsistemas de servidor operam em modo usuário
● Permite que aplicações MS-DOS e do POSIX executem
em locais apropriados, semelhante a uma máquina virtual
● Admite processamento distribuído
Refere-se à capacidade
do sistema operacional
acompanhar os avanços
na tecnologia de
computação
27. Windows XP - Suporte internacional
● As API NLS (National-Language-Support) fornece
rotinas especializadas para formatar datas, horas e
moedas de acordo com cada país
● Código de caracteres nativo – UNICODE
– Aceita caracteres ANSI
28. Windows XP - Componentes do sistema
● Arquitetura em camadas
– Em modo protegido
● HAL (hardrware abstraction layer)
● Kernel
● Executivo (núcleo)
– Em modo usuário
● Sub-sistemas de ambiente
● Sub-sistemas de proteção
● Etc.
● Esse tipo de arquitetura possibilita maior
performance, pela facilidade de comunicação
entre os diversos componentes do SO
29. Windows Server 2003
● Lançado em 2003, substituindo o W2K
● Conhecido como Windows NT 5.2
● Acrescentou melhorias com o serviço de rede e
no Active Directory
● 4 versões
– Web edition, Standard edition, Enterprise
edition e Datacenter edition
–
30. Windows Vista
● Lançado em janeiro de 2007
● Mudanças na interface em relação aos antecessores
● Exige muitos recursos da máquina
– 1 Gb de RAM mínimo → ideal 2 Gb
● 32 e 64 bits
● Melhorou o compartilhamento peer-to-peer
● Introduz a versão 3.0 do Microsoft NET Framework
● Instalação de drivers em modo kernel
● Segurança: proteção contra vírus e worms via rede
● Mais redução do reboot
● IE7 / Windows Media Player 11
31. Windows Vista
Versões do Windows Vista
Ver detalhes em http://windows.microsoft.com/pt-BR/windows7/products/compare
32. Windows Server 2008
● Lançado em fevereiro de 2008
● 4 versões: Standard, Web, Enterprise e Datacenter
● Substituto do Windows Server 2003
● Suporte a multiprocessamento simétrico em duas e
quatros vias
● Standard → Memória
– Até 4 Gb para sistemas de 32 bits
– Até 64 Gb para sistemas de 64 bits
● Datacenter
– Suporte até 64 CPU
33. Windows Server 2008
● Núcleo do servidor
– Pode-se optar por instalar somente os serviços
essenciais, liberando os recursos da máquina
– Requer menos manutenção e atualização
● Windows Power Shell
– Mais ferramentas
– Linguagem de script integrada
– Mais de 130 ferramentas
● Gerenciador do servidor
– Guia para os administradores
34. Windows Server 2008
● Virtualização nativa
● NAP (Network Access Protection)
– Validação da política de integridade
– Limitação de acesso à rede
– Conformidade contínua
● RODC (Read-Only Domain Controller)
– Permite manter um servidor somente leitura, para
casos de reduzida segurança da máquina física
● Clustering Failover
– Avalia se os recursos do servidor estão disponíveis
e suficientes para ativar o cluster
35. Windows 7
● Lançado em Julho de 2009
– 7o Windows User estável: W95 → W98 → ME → 2000
→ XP → Vista → 7
● Poucas atualizações se comparado ao Vista
● Leitura nativa de Blu-Ray e HD-DVD
● Instalação do sistema em HD virtual (imagens)
● IE 8 e 9 / Win Media Player 12
● Conceito de bibliotecas
● Modo Windows XP
● Arquitetura modular, semelhante ao Windows Server 2008
(?)
36. Windows 7
Mais detalhes em:
http://windows.microsoft.com/pt-BR/windows7/products/compare?T1=tab20
37. Funcionamento do Windows XP
● Componentes do sistema
– HAL / Kernel / Executivo
● Subsistema de ambiente
– MS-DOS / Win 16 bits / Win 32 bits / POSIX
● Interface de programação
– Gerência de processos / Gerência de memória
● Sistemas de arquivos
– NTFS / Recuperação / Segurança
● Rede
– Interface / Protocolos / Processamento distribuído /
Servidores / Domínios / Active Directory / DNS
38. HAL
● É a camada de software que esconde as diferenças
de hardware dos níveis superiores do sistema
operacional
– Cria uma espécie de máquina virtual para os
subsistemas
– Auxilia na portabilidade
– No Win XP, bastava uma versão de driver para
qualquer que seja a plataforma da máquina
39. HAL
● Por questões de eficiência, às vezes opta-se por
fazer o acesso direto ao hardware, porém...
40. Kernel
● Constrói abstrações de nível mais alto a partir das
fornecidas pela HAL
● Permanece sempre na memória e sua execução
nunca é preemptada, ou seja, tem prioridade
máxima
● Maior parte escrita em C
● Possui 5 'responsabilidades' principais:
– Despachante (semáforos, locks, timers)
– Threads e escalonamento
– Implementação de primitivas de sincronismo
– Interrupções de software
– Exceções e interrupções
41. Kernel
● Despachante (semáforos, locks, timers)
– Fornece o alicerce para o executivo e os
subsistemas
– Prioridade em 32 níveis
● Threads e escalonamento
– Para cada processo → uma ou mais threads
– 6 estados: ready, standy (1a da fila), running,
waiting, transition (blocked) e terminated
– Funciona em tempo real, mas não rigidamente, pois
não garante que uma thread de tempo real
começará a executar dentro de um limite de
tempo em particular
42. Kernel
● Implementação de primitivas de sincronismo
As estruturas de dados fundamentais do SO são gerenciadas como
objetos usando facilidades comuns de alocação, contagem de
referência e segurança
Objetos despachantes: controlam despacho e sincronismo
– Eventos: registro de ocorrência de evento
– Mutantes: fornece exclusão mútua
– Mutex: fornece exclusão mútua livre de deadlock
– Semáforos: atua como contador de threads que acessam o
recurso
– Processos: encapsula um espaço de endereço virtual,
threads e temporizadores
– Thread: entidade escalonada, associada ao processo
– Temporizador: sinaliza tempos-limite
43. Kernel
● Interrupções de software
– Chamada de procedimento assíncrona
● Interrompem uma thread em execução e chamam
um procedimento
● Usadas para iniciar uma nova thread, terminar
processos e fornecer notificação de que uma E/S
assíncrona foi concluída
– Chamadas de procedimento adiadas
● Usadas para postergar o processamento da
interrupção
44. Kernel
● Exceções e interrupções
– O Win XP define várias exceções independentes
de arquitetura, incluindo:
● Violência de acesso à memória
● Overflow de inteiros
● Overflow e underflow de ponto flutuante
● Divisão de inteiro por zero
● Divisão de ponto flutuante por zero
● Instrução ilegal
● Falta de alinhamento de dados
● Instrução privilegiada
● Erro de leitura de página
● Violação de acesso
● Cota de arquivo de página ultrapassada, etc.
45. Kernel
● Exceções e interrupções
– Os tratadores de interceptação tratam de exceções
simples.
– O tratamento de exceções elaborado é feito pelo
despachante do Kernel. O despachante cria um registro
de exceção Kernel contendo o motivo para exceção e
encontra um tratador de exceção para lidar com ela.
– Quando ocorre uma exceção em modo kernel, o
despachante da exceção chama uma rotina para
localizar o tratador de exceção. Se nenhum tratador for
encontrado, um erro fatal ocorrerá ('tela azul')
– O tratamento de exceções em modo usuário é mais
complexo, porque um subsistema de ambiente (ex:
POSIX) configura uma porta de depurador e uma orta
de exceção para cada processo criado.
46. Executivo
● Gerenciador de objetos
● Gerenciador de processos
● Gerenciador de chamadas
● Gerenciador de E/S
● Gerenciador de cache
● Monitor de referência de segurança
● Gerenciador de Plug-and-play
● Registry
● Booting Fornece um
conjunto de
serviços utilizados
por todos os
subsistemas de
ambiente
48. Subsistemas de ambiente
● São processos do modo usuário dispostos sobre os
serviços executivos originais do Win XP, para
permitir a execução de programas desenvolvidos para
outros SO
● Cada subsistema fornece um ambiente de aplicação
isolado; assim uma falha não interfere nos demais
processos
● Win 32 → ambiente operacional principal
– avalia se o novo processo pode ser executado por ele
próprio ou se é necessário chamar um dos
subsistemas
49. Sub-sistemas de ambiente
● Ambiente MS-DOS
● Ambiente Windows de 16 bits
● Ambiente Windows de 32 bits no IA64
● Ambiente Win32
● Subsistema POSIX
● Subsistema de logon e segurança
50. Sistemas de arquivos
● FAT 16
– Fragmentação interna
– Limitação de tamanho → 2 Gb
– Falha de proteção de acesso a arquivos
● FAT 32
– Melhorou nas questões de tamanho e de fragmentação interna
● NTFS → atual
– Recuperação de dados
– Tolerância a falhas
– Arquivos e sistema de arquivos grandes
– Múltiplos fluxos de dados
– Nomes UNICODE
– Criptografia / compactação de arquivos
– Cópia de sombra de volume
51. Sistemas de arquivos
●
Esquema interno do NTFS
– A entidade fundamental é o volume
– Um volume pode ocupar um disco inteiro, parte dele ou
estar espalhado em vários discos
– Não lida com setores individuais e sim com clusters
●
Cluster é conjunto de setores como unidade de alocação de
disco
– Quanto menor o cluster, menor a fragmentação interna
●
Volumes de até 512 Mb cluster=setor; para até 1 Gb, 1 Kb;
para até 2 Gb, 2 Kb; para maiores , 4 Kb
– O endereçamento de disco é baseado em clusters lógicos
52. Sistemas de arquivos
●
Árvore B+ do NTFS
– Organização em árvore de diretórios
– Cada diretório utiliza uma estrutura de dados →
árvore B, que armazena o índice dos nomes de
arquivo
– Elimina o custo de reorganização, e tem a
propriedade de cada caminho da raiz até a folha ser
igual
– A raiz de índice de um diretório contém o nível
superior da árvore B+
53. Sistemas de arquivos
● Metadados do NTFS
– São armazenados em arquivos
– Arquivo de log: registra todas as atualizações de metadados
– Arquivo de volume: contém o nome do volume, a versão do NTFS que
formatou o volume e um bit que informa se o volume foi adulterado
– Tabela de definição de atributo: indica quais tipos de atributos são
utilizados e quais operações podem ser realizadas em cada um deles
– Diretório-raiz
– Arquivo de mapa de bits: indica quais clusters em um volume estão
alocados aos arquivos e quais estão livres
– Arquivo de boot: contém o código de boot
– Arquivo de cluster defeitusos: registra áreas defeituosas
54. Sistemas de arquivos
●
Recuperação no NTFS
– Todas as atualizações à estrutura de dados do sistema de
arquivos são realizadas dentro de transações.
– Antes de uma transação ser alterada, a transação escreve
um registro de log que contém informações de
restauração e desrestauração
– Depois de a estrutura de dados ter sido alterada, a
transação escreve um registro commit no log para
informar o sucesso da operação
55. Sistemas de arquivos
●
Segurança no NTFS
– Cada arquivo NTFS referencia um descritor de
segurança que contém o token de acesso do
proprietário do arquivo e uma lista de controle de
acesso que indica os privilégios a cada usuário que
possui acesso ao arquivo
56. Programação – Win 32 API
● API – Application Programming Interface
–Conjunto de funções que fazem chamadas
ao sistema ou operam em espaço do
usuário
● Novas funções são acrescentadas constantemente
● Existe pequenas variações de uma versão do
Windows para outra, o que causa algumas
incompatibilidades
● Não é orientado a objetos, pois faltam os
conceitos de herança e polimorfismo
58. DLL – Dynamic Link Libraries
● .dll – arquivo contendo um conjunto de
procedimentos interrelacionados
● Chamadas a procedimentos em DLL são feitas
de maneira indireta por meio de um vetor
● Apenas uma cópia da DLL existe na memoria
em dado momento, o que otimiza o uso desse
recurso
59. Interface do programador
●
Gerenciamento de processos
– No XP, um processo é a execução de uma aplicação,
e uma thread é uma unidade de código que pode
ser agendada pelo SO
– Cada processo contém uma ou mais threads
– O processo é iniciado quando um processo cria
através da rotina CreateProcess(), carregando as
DLL do processo a ser criado e cria também uma
thread primária → CreateThread()
– Cada thread é criada com sua própria pilha, de 1 Mb
(default)
60. Interface do programador
● Escalonamento de processos
– Descritores de instância
● É o endereço virtual onde o arquivo é carregado
– Prioridades:
● IDLE_PRIORITY_CLASS (nível 4)
● NORMAL_PRIORITY_CLASS (nível 8)
● HIGH_PRIORITY_CLASS (nível 13)
● REALTIME_PRIORITY_CLASS (nível 24)
– Somente quem tem privilégio pode alterar a prioridade
de um processo → SetPriorityClass()
61. Interface do programador
●
Escalonamento de processos
– Regra de escalonamento
●
Quando o usuário estiver executando em um
programa interativo, o sistema precisa fornecer
um desempenho especialmente bom para o
processo
●
Por default, todos são
NORMAL_PRIORITY_CLASS
●
Faz distinção entre processos de primeiro e de
segundo plano (ex: serviços)
●
Quando o processo passa para o primeiro plano, o
SO aumenta o quantum de escalonamento
(geralmente 3x mais)
62. Interface do programador
● Escalonamento de processos
– Prioridade de thread
● Uma thread começa com prioridade igual a de sua
classe
– LOWEST, BELOW_NORMAL, NORMAL, ABOVE,
HIGHEST
– IDLE → sempre a mais baixa, 16 para threads de tempo
real e 1 para threads de prioridade variável
– TIME_CRITICAL → NÍVEL 31
– O kernel ajusta a prioridade da thread dinamicamente,
dependendo se for I/O bound ou CPU bound
● A prioridade pode ser alterada pela função
SetPriorityThread()
63. Interface do programador
●
Escalonamento de processos
– Sincronismo de thread
●
Trata região crítica
●
Semáforos e mutex
●
EnterCriticalSection () → coloca threads à
espera de permissão para RC
– Fibers
●
Similar a uma thread, mas como
processamento não-preemptivo
●
Usado para manter compatibilidade com
aplicações Unix escritas para este modelo
64. Interface do programador
●
Escalonamento de processos
– Banco de threads
●
Evita o dispêndio do processador com a
criação de inúmeras threads a cada
processo
●
Busca reduzir o número de threads
pendentes adiando ligeiramente as
requisições
65. Interface do programador
●
Comunicação entre processos
– Trata através do compartilhamento de objetos
do kernel
– Troca de mensagens
●
PostMessage() → assíncrona
●
PostThreadMessage() → assíncrona
●
Send-Message() → síncrona
– Cada thread possui sua própria fila de
mensagens
66. Interface do programador
● Gerência de memória
– Memória virtual
● VirtualAlloc()
● VirtualFree()
● Múltiplos tamanho de página de memória
– Arquivos mapeados em memória
● Útil para compartilhamento de um arquivo por
mais de um processo
● Os processos podem alocar o espaço de memória
para compartilhamento, sem necessariamente
usar um arquivo
67. Interface do programador
● Gerência de memória
– Pilhas heap
● Região reservado do espaço de endereços de memória
● Geralmente tem um 1 Mb, sendo uma para cada processo criado
● Pode ser compartilhada, mas de forma sincronizada, para
garantir consistência
– Armazenamento local e thread
● Útil para funções que contam com dados globais ou
estáticos, e que por isso não funcionam bem em
ambiente multithread
68. Redes
● Interface → NDIS (Network Device Interface Specification)
– Permite que as configurações de um protocolo não interfiram nos
demais
● Protocolos
– Netware - IPX/SPX
– TCP/IP
– PPTP (Point-to-point tunneling protocol)
– WebDAV (Web Distributed Authoring and Versioning)
●
Baseado em HTTP, para autoria colaborativa na web
– AppleTalk
● Conexão com Mac
69. Ferramentas administrativas
● Agendador de tarefas
● Configuração do sistema
● Diagnóstico de Memória do Windows
● Firewall
● Fontes de dados (ODBC)
● Gerenciador do computador
● Iniciador iSCSI
● Monitor de deseempenho
● Serviços de componentes
● Serviços
● Visualizador de eventos
● Windows PowerShell Modules
70. Para refletir...
Analisando tecnicamente o
Windows sempre perde para o
Unix. Por que então algumas
empresas ainda mantém parte de
seus servidores na plataforma
Windows?
71. Referências
● SILBERSCHATZ, A.; GALVIN, P.; GAGNE, G. Sistemas
operacionais com Java. Tradução de Daniel Vieira.
Revisão técnica de Sérgio Guedes de Souza. 7. ed. Revista
e ampliada. Rio de Janeiro: Elsevier, 2008. Cap. 22