Windows xp/2000 internals Subsistema de entrada/saída Tipos de devide drivers: • Virtual device driver: o user mode permite o acesso ao hardware apartir do DOS • Kernel device driver: vídeo device driver; sistema de fixeiros do driver; Plug & Play device driver; • Windows Driver Model (WDM) — também conhecido como Win32 Driver Model — é um arcabouço para desenvolvimento de device drivers que foi introduzido com o Windows 98 e o Windows 2000 para substituir o VxD, que foi usado nas versões mais antigas de Windows, como Windows 95 e Windows 3.1, bem como o modelo do Windows NT. É um padrão para a criação de drivers de dispositivos compatíveis com os sistemas operacionais Windows a partir da versão 98. • Legacy Device Driver: usado no Windows NT 4 driver. Pode ser ou nao corrido no 2000/xp, mas não no 98/ME Kernel Device driver: único que manipula o hardware e interrupções,etc. Extensão .sys. As rotinas(funções) correm sempre no kernel mode. Sempre usado no kernel mode stack, limitado em 12kb(2000/xp) e 8kb(98/ME). Normalmente invocado pelo código do user mode (ReadFile, WriteFile, DeviceIOcontrol). Pode ser em camadas. Rotinas para implementar aspectos do device drivers:
Invocar o driver:
WDM - Windows Driver Model : O WDM é a opção da Microsoft para a simplificação do desenvolvimento de driver, e fornece um modelo unificado de driver tanto para sistemas operacionais domésticos quanto empresariais, prevendo também a possibilidade de migração para sistemas futuros. Neste tópico, examinaremos o quanto o WDM se aproxima deste objetivo e a sua relevância para a manipulação de dados de áudio. O WDM funciona nas plataformas Windows 98 e Windows 2000, e um driver criado dentro das especificações WDM é compatível com todas as plataformas a partir do Windows 98SE. A maioria dos drivers são até mesmo compatíveis em código binário com outras plataformas. Isso implica que os fabricantes de hardware podem desenvolver um único driver para o modo kernel. O WDM tem uma influência considerável nas aplicações de áudio. Ele oferece um componente de mixagem e resampleamento de áudio que roda no modo kernel, chamado de "KMixer", que facilita o acesso de várias aplicações ao mesmo hardware, e faz parecer que ilimitados fluxos de áudio possam ser mixados em tempo-real. Device node: representa um pilha de dispositivos: PDO: (physical device object) criado pelo barramentos de drivers Fido: Filter device object FDO: Functional device driver
Plug and Play: é a capacidade que um SO possui de reconhecer e adaptar-se de forma dinâmica a alterações na sua configuração inicial de hardware. Origem: Windows 95. Evolução:Adoção da especificação ACPI (Advanced Configuration and Power Interface).
Windows 2000: WDM (Win32 Driver Model). A tecnologia Plug and Play (PnP) , que significa “ligar e usar”, foi criada com o objetivo de fazer com que o computador reconheça e configure automaticamente qualquer dispositivo que seja instalado, facilitando a expansão segura dos computadores e eliminando a configuração manual. Device Enumeration: Identifica todos os dispositivos ligados a um sistema e inicializa as
rotinas exigidas que os permitem a funcionar. Chaves de registos importantes: • Chave de “Hardware”: HKLM\System\CCS\Enum (contem informação acerca de um único dispositivo) • “Class” keys: HKLM\System\CCS\Control\Class (informação acerca de todos os dispositivos do mxm tipo) • “Software” (Service) key : HKLM\System\CCS\Services\drivername (informaçao acerca de um driver em especifico) Interupt Request Packet (IRP): estrutura definida na libraria <wdm.h>, contem todos os detalhes necessários para a resolver o pedido(códigos, buffers, sizes…). As requisições de E/S são convertidas em um formato padrão denominado de IRP (I/O Request Packet). IRP é direcionado ao driver de dispositivo. Driver de dispositivo informa à gerência quando a operação é finalizada. Métodos de buffer:
• • •
Buffered I/O: Transferencia é para e de o intermédio do buffer no endereço de espaço do sistema; Direct I/O: Transferência é para e de a parte física do utilizador; Neither I/O: Usado pelo DeviceIoControl para funções que não requerem buffer;
DriverObject: estrutura de dados usada pelo gerenciador de I/O para representar cada devicedriver. A estrutura DriverObject possui varios campos, alguns acessíveis e outros não acessíveis. Device object: mantém uma lista das estruturas de dados do tipo device object associadas a um dispositivo em particular, que são gerenciados pelo driver é um dos campos acessiveis pelo driverObject. Interrupt objects: permite k se tenha as interrupções despachadas para os drivers Adapter objects: usados para simplificar o uso de DMA
O que é uma APC (Asynchronous Procedure Call)? Uma chamada de procedimento assíncrona é uma função executada de maneira assíncrona no contexto de um segmento específico. A APC força uma especifica thread a executar uma especifica rotina nexa thread. Tipos de APC: • Special kernel APCs ->corre em kernel mode, e IRQL_APC_Level (1) ->pode ser sempre entregue ->usado pr relatorio final sobre conclusão • User mode APCs ->corre em user mode, e IRQL_APC_Level
->Usado qd a conclusão do I/O chama as rotinas(see ReadFileEx, WriteFileEx)
->só entregue qd a linha entra em estado de "alertable state"(ver os documentos para (SleepEx, WaitForSingleObjectEx, WaitForMultipleObjectsEx) ->pode ser colocado na QueueUserApc (Win32)
Gestao de energia: • Porque de gerir a energia? Aumenta o tempo de vida da batteria nos sistemas portáteis • Energy Star: Este é um programa criado pela Environmental Protection
Agency (EPA) em 1993, que incentiva os fabricantes de PCs e monitores e produzirem equipamentos com sistemas de gerenciamento de energia. O objetivo é diminuir a poluição causada pela geração de energia elétrica. Para poderem exibir o selo os monitores devem consumir menos de 30 Watts em modo stand-by e menos de 8 Watts ao serem desligados via software. A maioria dos monitores atuais consegue ir bem além atingindo as metas de 15 watts em stand-by e menos de 5 Watts desligados, sem apresentar um desgaste excessivo ao serem utilizados os modos de economia de energia, novamente ao contrário dos antigos, que podiam apresentar defeitos prematuramente se fossem desligados com muita frequência. Os modos de economia de energia permitem economizar uma grande percentagem da eletricidade consumida pelo PC, já que sozinho um monitor de 15" consome cerca de 100 Watts, mais da metade da energia total consumida • Porque de implementar Energy Star? È um requisito de venda nos US, e muitos países da Europa e Asia. Gestao de energia ate o Windows 2000: a maior parte dessa gestão era feita pelo hardware. APM é a sigla para Advanced Power Management, uma norma de gerenciamento de energia usada inicialmente em computadores portáteis, mas que mais tarde foi adotada também nos computadores de mesa. A sua principal função é controlar diversos componentes do sistema de modo a ativar modos de poupança de energia quando não estão a ser utilizados. Recentemente esta tecnologia tem vindo a ser substituída pela norma ACPI, que não se limita à gestão do consumo de energia. Alguns computadores mais recentes já não são compatíveis com APM. O APM pode interroper o cpu a kk momento. Problemas: o esquema é especifico para o x64, personalizado pelo DOS… WDM Power States (1): WDM Power States: • em trabalho(S0) ->Sistema é geralmente operacional e correndo em velocidade máxima adormecido/suspenso(s1-s3) ->No modo sleep o sistema desliga a maior parte dos componentes de forma consumir o menos possivel de energia.cpu esta desligado.Volta ao estado normal em pouco tempo. mas se ficar sem energia perde o estado actual. • Hibernate (S4) -> a memoria fisi • Hibernate (S4) •
•
-> a memoria fisica fica escrita no disco,cpu desligado Off (S5) ->sem energia
•
Waking ->transição de estado de sleep para trabalho
WDM Power States (2): • • • •
D0: Maior nível de energia de consumo e performance D1: Menor consumo de energia que D0 mas maior que D2 D2: Menor consumo de enrgia que D1 D3: dispositivo sem energia
Power Policy: Policy manager O policy manager monitora atividade no sistema e integra estado de usuário, estado de aplicação e estado do device driver em política de power. Debaixo de circunstâncias especificadas ou em pedido, o Policy manager gera IRPs para mudar o estado(ligado/desligado) dos dispositivos.
Power Control Panel: permite programar o botão de energia e o botão de sleep (Shutdown, standby, hibernate, off, nada); monitoriza o nível de energia da bateria, em caso de baixo nível de energia executa um alarm de mode a avisar o user, coloca a maquina em standy (suspensão) or hiberna. Power IRPs Activation: • Pedidos do usuario(do menu,adormecer,suspender,apliacações de chamada a power API) ->desligar ->hibernar ->suspender • condições de bateria fraca ->o comportamento exacto é activo usando o painel de controlo de energia
Como os sistemas se desligam? O gestor de energia envia um IRP_MN_QUERY_POWER para todos os dispositivos. Se todos os dipositivos estiverem de acordo o gestor de energia envia um IRP_MN_SET_POWER com o novo estado da enrgia. Se pelo menos um dispositivo não concordar o gestor de energia envia um IRP_MN_SET_POWER com o antigo estado de energia
“Acordar” do sistema: • Um dispositivo pode ser capaz de acordar o sistema de um estado de sleep (exemplo: cartão de Lan, modem…) • O barramento de driver descobre que o dispositivo pode acordar o sistema(IRP_MN_QUERY_CAPABILITIES PnP IRP) • Quando o evento de acordar xega o dispositivo inicia um IRP MN WAIT WAKE Instalação de drivers: • Usa o ficheiro .iNF ->Requer os drivers WDM ->o formato é novo,mas baseado no formato INF no windows 95. • Quando um tipo novo de hardware é descoberto pelo PnP manager, os sistemas de instalação de dispositivos procuram o %SystemRoot%\INF para encontrr um ficheiro INF satisfatório ->se não achar,uma caixa de dialogo ir aparecer avisando o usuario. • o ficheiro Inf n é corrido do inicio ao fim. Verificar Driver: ->ferramenta k permite monitorizar os device driver nas actividades e operações. ->diferente em Windows 200 e xp ->pode ser operado na linha de comandos ->pode mudar defenições mxm sem reiniciar ->n requer nenhum codigo especial ou pedido ao fornecedor do driver ->Pode monitorizar qualquer driver. Opções do verificador de driver(1): • Automatic Checks ->uso inadequado da IRQL, • Special memory pool • Forcing IRQL checking • Baixa simulação de recurso ->fracasso nas alocações de memoria
Opções de verficação do driver(2):
• •
Memory Pool Tracking??? Verificação Entrada/saída
• •
Verificação do DMA (Apenas no XP): monitoriza o DMA do buffer e mapas de registos usado Detecção de paralisação completa (apenas no xp) Verificação de SCSI: SCSI (pronuncia-se "scuzi"), sigla de Small Computer System Interface, é uma tecnologia que permite ao usuário conectar uma larga gama de periféricos, tais como discos rígidos, unidades CD-ROM, impressoras e scanners. Características físicas e elétricas de uma interface de entrada e saída (E/S) projetadas para se conectarem e se comunicarem com dispositivos periféricos são definidas pelo SCSI. Monotoriza rotinas de SCSI, atrasos…