Faculdades Integradas de Mineiros Curso de Sistemas de Informação Sistemas Operacionais II Estudo de Caso 2: Windows Vista Grupo 4 Helder / Wagner / Frantyeis Junho/2010
O Windows usa uma estratégia Just-In-Time as paginas são comprometidas e acompanhadas do arquivo de paginas não recebem espaço nesse arquivo ao menos que precisem voltar para o disco.nenhum espaço de disco é alocado para as paginas que não precisam sair da memória.se a memória virtual total e menor que a memória física disponível, não há necessidades de um arquivo de paginas.
Com a estratégia de pré alocação, toda a memória virtual do sistema utilizada para o armazenamento de arquivos privados fica limitada ao tamanho dos arquivos das paginas. Com a alocação Just in time ela pode ser tão grande quando o tamanho dos arquivos de paginas e da memória física. Comparando os discos cada vez maiores e mais baratos, com a memória física, as economias de espaço não são tão significativas quanto a possibilidade de melhorar desempenho.
Endereçamento de memórias físicas Grandes Há muitos anos, quando os espaços de endereçamento de16bits ou 20Bits eram usuais mesmo com maquinas dispondo megabytes de memória de memória física, todo tipo de manobra era pensado, de modo a permitir que os programas utilizassem mais memória física do que a que cabia no espaço do endereçamento, essas manobras tinham o nome de alternância entre bancos, nas qual um programa podia substituir algum bloco da memória acima do limite de 16 ou 20Bits por outro de sua própria memória.com a passar do tempo as memórias foram crescendo.os processadores XEON da Intel permitiam que a memória física fosse endereçada em até 36Bits ou seja o que significa 64Gb de memória física, já nos processadores de 32Bits a sua memória não passaria de 2 ou 3Gbs, AEW(address windowing extensions extensões de janelas de endereços), essa técnica permite as programas como o privilegio adequado solicitar a alocação de memória física.
Chamada de sistema para gerenciamento de memória. A API win32 contem diversas funções que permitem a um processo gerenciar explicitamente sua memória virtual. Vamos citar as mais importantes na tabela abaixo
Implementação do gerenciamento de memória Na plataforma x86, o Windows vista suporta, por processo um único espaço de endereçamento linear de 4gb com paginas sobre demanda, a fragmentação não é suportada de maneira nenhuma, teoricamente os tamanhos das paginas podem ser qualquer potencia de 2 até 64KB. No Pentium esse limite esta fixado em 4K, alem disso o próprio sistema pode usar paginas de 4MB para aumentar a freqüência da TLB(tabela de tradução rápida) na unidade de gerenciamento de memória do processador. Diferente do escalonador que seleciona individualmente os thread para executar e não se preocupa com os processos, o gerenciador de memória se preocupa exclusivamente com processos e não com as thread por que são os processos que tomam conta da memória e é com isso que o gerenciador de memória se preocupa.quando uma região dos espaço de endereçamento virtual é alocada o gerenciador de memória cria um VAD(Descritor de endereço virtual) para ele, contendo o intervalo de endereços mapeados, os VADs estão organizados em arvores balanceadas de modo que o descritor para um endereço especifico posso ser localizado de forma eficiente.
Tratamento de falta de página Faltas de página podem ocorrer quando: 1. Página referenciada não está comprometida 2. Ocorre uma violação de proteção 3. A 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
Tratamento de falta de página 1º e 2º caso: São erros de programação, causado quando um programa tenta utilizar um endereço para o qual não se supõe existir um mapeamento válido ou tenta executar uma operação inválida. 3º caso: Ocorre quando há uma tentativa de escrita em uma página de somente leitura. 4º caso: Ocorre quando um thread coloca um valor na pilha e referencia uma página que ainda não foi alocada. 5º caso: Tem-se uma falta de página normal, ou seja, a página referenciada está comprometida mas não está mapeada.
Tratamento de falta de página Quando o gerenciador de memória consegue satisfazer uma falta de página sem a necessidade de lê-la no disco, a falta é classificada como falta aparente. Se for necessária a leitura no disco então é uma falta estrita. Faltas aparentes são muito mais baratas e causam menos impacto no desempenho da aplicação. Quando uma página física não está mais mapeada pela tabela de páginas de nenhum processo, ela é colocada em uma lista livre, modificada ou em espera.
Tratamento de falta de página Páginas que nunca mais serão necessárias são automaticamente liberadas. Páginas que podem causar novas faltas vão para a lista de modificadas ou para a lista de espera. As páginas na lista de modificadas serão escritas no disco e então movidas para a lista de espera.
O algoritmo de substituição de páginas Quando a pouca página de memória física livre, é removido pelo gerenciador de memória, páginas dos processos no modo usuário e modo núcleo, com o objetivo de manter as páginas virtuais mais importantes na memória e as outras no disco. As páginas mais importantes são definidas pelo uso acentuado do conjunto de trabalho. O conjunto de trabalho consiste nas páginas mapeadas que estão na memória e que podem ser referenciadas sem uma falta de página. Cada conjunto de trabalho possui dois parâmetros: - tamanho mínimo e tamanho máximo de páginas na memória
O algoritmo de substituição de páginas Três níveis de atividade para o gerenciador do conjunto de trabalho: - Muita memória disponível: Varre as páginas reinicializando os bits de acesso e utilizando seus valores para representar a idade de cada página. - A memória está diminuindo: Para processos com quantidade significativa de páginas não utilizadas, para de adicionar páginas ao conjunto de trabalho e começa a substituir as páginas mais antigas. - A memória está baixa: Remove as páginas mais antigas, diminuindo os conjuntos de trabalho para que eles fiquem abaixo do valor mínimo.
Gerenciamento da memória física Além da lista de livres, de espera e a lista de modificadas, existe a lista de páginas livres que foram zeradas e lista que armazena as páginas que foram identificadas como contendo erros de hardware. Páginas são referenciadas por uma entrada válida de uma tabela de páginas ou estão em uma das cinco listas citadas, chamadas de base de dados dos números de molduras de página. Entradas possuem tamanho fixo, mas diferentes formatos são utilizados para tipos de entrada distintos. Entradas válidas mantêm o estado da página e um contador que informa quantas tabelas de páginas apontam para a página.
Gerenciamento da memória física As páginas de um conjunto de trabalho informam quais entradas as referenciam. As entradas da tabela para as páginas físicas também são utilizadas para resumir os bits sujos encontrados nas diferentes entradas da tabela de páginas que apontam para a página física. A movimentação das páginas pelos conjuntos de trabalho e as diferentes listas é feita pelo gerenciador de conjuntos de trabalho e outros threads do sistema. O gerenciamento de memória é um subsistema que tenta ser autoajustável ao máximo, mas há também parâmetros que os administradores podem ajustar para atuar no desempenho do sistema.
Caching no Windows Vista Aumenta o desempenho de sistemas de arquivos mantendo na memória as regiões recente e freqüentemente utilizadas dos arquivos. Regiões de arquivos armazenadas em cache são chamadas de visões (views). O gerenciamento real da memória física na cache é feito pelo gerenciador de memória. O gerenciador de cache administra o uso dos endereços virtuais do núcleo para visões, organiza para que o gerenciador de memória mantenha as páginas da cache na memória física e oferece interfaces para o sistema de arquivos. Os recursos do gerenciador de cache no Windows são compartilhados com todos os sistemas de arquivos.
Caching no Windows Vista Caching virtual é conveniente porque os sistemas de arquivos não precisam primeiro traduzir as partes do arquivo em números de blocos físicos, a tradução é feita quando o gerenciador de memória chama o sistema de arquivos para acessar a página no disco. Como o gerenciador de cache trabalha: Quando um arquivo é referenciado, é mapeado 256 KB do espaço de endereçamento virtual. Se o arquivo for maior que 256 KB, só parte dele é mapeada. Se não tiver mais de espaços de 256 KB, deve ser retirado os arquivos mais antigos antes de mapear um novo. Quando mapeado o arquivo, é atendido às requisições de blocos que são copiados do espaço de endereçamento virtual do núcleo para o buffer do usuário. Se o bloco copiado não estiver na memória física, ocorrerá uma falta de página e o gerenciador de memória atenderá a falta da maneira usual.
Caching no Windows Vista O gerenciador de cache também controla páginas mapeadas para memória virtual e acessadas com ponteiros em vez de serem copiadas entre os buffes do usuário e do núcleo. Caching não é apropriado para todas as aplicações. Grandes aplicações empresariais, como SQL, preferem gerenciar seu próprio caching e E/S. O Windows permite que os arquivos sejam abertos para E/S sem buffer, que não passam pelo gerenciador de cache. Nas grandes aplicações, o caching é substituído por espaços de endereçamento virtual de usuário maiores, chamado modo /3 GB.
Caching no Windows Vista O Windows Vista introduziu uma forma completamente nova de caching, denominada ReadyBoost. Os usuários pode conectar uma memória flash à USB ou a outras portas e conseguir que o sistema operacional utilize essa memória como uma cache de escrita direta, útil no aumento da quantidade de caching de leitura de dados de disco que é possível. ReadyBoost comprime os dados e codifica-os. A implementação faz uso de um driver filtro que processa as solicitações de E/S enviadas ao gerenciador de volume pelo sistema de arquivos. ReadyBoost têm menos impacto em sistemas com 1 GB ou mais de DRAM. Esse recurso é válido não só por desempenho, mas também na redução do consumo de energia, já que terá menos acesso ao disco.
Entrada e saída no windows vista Os objetivos do gerenciador de E/S do windows são fornecer uma estrutura fundamentalmente extensível e flexível para lidar, de modo eficiente, com uma grande variedade de dispositivos e serviços de E/S, suportar a descoberta automática de periféricos (Plug-and-play) e fazer a instalação de seus drivers e realizar o gerenciamento de energia dos dispositivos e da CPU- tudo por meio de uma estrutura fundamentalmente assíncrona que permite que o processamento se sobreponha às transferências de E/S.
Conceitos fundamentais - O gerenciador de E/S é ligado intimamente com o gerenciador de recursos Plug-and-play. - No windows, todos os sistemas de arquivos, filtros anti-vírus, gerenciadores de volume, pilhas de protocolo de rede e até serviços do núcleo que não tem hardware associado são implementados usando-se drivers de E/S. - Uma característica interessante do windows é o suporte a discos dinâmicos, que podem cobrir várias partições e ate mesmo vários discos podendo ser configurados em tempo real, sem nem mesmo ter de reinicializar. - Outro aspecto do windows é seu suporte à E/S assíncrona. È possível que um thread comece uma operação de E/S e então continue sendo executado em paralelo com a operação de E/S. - A prioridade de E/S é determinada pela prioridade do thread em questão ou pode ser configurada de forma explícita, há cinco prioridades especificadas; crítica, alta, normal, baixa e muito baixa.
Chamada API de entrada/saída As chamadas API de sistema fornecidas pelo gerenciador de E/S não são muito diferentes das oferecidas pelos pela maioria dos sistemas operacionais. As operações básicas são open, read, write, ioctl e close, mas também há recursos prontos para usar as operações de energia, operações para configuração de parâmetro, descarga de buffers do sistema etc.
Chamada API de entrada/saída As principais interfaces de chamada de sistemas primárias do gerenciador de E/S são; - NtCreatFile; é usada para abrir arquivos existentes ou novos. - NtReadFile e NtWriteFile; recebem o manipulador, buffer e tamanho de um arquivo. - NtQueryDirectoryFile; é um exemplo de um paradigma-padrão no executivo onde vários APIs de busca existem para acessar ou modificar informações sobre tipos específicos de objetos. - NtNotifyChangeDirectoryFile; os threads podem realizar E/S para determinar se quaisquer mudanças aos objetos (principalmente diretórios de sistemas de arquivos, nesse caso, ou chave de registro). - NtQueryInformationFile; é a versão específica para arquivos de chamadas de sistemas para os diretórios.
Chamada API de entrada/saída Há também chamadas de sistemas para tratar de portas de conclusão de E/S, um recurso de enfileiramento do windows que ajuda servidores multithread a fazerem uso eficiente de operações assíncronas de E/S colocando os threads em estado de pronto por demanda e reduzindo o número de troca de contexto necessárias para servir E/S em threads dedicados.
Implementação de E/S Drivers de díspositivos WDM (modelo de driver do windows- windows driver model ), com qual os drivers de dispositivos devem ser confrontados. A microsoft também oferece um verificador de drivers que valida muitas das ações dos drivers para assegurar de que eles estão em conformidade com os requisitos do WDM para estrutura e protocolos de solicitação de E/S, gerenciamento de memória etc. WDF (fundamentos de driver do windows- windows -driver-fundation) que é executado acima do WDM e simplifica muitos dos requisitos mais comuns, a maioria relacionada à interação correta com o gerenciador de energia e operações prontas para usar.
Implementação de E/S Drivers de díspositivos UMDF( arcabouço para driver do modo usuário- user-mode usuario framework) para escrever drivers como serviços que são executados nos processos. KMDF(arcabouço para driver do modo núcleo- kernel-mode usuario framework) para escrever drivers como serviços que são executados no núcleo, mas tornando muitos detalhes do WDM automáticos.
Pacotes de solicitação de E/S O fundamento do IRP é um vetor dimensionado de forma dinâmica contendo campos que podem ser usados por cada driver para a pilha de dispositivos que esteja tratando a solicitação.
Referência Andrew S. Tanenbaum. Sistemas Operacionais Moderno 3ª edição