ESTUDO DE CASO – WINDOWS VISTA História • Os sistemas operacionais da Microsoft para PCs desktop e portáteis e para servidores podem ser divididos em 3 famílias: • MS-DOS • Windows baseado em MS-DOS • Windows baseado em NT História História • Sistema Operacional mais extenso já visto Programando o Windows Vista A figura a seguir mostra as camadas do sistema operacional Windows. As camadas são formadas por bibliotecas de codigo (DLLs), com as quais os programas se conectam dinamicamente para acessar os recursos do sistema operacional. As aplicações se comunicam com serviços no modo usuario por meio de chamadas de procedimento remoto (remote-procedure calls – RPCs). Programando o Windows Vista Programando o Windows Vista O núcleo do sistema operacional NT é o programa de modo núcleo NTOS (ntoskrnl.exe) que provê a interface de chamadas de sistema sobre a qual todo o SO é montado. Somente escrevem nessa camada programadores da Microsoft. Todas as interfaces de modo usuário são implementadas utilizando subsistemas que funcionam no topo das camadas NTOS. Programando o Windows Vista A interface de programação nativa de aplicações do NT Como em todos os outros sistemas operacionais, o Windows Vista pode executar um conjunto de chamadas de sistema, que são implementadas na camada de execução NTOS do modo núcleo. Elas são usadas internamente por programas de baixo nível que acompanham o pacote do sistema operacional, bem como drivers de dispositivos do modo núcleo. Programando o Windows Vista A interface de programação nativa de aplicações do NT Na API nativa do NT há chamadas disponíveis para criar novos objetos no modo núcleo ou acessar os existentes. Cada chamada, criando ou abrindo um objeto, retorna um resultado conhecido como um manipulador. É possível duplicar um manipulador em uma tabela de descritores de outros processos de uma forma protegida, permitindo aos processos compartilhar o acesso a objetos. Todo objeto tem um descritor de segurança associado a ele, detalhando quem pode ou não executar quais tipos de operações no objeto baseado no acesso solicitado. Programando o Windows Vista A interface de programação nativa de aplicações do NT Nem todas as estruturas de dados criadas pelo sistema são objetos e nem todos os objetos são do modo núcleo. Os objetos do modo núcleo não são, logicamente, específicos para o Windows. Os sistemas UNIX também dão suporte a uma variedade de objetos do modo núcleo, como arquivos, soquetes de rede, pipes, dispositivos, processos e facilidades de comunicação entre processos, como memória compartilhada, portas de mensagem, semáforos e dispositivos de E/S. Programando o Windows Vista A interface de programação nativa de aplicações do NT Não são apenas as aplicações que usam objetos gerenciados pelo gerenciador de objetos. O próprio sistema operacional também pode criar e usar objetos, e o faz de forma intensa. Programando o Windows Vista A interface de programação de aplicações do Win32 As chamadas de funções do Win32 são denominadas API do Win32. Essas interfaces são divulgadas, amplamente documentadas e implementadas e, embora as APIs nativas do NT não sejam publicadas, muitas das funcionalidades que elas apresentam são acessíveis pela API do Win32. Programando o Windows Vista A interface de programação de aplicações do Win32 Como as interfaces do Win32 existentes sofrem poucas alterações a cada lançamento do Windows, na teoria os programas binários que funcionam de maneira correta nas versões anteriores continuarão funcionando na nova versão. Na prática, são freqüentes os problemas com as novas versões. Programando o Windows Vista A interface de programação de aplicações do Win32 Paginação por demanda - O próprio sistema de gerenciamento de memória executa as entradas e saídas conforme a necessidade, após os arquivos serem mapeados na memória pelos threads. Programando o Windows Vista A interface de programação de aplicações do Win32 Áreas importantes para programas e interface: 1. E/S de arquivos 2. Gerenciamento de dados nos arquivos 3. Segurança 4. Operações de GUI (todas as chamadas para gerenciamento da interface gráfica do sistema) Programando o Windows Vista O registro do Windows O Windows anexa um tipo especial de sistema de arquivos no espaço de nomes do NT. Esse sistema de arquivos é chamado de registro e é organizado em volumes separados, chamados colméias Programando o Windows Vista O registro do Windows Um problema é que a maior parte dos usuários, aplicações e todos os drivers funcionam com todos os privilégios e de maneira freqüente modificam parâmetros do sistema diretamente no registro, algumas vezes interferindo uns com os outros e desestabilizando o sistema. O registro (regedit) é um cruzamento estranho entre um sistema de arquivos e uma base de dados, e ainda assim PE diferente de ambos. Ele permite aos usuários editá-lo. Mas a perda do registro implica a reinstalação de todos os softwares no sistema. Estrutura do Sistema Operacional A camada central é o próprio núcleo do Windows NT que é carregado do ntoskrnl.exe quando o Windows inicializa. O núcleo do NT tem duas camadas, o executivo contendo a maioria dos serviços, e uma camada menor, chamada também de núcleo que implementa os fundamentos das abstrações de sincronização e agendamento de threads e também tratadores de armadilha, interrupções e outros aspectos de como a cpu é gerenciada Camadas do modo núcleo A Camada de Abstração de Hardware • Um dos objetivos do Windows Vista, como nos lançamentos do Windows baseado no NT anteriores a ele, foi tornar o sistema operacional portátil a outras plataformas. De maneira ideal, para trazer o sistema operacional a um novo sistema de computador, teríamos apenas de recompilar o sistema operacional usando um compilador para a nova maquina e colocá-lo em funcionamento uma primeira vez. A Camada de Abstração do Hardware Infelizmente, não é assim tão simples. Enquanto vários dos componentes em algumas camadas do sistema operacional podem ser bastante portáteis, outras camadas devem lidar com registradores de dispositivos, interrupções, DMA e outras características de hardware que mudam de maneira significativa de maquina para maquina A Camada de Abstração de Hardware Os detalhes de hardware sobre como a memória e organizada em grandes servidores, ou quais sincronizações primitivas de hardware estão disponíveis, também podem ter grande impacto nos níveis mais altos do sistema, por exemplo o gerenciador de memória virtual do NT e a camada do núcleo sabem de detalhes de hardware relacionados a cache e localidade de memória. A Camada de Abstração de Hardware Além dessas questões maiores de portabilidade, também há um vasto número de problemas menores até entre placas-mãe diferentes de vários fabricantes. Diferenças nas versões de CPUs também afetarão esta versão do Windows. HAL - Camada de abstração de Hardware A Microsoft fez uma tentativa séria de esconder esses tipos de dependência de máquina usando um software de código aberto que permite que outros softwares acessem funções e obtenham informações do sistema operacional e de hardwares com muito menos dificuldade se tivessem que escrever um software diretamente utilizando funções do hardware, o HAL serve para abstrair essas informações facilmente utilizando a Camada de abstração de hardware presente em todos os sistemas operacionais.