Estudo de caso do Windows




Profª Jocelma Rios
23/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
                             ●   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
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     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
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
                                            do sistema operacional
                                            acompanhar os avanços
                                               na tecnologia de
                                                  computaçã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 Vista
Ver 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 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
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:
    registry
●   Editor: 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 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 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 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
●   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()
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
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
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

Estudo de caso do windows

  • 1.
    Estudo de casodo Windows Profª Jocelma Rios 23/05/2011
  • 2.
    O que pretendemosesta 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
  • 5.
    Windows 1.0 ● Inspirado no Apple Lisa (Macintosh)
  • 6.
    Windows 2.0 ● 1987 ● PC-AT
  • 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
  • 15.
  • 16.
  • 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
  • 18.
  • 19.
  • 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 detalhesem: http://windows.microsoft.com/pt-BR/windows7/products/compare?T1=tab20
  • 37.
    Funcionamento do WindowsXP ● 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
  • 47.
    Executivo ● Tipos de objetos
  • 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 – Win32 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
  • 57.
    Informações de controle ● Arquivos .ini ● A partir do Win 95: registry ● Editor: regedit.exe
  • 58.
    DLL – DynamicLink 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