Upload
jocelma-rios
View
5.786
Download
3
Tags:
Embed Size (px)
Citation preview
Estudo de caso do Windows
Profª Jocelma Rios23/05/2011
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
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
MS-DOS● Monousuário● Memória limitada a 1 Mb → 640 Kb para
programas de usuário● 16 bits● FAT 16
Windows 1.0● Inspirado no Apple Lisa (Macintosh)
Windows 2.0● 1987● PC-AT
Windows 3.1● 1990● Sucesso comercial● Interface gráfica do
MS-DOS● Espaço de
endereçamento compartilhado (bugs!)
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
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
Windows 98
● Mais funcionalidades são transferidas do MS-DOS● Ainda há partes do SO em 16 bits
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
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
Windows NT
● Windows New Technology
● 1a versão em 1999
● Esperava-se grande sucesso, mas...
● … exigia máquinas com muitos recursos, que na época não era muito comum
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
Windows NT
Win95/Win98 X Windows NT
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
Windows 2000
Quadro comparativo entre as versões
Estrutura do Windows 2000
Windows XP
● Eliminou alguns cenários de reboot
● 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
Sucessor do Windows 2000, nos computadores
pessoais
Princípios de projeto – Windows XP
● Segurança● Confiabilidade● Compatibilidade com aplicações● Desempenho● Extensibilidade● Portabilidade● Suporte internacional
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
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
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
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
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 Refere-se à capacidade
do sistema operacional do sistema operacional acompanhar os avanços acompanhar os avanços
na tecnologia de na tecnologia de computaçãocomputação
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
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
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
–
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
Windows Vista
Versões do Windows VistaVer detalhes em http://windows.microsoft.com/pt-BR/windows7/products/compare
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
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
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
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
(?)
Windows 7
Mais detalhes em: http://windows.microsoft.com/pt-BR/windows7/products/compare?T1=tab20
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
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
HAL● Por questões de eficiência, às vezes opta-se por
fazer o acesso direto ao hardware, porém...
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
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
Kernel
● Implementação de primitivas de sincronismoAs estruturas de dados fundamentais do SO são gerenciadas como objetos usando facilidades comuns de alocação, contagem de referência e segurançaObjetos 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
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
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.
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.
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
Executivo
● Tipos de objetos
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
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
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
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
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+
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
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
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
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
Informações de controle
● Arquivos .ini● A partir do Win 95:
registryregistry● Editor: regedit.exeEditor: regedit.exe
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
Interface do programador● Gerenciamento de processosGerenciamento 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)
Interface do programador● Escalonamento de processosEscalonamento 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()
Interface do programador● Escalonamento de processosEscalonamento 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)
Interface do programador● EscalonamentoEscalonamento de processos 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()
Interface do programador● EscalonamentoEscalonamento de processos 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
Interface do programador● EscalonamentoEscalonamento de processos 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
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
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
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
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
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
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?
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