Estudo de caso: Windows 8 História do Windows até o Windows 8.1 Versões principais na história do sistema operacional da Microsoft para PC MS-DOS • Sistema criado para IBM • Características: • 16-bit • Único usuário • Linha de comando • 8 KB de memória História do Windows até o Windows 8.1 Versões principais na história do sistema operacional da Microsoft para PC MS-DOS-Based Windows • • • • Primeira interface gráfica MS-DOS ainda existente Windows 3.0: interface gráfica Windows 95: SO mais completo: • Memória Virtual; • Gerenciamento de processos; • Multiprogramação; • Programação 32-bits. • Problemas de segurança: isolação entre aplicações e SO • Windows 98 e ME: algumas correções, porém continua com problemas de instabilidade História do Windows até o Windows 8.1 Versões principais na história do sistema operacional da Microsoft para PC NT-based Windows • NT : New Tecnology e processador Intel 860 (codinome N10) • Primeiro sistema não basado sobre o MS-DOS • Criado pelo projetista David Cutler, da DEC • Feito para funcionar em diferentes processadores e versões antigas do Windows baseadas no MS-DOS • Baseado na tecnologia OS/2, API da IBM – 32 bits NT-based Windows • Lançamento do Windows 2000 • Suportava apenas processadores x86 • Características: • Plug-and-play • Serviço de diretório de redes • Melhora de gerenciamento de energia • Lançamento do Windows XP • Características: • Interface gráfica mais agradável • Versão do XP para servidores: Windows 2003 2000s: Windows baseados no NT (1) Sistemas operacionais da DEC desenvolvido por Dave Cutler. NT-based Windows • • • • Comuns em sistemas 32 Bits Threads como unidade de concorrência Bibliotecas são unidades de composição Fork/exec implementadas por uma única operação sem que se faça uma cópia do processo primeiro • Suporte para as API OS/2, porém, utilizava a API da Microsoft Win32 NT-based Windows • • • • Demandava muita memória Poucas aplicações 32 bits disponíveis Incompatibilidade entre drivers e aplicações Era forte em servidores 2000s: Windows baseados no NT (2) A Win32 API assegura a execução dos programas em quase todas as versões do Windows. NT-based Windows • Lançamento do Windows 2000 • Suportava apenas processadores x86 • Características: • Plug-and-play • Serviço de diretório de redes • Melhora de gerenciamento de energia • Lançamento do Windows XP • Características: • Interface gráfica mais agradável • Versão do XP para servidores: Windows 2003 NT-based Windows • Lançamento do Windows Vista (2006) • Características: • • • • • • Inovações na interface gráfica Novas características de segurança Limpeza de código Melhoras no desempenho Escalabilidade Confiabilidade • Versão de servidor: Windows 2008 • Número maior de linhas de código para manter compatibilidade • Número maior DLL, exe (system32 maior) • Lançamento do Windows 7: otimizado para várias arquiteturas História do Windows até o Windows 8.1 Versões principais na história do sistema operacional da Microsoft para PC Modern Windows • Crescente sucesso: • Tablets, smartphones • Serviços em nuvem • Serviços da web: vídeos, redes sociais, etc • Criação do Windows 8 • Integração com vários dispositivos • Reclamações: • Menu iniciar • Interface de tablets em desktops • Lançamento do Windows 8.1 para sanar essas reclamações • Melhor integração com serviços em nuvem • Aumento no número de programas Diferenças entre versões Estrutura do sistema Arquivos principais do Windows 8.1 Programação Windows 8.1 • As interfaces de programação que as aplicações são construídas ficam abaixo das camadas applet e GUI • Windows é composto por várias DLLs: • Dynamic Library Links: bibliotecas que contém pequenos códigos que permitem os programas acessarem recursos do SO de forma dinâmica. • Windows inclui interfaces de programação que são implementadas como serviços (processos separados) Programação Windows 8.1 • Aplicações se comunicam com serviços em modo usuário atrás de RPCs (Remote Procedures Calls) • O núcleo do Windows: NTOS • Oferece interface para chamadas ao sistema • Somente programadores da Microsoft possuem acesso a essa camada Programação Windows 8.1 • Todas as interfaces de modo usuário são implementadas utilizando subsistemas. • Executam em camadas acima do NTOS • Suportava: • OS/2 -> acabou no Windows XP • POSIX -> Removida no Windows 8.1 • Win32 -> Todas as aplicações são escritas no topo desse subsistema (WinFX, por exemplo) Programação no Windows (1) Camadas de programação nos modernos sistemas Windows Programação Windows 8.1 • Devido a necessidade de um único SO executar em desktops, celulares, tablets, etc, foi caindo em desuso o Win32 em favor do WinRT API • WinRT provê um conjunto mais consistente de interfaces e comportamentos • Win32 foi mantida pois WinRT não é capaz de prover todas as funcionalidades • Separar gestão de recursos do modelo de programação • Criação de processos Programação Windows 8.1 • Sistema Operacional decide o tempo de vida do processo (ao contrário de aplicações comuns do Win32): • Executam apenas o atual • Pouca capacidade de hardware = morte do processo • Tarefas em background devem ser especificadas no WinRT • Objetivo: economizar energia (bateria) e otimizar aplicativo corrente • Melhor em dispositivos portáteis Programação Windows 8.1 • Uma aplicação é executada em uma sandbox chamada AppContainer. • • Se a aplicação precisa acessar recursos do sistema chama os processos intermediários Subsistemas são constituídos por quatro componentes: • Processos de subsistemas; • Conjunto de bibliotecas; • “Ganchos” no CreateProcess; • Suporte ao kernel. Programação no Windows (2) Os componentes usados para construir subsistemas NT. Programação Windows 8.1 • Processos de subsistemas: • Um serviço • Inicializado pelo programa smss.exe como resposta a uma solicitação de CreateProcess no Win32 ou API correspondente • smss.exe: gerenciador de sessões, programa inicial do modo usuário inicializado • Somente Win32, pois foi o único mantido Programação Windows 8.1 • Conjunto de bibliotecas: • Implementa funções de alto nível do SO • Contém rotinas de comunicação entre os processos utilizando o subsistema e o processo do subsistema • Essa comunicação é feita pela LPC (local procedure call) Programação no Windows (2) Os componentes usados para construir subsistemas NT. Programação Windows 8.1 • “Ganchos” no CreateProcess • O gancho na chamada CreateProcess do Win32 detecta qual subsistema é necessário para o processo • Consulta na imagem binária • Solicita ao smss.exe a inicialização do subsistema • O subsistema fica responsável pelo carregamento do programa Programação Windows 8.1 • Suporte ao kernel • O núcleo NT oferece facilidades na criação de subsistemas específicos do SO. • Alguns códigos são obrigatórios • Chamada ao sistema NtCreateProcess • As chamadas ao sistema nativas incluem: • • • Gerenciamento de endereços virtuais Threads Manipuladores e exceções nos processos A API nativa do NT (1) • Objetos: chamadas ao sistema executas em modo núcleo • Microsoft não disponibilizou as chamadas nativas • Força a utilização do Win32 Categorias comuns de tipos de objeto em modo kernel. A API nativa do NT (1) • Nem todas as estruturas de dados criadas pelo sistema são objetos • Nem todos os objetos são do modo núcleo • Os únicos objetos do modo núcleo são aqueles que precisam ser nomeados, protegidos ou compartilhados. • Representam algum tipo de abstração de programação implementada no núcleo • Possuem tipo definido pelo sistema • Possuem operações bem definidas • Ocupam armazenamento no núcleo A API nativa do NT (1) • A cada criação de um novo objeto em modo núcleo é retornado um manipulador. • Utilizado para realizar operações sobre o objeto • Únicos por processos que os criaram • Não há compartilhamento de manipuladores entre processos • Entretanto, cria-se uma cópia protegida para outros processos acessarem • Cada objeto tem um descritor de segurança • Indica quem pode e quem não pode realizar operações sobre ele A API nativa do NT (2) Exemplos de chamadas nativas à API do NT que usam manipuladores para manipular objetos ao longo de fronteiras de processos. A API do Win32 (usada em linguagens como C/C++) Exemplos de chamadas do Win32 API e sua relação com as chamadas nativas da API do NT. A API do Win32 (usada em linguagens como C/C++) • Windows dá suporte para WOW (Windows on Windows): • WOW32 usado em sistemas 32 bits para executar aplicações 16 bits • WOW64 usando em sistemas 64 bits para executar aplicações 32 bits O registro do Windows (1) As chaves do registro do Windows. HKLM é uma abreviatura para HKEY LOCAL MACHINE. O registro do Windows (2) Algumas das chamadas da API Win32 API que usam o registro. Estrutura do sistema operacional Organização do sistema em modo kernel. O Hardware Abstraction Layer (HAL) – camadas de abstração do hardware Algumas das funções de hardware gerenciadas pelo HAL. Drivers de dispositivo (1) Visão simplificada da pilha de dispositivos para dois volumes do NTFS file volumes. O pacote de requisição de E/S (IRP) é passado para do topo até a base. As rotinas apropriadas dos drivers associados são invocadas em cada nível da pilha. As pilhas dos dispositivos também consistem em objetos alocados especificamente para cada pilha. Drivers de dispositivo (2) Implementação do gerenciador de objetos A estrutura do objeto no nível executivo gerenciado pelo gerenciador de objetos. Handles (descritores) (1) Estrutura de dados para a tabela de descritores para uma tabela mínima com até 512 descritores. Handles (2) Estrutura para uma tabela com até 16 milhões de descritores. Espaço de nomes dos objetos (1) Procedimentos associados à manipulação de um novo objeto. Espaço de nomes dos objetos (2) Alguns diretórios típicos no espaço de nomes dos objetos. The Object Name Space (3) Use of parse procedure: 1.Executive component passes Unicode pathname for namespace 2.Object manager searches through directories and symbolic links 3.Object manager calls the Parse procedure for object type 4.I/O manager creates IRP, allocate file object, send request to stack of I/O devices Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. The Object Name Space (4) Use of parse procedure: 5.IRP passed down the I/O stack until it reaches device object representing the file system instance 6.Device objects encountered as the IRP heads toward the file system represent file system filter drivers 7.File system device object has a link to file system driver object Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. The Object Name Space (5) Use of parse procedure: 8.NTFS fills in file object and returns it to I/O manager, which returns back up through all devices on the stack 9.Object manager is finished with its namespace lookup 10.Final step is to return back to the user-mode caller Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Espaço de nomes dos objetos (6) Passos usados no gerenciador de objetos e E/S na criação/abertura de um arquivo e obtenção do descritor de arquivo. Espaço de nomes dos objetos (7) Alguns tipos de objeto do executivo mais comuns gerenciados pelo gerenciador de objetos. Espaço de nomes dos objetos (8) Alguns tipos de objeto do executivo mais comuns. Jobs, Processes, Threads, Fibers Figure 11-22. The relationship between jobs, processes, threads and fibers. Jobs and fibers are optional; not all processes are in jobs or contain fibers. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Thread Pools and User-Mode Scheduling (1) Key elements of UMS implementation: 1.User-mode switching 2.Re-entering the user-mode scheduler 3.System call completion Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Thread Pools and User-Mode Scheduling (2) Figure 11-23. Basic concepts used for CPU and resource management. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Job, Process, Thread, and Fiber Management API Calls (1) Diferenças do UNIX: 1.A busca pelo caminho para encontrar o programa a ser executado é embutida no código de biblioteca para Win32. 2.O diretório corrente de trabalho é um conceito do modo kernel do UNIX, mas uma string do modo usuário do Windows. 3.UNIX analisa a linha de comando e passa um vetor de parâmetros, enquanto o Win32 deixa a análise de argumentos para o programa individual (pode tratar caracteres curingas, porSystems:4th exemplo, *txt) Inc. All rights reserved. Tanenbaum & Bo, Modern Operating ed., (c) 2013 Prentice-Hall, Job, Process, Thread, and Fiber Management API Calls (2) Differences from UNIX: 4. No UNIX, o descritor define se os descritores de arquivos podem ou não ser herdados. No Windows é uma propriedade do descritor e do parâmetro de criação do processo. 5.Novos processos passam informações diretamente sobre a sua janela primária no Win32. No UNIX essa informação é passada como parâmetros. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Job, Process, Thread, and Fiber Management API Calls (3) Differences from UNIX: 6.Windows não possui um bit SETUID como uma propriedade do executável, mas um processo pode criar outro que seja executado como um usuário diferente (com o token apropriado). 7.O descritor de processos retornado pelo Windows pode ser usado para modificar o novo processo/thread de várias maneiras. UNIX apenas faz modificações ao novo processo entre as chamadas fork e exec. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Comunicação entre Processos As threads podem se comunicar de várias maneiras: • Pipes • • Mailslots • • • Característica do OS/2 (compatibilidade) Semelhante aos pipes, mas unidirecional Soquetes • • Enviam bytes ou mensagens Igual aos pipes, mas conectam processos em máquinas diferentes RPC (chamadas de procedimentos remota) • Processo A pede para o Processo B abrir um espaço de endereçamento em B e retorne o resultado para A. Sincronização entre Processos • • • • Semáforos Mutexes Regiões Críticas Eventos Implementation of Processes and Threads (1) Figure 11-24. Some of the Win32 calls for managing processes, threads, and fibers. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Implementation of Processes and Threads (2) Figure 11-24. Some of the Win32 calls for managing processes, threads, and fibers. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Criação de processos • Um processo é criado quando há chamada ao comando CreateProcess, no Win32. • Essa chamada invoca um procedimento (em modo usuário) na kernel32.dll que cria o processo. Scheduling (1) • Windows não possui uma thread de escalonamento central. • Quando a thread não pode mais executar, ela entra em modo núcleo e executa ela mesma o escalonador. • As condições que fazem com a que thread execute o escalonador são: 1. A thread em execução se bloqueia devido a um semáforo, mutex, evento, I/O, etc Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Scheduling (1) 2.Ela sinaliza um objeto (por exemplo, faz um up em um semáforo). 3.O quantum expira. 4.Uma operação de I/O é completada. 5.Um tempo de espera (wait) expira. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Scheduling (2) Figure 11-25. Mapping of Win32 priorities to Windows priorities. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Scheduling (3) Figure 11-26. Windows supports 32 priorities for threads. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Scheduling (4) Figure 11-27. An example of priority inversion. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Memory Management Fundamental Concepts • x86: endereços de 32 bits de largura • x64: endereços de 32 e 64 bits de largura • Tamanho da página: 4Kb Memory Management Fundamental Concepts Figure 11-28. Virtual address space layout for three user processes on the x86. The white areas are private per process. The shaded areas are shared among all processes. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Memory Management Fundamental Concepts • Páginas podem estar em três estados: • Inválida: página não está mapeada • Referência a ela causa page fault • Comprometida: dados ou código foram mapeados para a página • Reservada: páginas inválidas, porém reservadas para um processo • A medida que vai precisando, as páginas vão se tornando comprometidas Memory Management Fundamental Concepts • Arquivo de páginas • Fica no disco • Serve para armazenar as páginas que estão comprometidas • Uma página comprometida apenas é escrita nesse arquivo caso vá para o disco (just-in-time) • Se a página retorna para a memória, a cópia em disco vai para uma lista chamada lista de espera • Windows suporta até 16 arquivos de páginas (espalhados por diversos discos) Memory-Management System Calls Figure 11-29. The principal Win32 API functions for managing virtual memory in Windows. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Implementation of Memory Management Figure 11-30. Mapped regions with their shadow pages on disk. The lib.dll file is mapped into two address spaces at the same time. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Page Fault Handling (1) • Pré-Paginação – SuperFecth • Pré carga de páginas de aplicativos recém abertos • Dois bits: • A – Acesso • D – Sujo • LRU Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Page Fault Handling (1) Figure 11-31. A page table entry (PTE) for a mapped page on the Intel x86 and AMD x64 architectures. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Page Fault Handling (2) Categorias para falta de páginas: 1.A página referenciada não está comprometida. 2.Ocorreu violação de proteção 3.Uma página compartilhada do tipo copiar se escrita estava para ser modificada 4.A pilha precisa crescer 5.A página referenciada está comprometida, mas não está mapeada Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. The Page Replacement Algorithm (1) Figure 11-32. The Windows self-map entries are used to map the physical pages of the page tables and page directory into kernel virtual addresses (shown for 32-bit PTEs). Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. The Page Replacement Algorithm (2) • Cada processo tem um conjunto de trabalho: • Conjunto de trabalho: são as páginas mapeadas que estão na memória e que podem ser referenciadas sem uma falta de página • Possuem valores mínimos e máximos Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. The Page Replacement Algorithm (2) Três níveis de atividade para o gerenciador do conjunto de trabalho: 1.Muita memória disponível • Reinicia os bits de acesso e os transforma da idade de cada página Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. The Page Replacement Algorithm (2) Três níveis de atividade para o gerenciador do conjunto de trabalho: 2.Memória diminuindo • Qualquer processo com quantidade significativa de páginas não utilizadas, para de adicionar páginas ao conjunto de trabalho e começa a substituir páginas mais antigas Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. The Page Replacement Algorithm (2) Três níveis de atividade para o gerenciador do conjunto de trabalho: 3.Memória está baixa • Remove as páginas mais antigas, diminuindo os conjuntos de trabalho Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Physical Memory Management (1) Figure 11-33. Some of the major fields in the page frame database for a valid page. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Physical Memory Management (2) Figure 11-34. The various page lists and the transitions between them. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Input/Output API Calls Figure 11-35. Native NT API calls for performing I/O. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Device Drivers Figure 11-36. A single level in a device stack. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. I/O Request Packets Figure 11-37. The major fields of an I/O Request Packet. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Device Stacks Figure 11-38. Windows allows drivers to be stacked to work with a specific instance of a device. The stacking is represented by device objects. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Implementation of the NT File System (1) Figure 11-39. The NTFS master file table. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Implementation of the NT File System (2) Figure 11-40. The attributes used in MFT records. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Storage Allocation (1) Figure 11-41. An MFT record for a three-run, nine-block stream. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Storage Allocation (2) Figure 11-42. A file that requires three MFT records to store all its runs. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Storage Allocation (3) Figure 11-43. The MFT record for a small directory. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. File Compression Figure 11-44. (a) An example of a 48-block file being compressed to 32 blocks. (b) The MFT record for the file after compression. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Security in Windows 8 Security properties inherited from NT: 1.Secure login with antispoofing measures. 2.Discretionary access controls. 3.Privileged access controls. 4.Address space protection per process. 5.New pages must be zeroed before being mapped in. 6.Security auditing. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Fundamental Security Concepts Figure 11-45. Structure of an access token. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Security API Calls (1) Figure 11-46. An example security descriptor for a file. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Security API Calls (2) Figure 11-47. The principal Win32 API functions for security. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. Security Mitigations Figure 11-48. Some of the principal security mitigations in Windows. Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved. End Chapter 11 Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved.