O documento discute a história e evolução dos sistemas operacionais Windows, desde o MS-DOS até o Windows 2000. Apresenta os principais componentes e funcionalidades de um sistema de E/S, incluindo o gerenciador de E/S, drivers de dispositivo, gerenciador de cache e estruturas de dados como objetos de arquivo e IRPs.
4. MS-DOS
Em 1981 a IBM lançava o IBM PC com
um sistema operacional de 16 bits
chamado MS-DOS 1.0.
Sistema basicamente monousuário e
orientado a linha de comando durante
toda seu desenvolvimento.
5. Windows
Windows 1.0 lançado em 1985, sendo
uma interface gráfica para o MS-DOS.
Windows 3.0 foi o primeiro a obter
sucesso, mas ainda não era um sistema
operacional completo.
Defeitos inerentes do DOS eram
herdados
6. Windows
Com a chegada do Windows 95, MS-
DOS começa a não gerenciar todo o
sistema operacional.
Ainda existe grande parte de código de
16 bits no sistema operacional.
7. Windows
Windows 98 contém a ultima versão do
MS-DOS, mas já tem um novo sistema
de arquivos.
Problemas crônicos:
Kernel não-reentrante
Endereçamento virtual parcialmente
compartilhado
8. Windows NT
Em 1988 a Microsoft decidiu fazer um
sistema operacional estável, robusto e
inovador.
Dave Cuttler, um dos desenvolvedores
do sistema operacional VMS foi
contratado para gerenciar esse projeto.
9. Windows NT
A primeira versão, Windows NT 3.1, era
tecnicamente superior ao Windows
baseado no MS-DOS.
Mas a falta de softwares 32 bits e
lentidão do sistema fizeram com que ele
não se tornasse muito popular.
10. Windows NT
Windows NT 4.0, lançado em 1996,
tinha a mesma interface do Windows
95.
Extremamente portável e quase
totalmente escrito em C.
12. Windows 2000
O Windows NT 5.0 foi chamado de
Windows 2000.
Misturava a interface do Windows 98
com a confiabilidade da tecnologia NT.
Extensibilidade, portabilidade,
escalabilidade, compatibilidade,
robustez e integração foram seus
principios de desenvolvimento.
17. Gerência de ES
Sumário
Objetivos e funcionalidades de sistema um E/S
Componentes do Sistema de E/S
Gerenciador de E/S
Drivers de Dispositivo
Estrutura de dados do sistema E/S
Tipos de E/S
Processamento de E/S
Estruturas de Dados de E/S
Recuperação de falha de energia
Suporte a RAID
18. Objetivos e Funcionalidades de
um Sistema de E/S
Oferecer uma estrutura para lidar de modo eficiente com uma
grande variedade de dispositivos de E/S;
Parte do código de um SO que trata de requisições de E/S de
diferentes processos e as transmite aos dispositivos;
Funções:
Emitir comandos;
Capturar interrupções;
Manipular erros.
19. Exigências de Projeto de um
Sistema de E/S
Proporcionar suporte a vários sistemas de arquivos instaláveis,
como por exemplo FAT, UFS, CDFS e NTFS;
Permitir adição e remoção de componentes físicos do sistema
de uma forma dinâmica;
Otimizar o processamento de E/S;
Satisfazer as exigências de um Sistema Operacional quanto a:
Portabilidade;
Proteção a recursos compartilhados;
Suporte a interfaces Win32, OS/2 e POSIX;
Suporte a ambientes multiprocessados.
20. Componentes do Sistema de
E/S
O sistema de E/S é guiado por pacotes, onde toda
requisição de E/S é representada por um pacote de
solicitação de E/S que trafega de um componente
do sistema de E/S para outro;
Possui vários componentes, como o gerenciador de
E/S, o gerenciador de cache, o gerenciador de
energia, drivers de dispositivo, que atuam em
conjunto, recebendo e enviando solicitações de E/S;
Embora não seja um componente direto, a camada
de abstração de hardware (HAL) interage com os
componentes do sistema de E/S, servindo para
mascarar as diferenças entre os drivers diferentes
acoplados ao sistema.
21. Componentes – Gerenciador de
E/S
É responsável pelos acessos ao sistema de arquivos,
gerenciador de cache, drivers de dispositivo e drivers de rede;
Gerencia os buffers para as requisições de E/S e trabalha em
conjunto com o gerenciador de Máquina Virtual (VM – Virtual
Machine) para prover um sistema de E/S mapeado em
memória;
Controla o gerenciador de cache e suporta operações síncronas
e assíncronas, além de possuir mecanismos para um driver
chamar outro driver.
Define uma estrutura ordenada, onde as solicitações de E/S são
transmitidas ao sistema de arquivos e aos drivers de
dispositivo;
Fornece um código comum a drivers diferentes que estes
chamam para executar seu processamento de E/S;
Oferece facilidades de E/S que permitem aos subsistemas de
ambiente Win32 e POSIX implementar suas respectivas APIs.
22. Componentes – Pacote de
Requisição de E/S (IRP)
O pacote de requisição de E/S (IRP – I/O Request
Packet) é onde o sistema de E/S armazena
informações necessárias para processar uma
solicitação de E/S;
IRP é uma estrutura de dados que controla o modo
como a operação de E/S é processada em cada
estágio ao longo do caminho do sistema de E/S;
Um driver recebe um IRP, efetua a operação por ele
especificada e devolve ao gerenciador de E/S para
conclusão da operação ou envia para um outro
driver para processamento adicional;
Enquanto ativo, cada IRP é armazenado em uma
fila IRP associada à thread que solicitou a
operação de E/S, permitindo ao sistema de E/S
23. Componentes – Pacote de
Requisição de E/S (IRP)
Um driver recebe um IRP, efetua a operação por ele
especificada e devolve ao gerenciador de E/S para
conclusão da operação ou envia para um outro
driver para processamento adicional;
Enquanto ativo, cada IRP é armazenado em uma
fila IRP associada à thread que solicitou a
operação de E/S, permitindo ao sistema de E/S
encontrar e eliminar qualquer E/S pendente se uma
thread terminar ou se for terminada com
solicitações pendentes.
24. Componentes – Pacote de
Requisição de E/S (IRP)
Um IRP consiste em duas partes:
Cabeçalho fixo: contém informações acerca do
tipo e tamanho da solicitação, se a mesma é
síncrona ou assíncrona, um ponteiro para um
buffer e informações a respeito do estado de
operação da requisição;
Localização de pilha: contém um código de
função, parâmetros específicos da função e um
ponteiro para o objeto de arquivo do chamador.
25. Componentes – Driver de
Dispositivo
Oferece uma interface de E/S para um tipo de
dispositivo em particular;
Funciona como a ponte necessária entre o
gerenciador de E/S e os componentes do sistema
de E/S;
Recebem comandos roteados para eles através do
gerenciador de E/S, sendo enviados para os
dispositivos que eles gerenciam, informando ao
gerenciador de E/S quando esses comandos
terminarem.
26. Componentes – Driver de
Dispositivo
Alguns dos tipos de drivers de dispositivo:
Drivers de sistema de arquivo: aceitam
requisições para arquivos.
Drivers do Windows NT: atuam em conjunto com
os gerenciadores de energia e PnP do Windows
NT, quando requisitados.
Drivers de dispositivo virtuais: utilizados para
emular aplicações de 16 bits do MS-DOS.
27. Componentes – Driver de
Dispositivo
Os drivers de dispositivo consistem em uma série de rotinas que são
chamadas para processar os vários estágios de uma requisição de
E/S:
Rotina de inicialização: executada pelo gerenciador de E/S para inicializar
um driver quando este é carregado para o SO e que é denominada
DriverEntry;
Rotina de adição de dispositivo: implementado por um driver que suporta
PnP, permite que seja alocado um objeto de dispositivo para representar
um dispositivo;
Rotina de início de E/S: permite que um driver inicie uma transferência de
dados para um dispositivo, e é definida somente em drivers que contam
com o gerenciador de E/S para uma serialização IRP;
Rotina de serviço de interrupção: é chamada quando ocorre uma
interrupção;
Rotina de identificação de erros: são chamadas quando acontecem erros
inesperados, anotando a ocorrência de erros e notificando o gerenciador
de E/S, que grava as informações em um arquivo de identificação de
erros.
28. Componentes – Gerenciador de
Plug-and-Play
Atua em conjunto com o gerenciador de E/S e com
um driver de dispositivo chamado driver de
barramento para conduzir a alocação dos recursos do
hardware de forma segura;
O gerenciador de PnP e os drivers de barramento são
responsáveis por carregar um driver de dispositivo
quando um determinado componente é detectado;
O suporte a Plug-and-Play requer uma cooperação
entre o hardware, os drivers de dispositivo e os
diferentes níveis do sistema operacional.
29. Componentes – Gerenciador de
Plug-and-Play
Algumas capacidades do suporte a PnP são:
O gerenciador de PnP reconhece automaticamente
dispositivos instalados, um processo que inclui enumerar
dispositivos acoplados ao sistema durante uma operação
de boot e detectar a adição ou remoção de dispositivos
enquanto o sistema encontra-se em execução;
O gerenciador de PnP utiliza o processo de arbitragem de
recursos na alocação de recursos de hardware junto com
as exigências dos mesmos recursos dos dispositivos
conectados ao sistema;
O gerenciador de PnP implementa aplicações e
mecanismos no driver para detecção das mudanças nas
configurações de hardware.
30. Componentes – Gerenciador de
Energia
Atua em conjunto com o gerenciador de
E/S para conduzir a evolução do
sistema, assim como os drivers de
dispositivo, através de transições de
estados de energia.
31. Componentes – O Registro
Serve como uma espécie de base de
dados que armazena uma descrição
básica dos dispositivos de hardware
presentes no sistema, assim como
inicialização e configuração de um
driver.
32. Componentes – Arquivos INF
Designados pela extensão .inf;
São arquivos de instalação de drivers;
Esses arquivos são a ligação entre um
dispositivo de hardware particular e o
driver que assume o controle do
dispositivo.
33. Componentes – Camada de
Abstração de Hardware
A camada de abstração de hardware
(HAL – Hardware Abstraction Layer)
oferece API’s que escondem as
diferenças entre as plataformas dos
drivers;
Na prática, o HAL é um driver de
barramento para todos os dispositivos
da placa-mãe do computador que não
são controlados por outros dispositivos.
34. Estruturas de Dados do Sistema
de E/S – Objetos de Arquivo
São construções em modo kernel para lidar com arquivos ou
dispositivos;
Todas as origens e destinos de E/S são representados por
objetos de arquivo;
Os objetos de arquivo são protegidos por um descritor de
segurança que contém uma lista de controle de acesso (ACL);
Quando uma thread abre um arquivo, o gerenciador de E/S
consulta o subsistema de segurança para determinar se a ACL
daquele arquivo permite que o processo acesse o arquivo da
maneira como a thread está solicitando;
Os objetos de arquivo também são usados para sincronização.
35. Estruturas de Dados do Sistema
de E/S – Objetos de Arquivo
Alguns atributos dos objetos de arquivo:
Nome de arquivo: identifica o arquivo físico ao qual o
objeto do arquivo se refere;
Byte offset corrente: identifica a localização atual no
arquivo;
Modos de compartilhamento: indica onde outros
chamadores podem abrir os arquivos para ler, escrever
ou deletar operações enquanto o chamador atual está em
funcionamento;
Ponteiro para objeto de dispositivo: indica o tipo de
dispositivo onde o arquivo se encontra;
Ponteiro para o bloco de parâmetro de volume: indica o
volume ou a partição em que o arquivo se encontra.
36. Estruturas de Dados do Sistema de
E/S – Objetos de Driver e de
Dispositivo
Um objeto de driver representa um driver individual
no sistema;
Um objeto de dispositivo representa um dispositivo
lógico ou físico no sistema;
O gerenciador de E/S cria um objeto de driver
enquanto um driver é carregado no sistema, e então
chama uma rotina de inicialização do driver
denominada DriverEntry;
Após ser carregado, um driver pode criar objetos de
dispositivo para representar dispositivos, ou até
mesmo uma interface para o driver, através de uma
rotina chamada IoCreateDevice.
37. Operação de E/S Assíncrona
Os serviços assíncronos permitem que uma aplicação
emita uma solicitação de E/S e continue a ser executada
enquanto o dispositivo transfere os dados;
Por padrão, aproximadamente um terço dos serviços
nativos do NT que o gerenciador de E/S fornece aos
subsistemas e DLL’s são assíncronos;
Tendem a ser operações longas ou de comprimento
imprevisível, p.ex., ler ou gravar um arquivo ou enumerar
um conteúdo de um diretório de arquivo;
Uma thread que chame estes serviços precisa sincronizar
sua execução com a conclusão dos mesmos;
O trabalho assíncrono dá ao sistema de E/S o máximo de
flexibilidade para executar outras tarefas enquanto
dispositivos relativamente lentos transferem dados.
38. Operação de E/S Assíncrona
É muito benéfica para operações cujo tempo de
conclusão é longo ou altamente variável;
Pode ser caracterizada como uma operação que
exige um pouco mais de programação em troca de
mais controle sobre operações de E/S e um
aumento considerável em termos de eficiência;
A thread que utiliza E/S assíncrona não é retardada
durante uma transferência de dados, porém, ela
tem de sincronizar o uso que faz de qualquer dado
transferido com a conclusão da transferência por
parte do dispositivo.
39. E/S Mapeada em Arquivo
É uma característica importante do sistema de E/S,
produzida em conjunto pelo sistema de E/S e pelo
gerenciador de memória virtual;
Refere-se a possibilidade de visualizar um arquivo
residente em disco como parte da memória virtual
de um processo;
É utilizada dentro do SO para funções importantes,
como caching de arquivos e ativação de imagens;
O gerenciador de máquina virtual também torna a
E/S mapeada em arquivo disponível ao modo
usuário através dos serviços nativos.
40. E/S Mapeada em Arquivo
O gerenciador de máquina virtual otimiza o acesso
ao disco, portanto, a E/S mapeada em arquivo
permite que as aplicações tirem proveito dessa
habilidade;
O gerenciador de cache usa a E/S mapeada em
arquivo para administrar seu cache baseado em
memória;
Os sistemas de arquivos e o servidor de rede usam
o cache para colocar na memória dados de
arquivos freqüentemente acessados, a fim de
proporcionar melhor tempo de resposta aos
programas ligados à E/S.
41. Processamento de E/S
As solicitações de E/S passam por vários estágios pré-definidos
de processamento;
Os estágios variam dependendo se a solicitação se destina a
um dispositivo operado por um driver de uma única camada ou
por um dispositivo alcançado através de um driver de várias
camadas;
Depois de abrir um objeto de arquivo, a aplicação chama uma
rotina de E/S, fornecida por uma biblioteca de linguagem;
O processamento varia também dependendo se o chamador
especificou E/S síncrona ou assíncrona;
Os arquivos do NT são representados como objetos e o sistema
de E/S oferece serviços de objetos para manipulá-los.
42. Solicitação de E/S para driver de
uma única camada
O processamento de uma solicitação
síncrona ocorre em três estágios:
O gerenciador de E/S envia a solicitação em
forma de IRP para o driver, que dá início à
operação de E/S;
O dispositivo completa a operação e emite uma
interrupção, que é atendida pelo driver do
dispositivo;
O gerenciador de E/S conclui a solicitação de
E/S.
43. Solicitação de E/S para driver de
uma única camada
O processamento de uma solicitação
assíncrona difere do processamento de uma
solicitação síncrona basicamente em um
aspecto;
A chamada assíncrona acrescenta uma
etapa entre as etapas 1 e 2, em que o
gerenciador de E/S retorna o controle ao
chamador;
O chamador pode continuar a fazer outras
coisas, enquanto as etapas 2 e 3
prosseguem, mas tem de estar sincronizado
com a conclusão da etapa 3 para saber
44. Solicitações de E/S para drivers
em camadas
É muita parecida com a solicitação de E/S para
drivers de uma única camada, porém, uma ou mais
camadas adicionais de processamento são
acrescentadas ao modelo;
O gerenciador de E/S recebe solicitação e cria um
pacote de solicitação de E/S (IRP) para representá-la;
Ele entrega o pacote a um driver do sistema de
arquivos;
Dependendo do tipo de solicitação feita pelo
chamador, o sistema de arquivos pode enviar o
mesmo IRP ao driver de dispositivo, ou pode gerar
pacotes adicionais de solicitação de E/S e enviá-los
separadamente ao driver de dispositivo.
45. Acrescentando Drivers em
Camadas
O projeto do sistema de E/S permite que um driver
seja colocado sobre o outro, ou seja, um driver
executa uma ação com base nas informações
armazenadas na primeira localização da pilha do IRP,
passando após isso uma solicitação a outro driver,
que armazena as informações exigidas pelo segundo
driver em uma segunda localização da pilha do IRP;
Como todos os drivers, tanto os de dispositivo quanto
os de sistema de arquivos, apresentam a mesma
estrutura ao SO, um outro driver pode facilmente ser
inserido na hierarquia sem alterar os drivers
existentes ou o sistema de E/S.
46. Recuperação de falha de
energia
Cada driver de dispositivo deve saber quando ocorreu uma
falha de energia, reajustando o dispositivo por ele operado;
Qualquer operação de E/S que tenha sido interrompida deve
ser reinicializada, porém, se isso não for possível, o gerenciador
de E/S deve ser notificado da falha em uma operação de E/S a
fim de retornar uma condição de erro;
O gerenciador de E/S, juntamente com o kernel, oferece um
recurso que permite aos drivers de dispositivo lidar de forma
tranqüila com interrupções no fornecimento de energia elétrica.
47. Recuperação de falha de
energia
Quando a energia acaba, ocorre uma interrupção por falha de
energia e o S.O. tem um breve período de tempo para preparar-
se para o blecaute;
O kernel copia rapidamente para a memória todos os registros
importantes do sistema, incluindo o contador de programa;
Se a memória do computador estiver equipada com uma bateria
reserva, estas informações são gravadas e, quando a energia
voltar, o kernel e o sistema de E/S podem utilizá-las para
reiniciar ou encerrar as operações de E/S que foram
anteriormente interrompidas.
48. Suporte a RAID
O suporte a RAID pode ser tanto por hardware quanto
por software;
No suporte por hardware são oferecidos drivers de
disco com capacidade de gerenciar controladoras
RAID, permitindo que diferentes discos trabalhem em
conjunto para compor um ou mais discos lógicos;
A própria controladora gerencia a criação e
manutenção da informação de redundância
necessária para recuperação dos dados.
49. Suporte a RAID
O suporte via software emula a partir de serviços do
S.O. o funcionamento de uma controladora com
suporte RAID;
Um driver de dispositivo denominado FTDISK é
responsável por essa tarefa.
50.
51. Gerenciamento de memória
Sumário
Espaço de Endereçamento
Estados de uma Página Virtual
Memória Compartilhada e o Section Object
Proteção de Memória
Políticas de Paginação
Memória Física
Tradução de Endereços
Falta de Páginas
Descritores de Endereço Virtual
Chamadas ao sistema
52. Memória Virtual
Implementada por Lou Perazzoli
Metas para o Gerenciador:
Portátil
Confiável e Eficiente
Proporcionar Arquivos mapeados, Copy-on-Write e suporte
para espaços de endereçamento grandes
Permitir processos alocar e gerenciar a própria memória
Permitir mecanismos que suportam subsistemas de ambiente,
como permitir um subsistema gerenciar a memória de um
processo cliente
Equilibrar necessidades de multiprocessamento com
velocidade de acesso a memória
53. Memórias
Espaço de Endereçamento Virtual
Disponível para uso das threads de um processo
Dividido em blocos de tamanho igual chamados páginas
Memória virtual limitada pelo número de bits
Espaço de Endereçamento Físico
Limitado pelo hardware
Dividido em blocos chamados de estruturas de página
55. Estados de uma página virtual
Free
Não usada no momento
Referência a uma página free causará uma Falta
Reserved
Não disponivel para ser mapeada
Referência a uma página reserved causará uma Falta
Committed
Dados ou código mapeados para a página
Referência a uma página committed causará uma Falta, caso
a página não esteja na memória principal, ou um Sucesso,
caso contrário.
56. Memória Compartilhada
Conceito:
É a memória visível a partir de
mais de um processo
Está presente em mais de um
espaço de endereçamento
virtual
57. Section Object
É alocado e desalocado pelo
gerenciador de objetos do NT
Não oferece sincronização
Processos podem mapeiar
partes do mesmo objeto de
seção em seus espaços de
endereçamento
58. Section Object
Compartilhamento ocorre nos seguintes
casos:
Para mapear a visão de uma seção, o processo precisa
primeiro adquirir um handle para a seção. O processo criador
do section object sempre terá um handle
Se a seção possuir um nome, outros processos podem abrir
handles para o section object
O processo pode receber um handle para um section object
através de herança ou quando um outro processo duplica seu
handle
59. Proteção de Memória
Fornecida em quatro formas:
Controlada por hardware (leitura/escrita, somente leitura)
Estruturas de dados e memory pools usados pelos
componentes do modo kernel do sistema, só podem ser
acessados estando no modo kernel
Cada processo possui um espaço de endereçamento
separado e privado, protegido contra acesso por qualquer
thread que pertença a outro processo
Os acessos da memória compartilhada são limitados aos
processos com os devidos direitos ( Copy-on-write )
60. Copy-on-Write
É uma técnica de otimização, chamada
Avaliação Preguiçosa (lazy evaluation), e
serve para economizar memória física
Quando um processo mapeia uma visão de copy-on-write de
um section object que contém páginas de leitura/escrita, em
vez de criar um processo de cópia privada, o gerenciador de
memória adia a criação de uma cópia das páginas até que a
página seja modificada
62. Implementação
2GB usuário
2GB sistema
Tabela de página para
cada processo
Opção de modificação
64+64 KB não
mapeados
63. Tabelas de páginas
O kernel e o gerenciador de memória virtual
usam tabelas de páginas criadas por software
para encontrar páginas que não estão
presentes na TLB
Uma entrada na tabela de páginas contém
todas as informações necessárias para o
sistema de memória virtual localizar uma
página quando uma thread usa um endereço
64. Políticas de paginação
Política de Busca: Determina quando trazer a
página do disco para a memória
Paginação na demanda com clusterings: quando
ocorre uma falta, carrega na memória a página que
faltava e mais algumas em volta dela
65. Políticas de paginação
Política de Colocação: Determina onde
colocar a página virtual na memória física
Se a memória não está esgotada, o gerenciador
seleciona a primeira estrutura de página em uma
lista de estruturas de página livres. Se a lista está
vazia, ele cruza uma série de outras listas por ele
mantidas; a ordem dependerá do tipo de falta de
página ocorrido
66. Políticas de paginação
Política de Substituição: Determina que
página virtual deve ser removida da memória
para obter espaço para a nova página
FIFO local – multiprocessadores baseados na
família Intel e processadores baseados na família
Alpha
LRU (implementado através do algoritmo do
relógio) – monoprocessadores baseados na família
Intel
67. Memória Física
Páginas contidas na memória estão
presentes no Working Set de algum processo
Working Sets
Define o número de páginas que um processo
armazena na memória
Cada processo define um valor mínimo e máximo para
o tamanho working set
68. Memória Física
Listas de páginas disponíveis: páginas
recentemente removidas do working set de
algum processo, não estão mais associadas a
ele e possuem cópia no disco
Listas de páginas modificadas: páginas
recentemente removidas do working set de
algum processo, não estão mais associadas a
ele e não possuem cópia no disco
69. Memória Física
Listas de páginas livres: páginas não
associadas a processo
Lista de páginas zeradas: páginas não
associadas a processo e preenchidas com Zero
Lista de páginas com defeito físico: Contém as
páginas que apresentam defeito. Garante que
tais páginas não sejam mais acessadas
71. Falta de Página
Ocorrem quando:
Página referenciada não está commited
Página commited, mas não mapeada
Página compartilhada foi escrita
Violação de proteção
A pilha precisa crescer
72. Descritor de Endereço Virtual
É armazenado numa árvore especifica do
processo para acelerar sua localização
Se uma thread tenta acessar um endereço não
alocado, esse endereço não consta no descritor
e ocorrerá uma violação de acesso
Armazena qualquer informação fornecida na
alocação da memória
Ex: Faixa de endereços, compartilhada ou
privativa, processo filho pode (ou não) herdar o conteúdo
da faixa e o tipo de proteção aplicada
73. Chamadas ao Sistema
Função API Win 32 Descrição
VirtualAlloc
VirtualFree
VirtualProtect
VirtualQuery Pergunta sobre o estado de uma região
VirtualLock Torna uma região residente em memória
VirtualUnlock Torna a região paginável, da maneira usual
CreateFile Mapping
MapViewOfFile
UnmapViewOfFile
OpenFileMapping
Reserva ou commit uma região
Libera ou uncommit uma região
Altera a proteção de leitura/escrita/execução
de uma região
Cria um objeto de mapeamento de arquivo e
(opcionalmente) atribui um nome a ele
Mapeia um arquivo, ou parte dele, no espaço
de endereçamento
Remove um arquivo mapeado do espaço de
endereçamento
Abre um objeto de mapeamento de arquivo
criado anteriormente
76. Jobs
Um job é uma coleção de processos.
Job são usados para gerenciar diversos
processos como uma única unidade.
Provem restrições de segurança e
compartilhamento de certos atributos
77. Processos
Processo é a instância de execução de um
programa.
Tem espaço de endereçamento privado com
sues códigos e dados.
Pode ter recursos alocados pelo sistema
operacional.
Cada processo tem no mínimo uma thread.
Processos são representados como objetos.
79. Threads
Threads são a unidade básica a ser
escalonada no Windows 2000, possuindo
estado de execução.
Um processo pode criar múltiplas Threads
para executar no seu espaço de
endereçamento.
Rodam em modo de usuário em grande parte
do tempo, mas quando realizam a uma
chamada de sistema rodam no modo kernel.
Também são representadas como objetos.
81. Fibers
Similares a Threads leves
São totalmente gerenciáveis pelo
usuário, o Kernel não toma
conhecimento das Fibers
Devem ser utilizadas com cuidado, pois
seu bloqueio ocasiona no bloqueio da
Thread que está gerenciando as Fibers.
83. Técnicas de comunicação
Diversas técnicas de comunicação entre
Threads:
Pipes
Mailslots
Sockets
Chamada remota de procedimentos
Arquivos compartilhados
84. Técnicas de comunicação
Pipes
Possuem dois modos de operação:
Byte: Mensagem enviada byte-a-byte.
Mensagem: Existe conservação do
tamanho da mensagem.
Existe uma variação dos pipes,
chamado pipes nomeados, que
possuem suporte a uso na rede.
87. Técnicas de comunicação
Chamada de procedimentos remotos
Essa técnica se baseia em um processo
poder invocar a função de outro
processo e receber o retorno dessa
função.
Existe restrições nos tipos de valores
que podem ser retornados.
90. Criação de Processos e Threads
Criação de processos envolve dez
parâmetros e cinco passos básicos:
91. Criação de Processos e Threads
Passos:
O executável é examinado e aberto
CreateProcess é chamado, espaço de memória
é alocado, objetos essenciais são criados e
inicializados
CreateThread é chamado, pilhas de usuário e
kernel são criadas
O subsistema Win32 recebe uma mensagem,
com informações do processo e da thread
A thread começa sua inicialização
Começa a execução do código da thread
92. Criação de Processos e Threads
Parâmetros:
1. Um ponteiro para o nome do arquivo executável.
2. A própria linha de comando.
3. Um ponteiro para o descritor de segurança do processo.
4. Um ponteiro para o descritor de segurança da thread inicial.
5. Um bit que define se o processo herda o handle do criador.
6. Diversos flags.
7. Um ponteiro para strings do ambiente.
8. Um ponteiro para o nome do diretório atual do novo processo.
9. Um ponteiro para a estrutura que descreve a janela inicial na
tela.
10. Um ponteiro para a estrutura que retorna 18 valores para o
realizador da chamada.
93. Criação de Processos e Threads
Parâmetros para criação Threads:
1. O descritor de segurança opcional
2. O tamanho inicial da pilha
3. O endereço inicial
4. Um parâmetro definido pelo usuário
5. O estado inicial da Thread (pronta ou
bloqueada).
6. O ID da Thread
94. Escalonamento
No Windows 2000 não existe uma
thread central de escalonamento.
Quando uma thread acaba seu período
de execução, ela entre no modo kernel
e executa o escalonador.
95. Escalonamento
Situações em que uma thread deixa de ser
apto a execução:
1. A thread é bloqueada por uma ferramenta
de sincronização.
2. A thread interage com outro objeto.
3. O quantum da thread em questão expira.
4. Quando uma operação de E/S é terminada.
5. Quando um tempo de espera termina.
97. Escalonamento
Threads de usuários não
administradores não ter sua prioridade
maior que 15.
Os outros 16 níveis são reservadas
para threads do sistema.
Quando a thread requisita E/S, controla
uma janela, ou recebe uma resposta de
um mecanismo de sincronização pode
ter sua prioridade aumentada.
98. Escalonamento
Threads podem perder prioridade após
executar um quantum de tempo.
Caso uma thread passe muito tempo
parada, o escalonador pode aumentar
sua prioridade.
99. Escalonamento
Cada thread tem um valor de prioridade associado.
O escalonador irá percorrer o vetor das prioridades
partindo do nível mais alto, procurando em cada
nível se existe uma thread pronta para ser
executada.
Caso exista, ela é executada até que quantum seja
gasto, e após sua execução ela é devolvida para o
final da final.
Caso contrário, o escalonador analisa o nível
abaixo.
Quando não houver nenhuma thread apta a
execução, a thread Idle é executada.
103. Sistema de Arquivos
O windows NT possui suporte a vários
sistemas de arquivos, tais como:
FAT16: endereços de 16 bits, tamanho máximo de uma
partição de 2 GB
FAT32: endereços de 32 bits, tamanho máximo de uma
partição de 2 TB
NTFS: endereço de 64 bits, tamanho máximo de uma
partição de 16 EB
104. NTFS
Nomes dos arquivos limitados a 255 caracteres
Caminhos desde a raíz limitados a 32767
caracteres
Nomes dos arquivos em Unicode
Diferenciação entre letras minúsculas e
maiúsculas
105. NTFS
é um sistema hierárquico de arquivos
Separador entre os nomes dos componentes é '',
característica herdada do MS-DOS
Conceito de diretório de trabalho atual e nomes
de caminhos sendo relativos ou absolutos
Suporte a compressão, criptografia e tolerância a
falhas
106. Fluxos de Bytes
O NTFS trata os arquivos pelos seus atributos,
representados através de fluxos de bytes
A maioria dos arquivos são formados por um
fluxo curto, contendo o nome do arquivo mais o ID
de objeto de 64 bits e um fluxo longo sem nome
contendo os dados
A idéia de múltiplos fluxos foi trazida da Apple
Macintosh e foi incorporado ao NTFS para permitir
que servidores NTFS possam servir clientes
Macintosh
107. Fluxo de Bytes
Ponteiros de arquivos são usados para
acompanhar onde um processo está em cada
fluxo
Esses ponteiros têm 64 bits de largura para tratar
o tamanho máximo de um fluxo, que é cerca de
264
bytes
109. Parâmetros do CreateFileUm ponteiro para o nome do arquivo a ser criado ou
aberto.
Flags indicando se o arquivo pode ser lido, escrito ou
ambos.
Flags indicando se multiplos processos podem abrir o
arquivo ao mesmo tempo.
Um ponteiro para o descritor de segurança dizendo
quem pode acessar o arquivo
Flags indicando o que fazer se o arquivo existir ou não
existir.
Flags lidando com atributos como: compressão,
arquivamento, etc.
A manipulação de um arquivo cujos atributos devem
ser copiados para um novo arquivo
110. Estrutura do Sistema de Arquivos
Cada volume é organizado como uma seqüência linear
de blocos (Clusters)
O tamanho do bloco é de 512 bytes a 64 KB.
Normalmente se usa 4 KB.
Os blocos são referenciados por seus deslocamentos a
partir do início do volume, usando-se números de 64 bits
A principal estrutura de dados cada volume é a MFT
111. Master File Table (MFT)
Seqüência linear de registros com tamanho de 1 KB
Cada registro descreve somente um diretório ou arquivo
O registro contém atributos do arquivo, como seu nome,
lista de endereços de disco dos seus blocos, indicadores
de tempo, etc
Usa-se mais de um registro para abrigar a lista de
endereços de disco para arquivos muito grandes
112. Master File Table (MFT)
Um mapa de bits faz o acompanhamento de quais
entradas da MFT estão livres
MFT é em si um arquivo, sendo assim pode ser
armazenada em qualquer setor do volume
E pode crescer o quanto for preciso, até um tamanho
máximo de 248
registros
113. Master File Table (MFT)
Os primeiros 16 registros são reservados para os
arquivos de metadados do NTFS
Cada um desses arquivos tem um nome que
começa com um '$' indicando que se trata de um
arquivo de metadado
115. Master File Table (MFT)
Registro 0: descreve o próprio arquivo da
MFT
Registro 1: cópia da primeira parte do arquivo
MFT
Registro 2: arquivo de registro de eventos
Registro 3: contém informações sobre o
volume
Registro 4: contém informações sobre o
arquivo que define os atributos usados nos
registros da MFT
Registro 5: descreve o diretório raiz
116. Master File Table (MFT)
Registro 6: contém informações sobre os
atributos e endereços de disco do mapa de
bits que controla o espaço livre do volume
Registro 7: aponta para o arquivo de carga do
boot
Registro 8: usado para ligar todos os blocos
defeituosos e assegurar que eles nunca farão
parte de um arquivo
Registro 9: contém informações sobre a
segurança
117. Master File Table (MFT)
Registro 10: usado para o mapeamento de
letras maiúsculas e minúsculas
Registro 11: um diretório que contém
diversos arquivos, usados entre outras
coisas, para descrever as cotas de disco,
descrever identificadores de objetos e
descrever pontos de reanálise
Registros 12-15: Reservados para uso futuro
118. Master File Table (MFT)
Cada registro consiste em um cabeçalho de
registro, seguido por uma seqüência de pares
(cabeçalho do atributo, valor)
Cada atributo começa com um cabeçalho, que
indica qual é o atributo e o tamanho do valor
119. Master File Table (MFT)
Alguns atributos, como por exemplos os dados,
têm valores que não cabem na MFT, sendo assim,
são colocados em blocos separados de disco e
são ditos não residentes
Os cabeçalhos de atributos residentes têm
comprimento de 24 bytes
Já os cabeçalhos de atributos não residentes são
maiores porque contêm informação sobre onde
encontrar o atributo no disco
120. Master File Table (MFT)
O NTFS define 13 atributos que podem aparecer
no registro da MFT: informação-padrão, nome do
arquivo, descritor de segurança, lista de atributos,
ID do objeto, ponto de reanálise, nome do volume,
informação sobre o volume, índice-raiz, índice de
alocação, mapa de bits, registro de fluxo de
utilização e dados
121. Compressão de Arquivos
NTFS suporta a compressão transparente de
arquivos
Ou seja, ele tenta comprimir automaticamente os
blocos quando eles são escritos e descomprimi-
los automaticamente quando são lidos
122. Compressão de Arquivos
Quando escreve um arquivo para compressão, o
NTFS verifica os primeiros 16 blocos (lógicos) do
arquivo, então, ele executa um algoritmo de
compressão nesses blocos
Se os dados comprimidos ainda ocuparem 16
blocos, os blocos são escritos na forma
descomprimida. Depois se testa os blocos 16 a 31
da mesma maneira, e assim por diante.
123. Compressão de Arquivos
Ao escrever-se os blocos comprimidos na
entrada da MFT, os blocos que não foram
comprimidos são escritos com endereços de disco
0
Quando o arquivo é lido, o NTFS deve saber
quais as séries estão comprimidas e quais não
estão. Ele fica sabendo disso pelos endereços de
disco
O acesso aleatório a arquivos comprimidos é
possível, mas complicado
124. Criptografia de Arquivos
A perda de informações pode ocorrer de várias
maneiras;
A partir da versão 5.0 do Windows NT (Windows
2000), é possível resolver esses problemas
usando-se criptografia;
O processo de criptografar e decriptografar, em
si, não é feito pelo NTFS, mas por um driver
chamado EFS (Encrypting File System);
125. Criptografia de Arquivos
Quando o usuário pede para um arquivo ser
criptografado, gera-se uma chave aleatória de 128
bits;
Essa chave é usada para criptografar o arquivo,
bloco por bloco;
O algoritmo usado atualmente é uma variação do
DES (Data Encryption Standard);
A criptografia de blocos em separados é usada
para que o acesso aleatório ainda seja possível.
126. Criptografia de Arquivos
A chave do arquivo deve ser armazenada em
algum lugar. Caso seja no disco, ainda poderá ser
acessada;
Por isso as chaves de arquivos devem ser todas
criptografadas antes de serem armazenadas no
discos;
Para isso, usa-se criptografia por chave pública.
127. Criptografia de Arquivos
O local da chave pública do usuário é procurado
usando-se a informação do registro;
Para decriptar um arquivo, procura-se sua chave
aleatória de 128 bits, que é decriptada utilizando a
chave privada do usuário;
Ao criptografar um arquivo pela primeira vez,
gera-se um par (chave privada, chave pública), e
a chave privada é armazenada no disco utilizando
um algoritmo simétrico.
128. Criptografia de Arquivos
A chave usada pelo algoritmo simétrico é
derivada da senha do usuário ou armazenada em
um cartão inteligente;
O EFS pode decriptar a chave no momento do
acesso, e mante-la no seu espaço de
endereçamento;
Uma complicação ocorre quando várias pessoas
precisam ter acesso ao mesmo arquivo
criptografado;