Windows NT® Internals Paolo Cremonesi
2 Testo consigliato l F. Avery Bishop, “Inside Windows NT”, Microsoft Press l
3 Obiettivi l Spiegare l’architettura interna di Windows NT 4 l Alcune indicazioni su Windows NT 5 (Windows 2000) l Pre-requisiti Familiarità con i concetti base dei sistemi operativi Non sono necessarie conoscenze su Windows NT e sulla programmazione sotto MS Windows
4 Introduzione l Sistema operativo Windows NT progetto nato nel 1989 preemptive reentrant virtual memory multi piattaforma parzialmente compatibile con DOS e Win3.1 parzialmente compatibile con OS2 e Posix
5 Estensioni in Windows 2000 l Plug and play l Job object l indirizzamento a 64 bit
6 Agenda l Key System Files l Process Execution Environment l Executive, Kernel, and HAL l Environment Subsystems l Executive Object Manager l I/O System l System Threads l Process-based Windows NT code l Summary
7 Windows NT Key System Files l NTOSKRNL.EXE l NTKRNLMP.EXE l UPTOMP.EXE l HAL.DLL l NTDLL.DLL l XyzDriver.SYS
8 Windows NT Key System Files l NTOSKRNL.EXE \WINNT\SYSTEM32\ Windows NT executive e kernel l NTKRNLMP.EXE Versione multi-processore (MP) dell’executive e del kernel La procedura di installazione sostituisce (overlays) NTOSKRNL.EXE con questo file nei sistemi MP
9 Windows NT Key System Files l UPTOMP.EXE \NTRESKIT\ Strumento per convertire un’installazione mono-processore in una multi-processore l XXXDRIVER.SYS \WINNT\SYSTEM32\DRIVERS\ Una sola versione indipendentemente dall’HAL
10 Windows NT Key System Files l HAL.DLL \WINNT\SYSTEM32\ Hardware Abstraction Layer Sul CD di installazione i file si chiamano HALXXX.DLL Versioni diverse per le diverse schede madri La procedura di installazione seleziona l’HAL appropriato e lo copia com HAL.DLL
11 Device drivers Win32 User,GDI Virtual Memory Processes & Threads Security Cache Manager I/O Manager Hardware interfaces (buses, I/O, interrupts, timers, clocks, DMA, cache control, etc.) Replicator Alerter Service Controller WinLogon RPC Environment Subsystems User Application Subsystem DLLs POSIX OS/2 Session Manager System ProcessesServicesApplications File systems Object management / Executive RTL Kernel Hardware Abstraction Layer (HAL) Event Logger User Mode System Threads Kernel Mode Executive API Win32 NTDLL.DLL NTOSKRNL.EXE
12 Windows NT Versions l Build numbers Incrementato ogni volta che i sorgenti sono ricompilati l Service packs Packages di nuovi.EXEs,.DLLs. Risolvere bug, fornire nuove funzionalità Non cambiano il build number l Free vs. Checked build Free = “retail”, Checked = “debug”
13 Programmi | Strumenti di amministrazione | Windows NT Diagnostics Windows NT Versions
14 Packaging del prodotto l Windows NT Workstation versione desktop, ha tutte le funzionalità licenza per 2 CPU l Windows NT Server funzionalità per server networking licenza per 4 CPU l Windows NT Server Enterprise Edition licenza per 8 CPU 3GB di spazio di indirizzamento software aggiuntivo
15 Packaging del prodotto l Il kernel e i driver sono gli stessi
16 Agenda l Key System Files l Process Execution Environment l Executive, Kernel, and HAL l Environment Subsystems l Executive Object Manager l I/O System l System Threads l Process-based Windows NT code l Summary
17 Processi e Threads l Cosa è un processo? Un’istanza di un programma in esecuzione un processo si crea per eseguire un programma avviare un’applicazione crea un processo L’argomento principale all’API CreateProcess è il nome del file immagine (eseguibile)
18 Processi e Threads l Cosa è un thread? Un contesto di esecuzione all’interno di un processo L’argomento principale all’API CreateThread è il nome di una funzione (entry point) Tutti i thread in un processo condividono lo stesso spazio di indirizzamento
19 Processi e Threads l Ogni processo all’avvio è composto da un solo thread Il thread corrisponde all’esecuzione della funzione “main” ll thread può creare altri thread nello stesso processo Il thread può creare altri processi
20 Per-process address space System wide Address Space Thread Thread Thread Processi e Threads Per-process address space Thread Thread
FFFFFFF FFFFFFFF Univoco per ogni processo, accessibile in modo user System wide, accessibile in modo kernel Per process, accessibile in modo kernel Application code Globals Per-thread stacks DLL code Kernel and Executive HAL, Boot drivers System cache, paged pool, non-paged pool Process page tables, hyperspace 4GB Virtual Address Space
22 Kernel Mode l Componenti critiche per le prestazioni Accesso diretto all’hardware Accesso diretto ai dati di altri thread/processi Nessun context/switch (tranne per lo scheduling) l Protezione del sistema operativo dall’utente l Filosofa object/oriented Ma è scritto in C, non in C++
23 Kernel Mode Vs. User Mode l Stato del processore l Controlla l’accesso alla memoria Ogni pagina ha un tag che indica il modo richiesto per leggere o scrivere Protegge il sistema dall’utente Protegge l’utente da se stesso Le pagine di codice hanno tag “no write in any mode” l Controlla la possibilità di eseguire istruzioni privilegiate
24 Kernel Mode Vs. User Mode l Una astrazione di Windows NT Intel: Ring 0, Ring 3 Power PC: “supervisor” e “user” l Proprietà associate ai thread I thread possono cambiare da user a kernel e viceversa La modalità non influenza lo scheduling
25 ComponentiAccess mode ApplicazioniUser Subsystem processesUser ExecutiveKernelKernel DriversKernel HALKernel Kernel Mode Vs. User Mode
26 Entrare in “kernel mode” l Il codice è eseguito in kernel mode per: Richiesta da parte di un thread in user mode Interrupt da dispositivi esterni Thread “dedicati” in kernel mode
27 Entrare in “kernel mode” l Richiesta da parte di un thread in user mode attraverso il “system service dispatch” il codice in kernel mode code viene eseguito nel contesto del thread
28 Entrare in “kernel mode” l Interrupt da dispositivi esterni Interrupt (come tutte le eccezioni) sono gestiti in kernel mode L’interrupt dispatcher di Windows NT invoca la interrupt service routine (ISR) La ISR viene eseguita nel contesto della thread interrotto (“arbitrary thread context”) La ISR speso richiede l’esecuzione di una Deferred Procedure Call (DPC), anche essa in kernel mode
29 Entrare in “kernel mode” l Thread “dedicati” in kernel mode Alcuni thread di sistema sono sempre in kernel mode (la maggior parte nel processo “System”) Scheduling e preemption sono analoghi come per ogni altro thread
30 Accounting del tempo di kernel l Processor Time = tempo totale di occupazione della CPU elapsed real time - idle time l Processor Time = User Time + Privileged Time l Privileged Time = tempo passato in kernel mode l Il Privileged Time comprende: Interrupt Time, DPC Time Altri kernel-mode time (nessun contatore)
31 Accounting del tempo di kernel Programmi | Strumenti di amministrazione | Performance Monitor
32 Interrupt dispatch routine Disabilita gli interrupt Registra lo stato della CPU Maschera gli interrupt dello stesso livello Trova e chiama la ISR appropriata Ripristina lo stato della macchina Comunica al device di fermare gli interr. Interroga lo stato del device, etc. Richiede una DPC Ritorna al chiamante Interrupt service routine interrupt ! user or kernel mode kernel mode Nessun thread o process context switch! Interrupt Dispatching
33 Agenda l Key System Files l Process Execution Environment l Executive, Kernel, and HAL l Environment Subsystems l Executive Object Manager l I/O System l System Threads l Process-based Windows NT code l Summary
34 Device drivers Win32 User,GDI Virtual Memory Processes & Threads Security Cache Manager I/O Manager Hardware interfaces (buses, I/O, interrupts, timers, clocks, DMA, cache control, etc.) Replicator Alerter Service Controller WinLogon RPC Environment Subsystems User Application Subsystem DLLs POSIX OS/2 Session Manager System ProcessesServicesApplications File systems Object management / Executive RTL Kernel Hardware Abstraction Layer (HAL) Event Logger User Mode System Threads Kernel Mode Executive API Win32 NTDLL.DLL
35 Windows NT Executive l Strato superiore di NTOSKRNL.EXE l Fornisce servizi OS generici Processi, thread, gestione della memoria, I/O, comunicazione tra processi, sincronizzazione, sicurezza l Per lo più è in C (portabile!)
36 Windows NT Executive l Esporta funzioni (servizi) che possono essere invocate da API in user mode Ad esempio, Win32 ReadFile -> executive NtReadFile l Gira in kernel mode l La maggior parte delle API non sono documentate Utilizzate dagli sviluppatori di sotto-sistemi
37 Windows NT Executive: 5 componenti l Process e thread manager crea e termina thread e processi le funzioni sono implementate in realtà nel kernel questo executive aggiunge alcune funzionalità ed estende la semantica degli oggetti del kernel l Virtual memory manager implementa il meccanismo di memoria virtuale fornisce il supporto alla I/O cache
38 Windows NT Executive: 5 componenti l Security reference monitor gestisce le politiche di sicurezza sul computer locale controlla le risorse del sistema operativo l I/O system implementa funzioni di I/O device- independent individua i device driver appropriati l Cache manager cache delle pagine lette più di recente, read ahead, write back
39 Windows NT Executive: funzioni di supporto l Object manage crea, gestisce e rimuove gli oggetti dell’executive gestisce le strutture dati astratte che rappresentano risorse come processi, thread, ecc. l LPC ottimizzazione del RPC (Remore Procedure Call) gestisce la comunicazione tra client/server su uno stesso computer
40 Windows NT Executive: funzioni di supporto l Common runtime library gestione di stringhe funzioni algebriche conversione di tipi l Gestione della memoria allocazione/de-allocazione di memoria paginata e non meccanismi di sincronizzazione semafori
41 Windows NT Kernel l Le operazioni più importante del kernel: determinare come il sistema operativo usa il processore l garantire un uso prudente (fairness) isolare l’executive dall’architettura l Lo strato inferiore in NTOSKRNL.EXE l Maschera le differenze tra diverse architetture x86 vs. Alpha vs., etc.
42 Machine Independent C Assembler Machine Dep. C Windows NT Kernel l Dimensioni: Codice: 60k su Intel 80% indipendente dalla macchina l Non è un “microkernel”
43 Windows NT Kernel l Funzioni principali Exception trap e interrupt dispatching Primitive di sincronizzazione OS (MP e UP) Gestione dello scheduling e del context switching dei thread Generiche operazioni di wait Fornisce gli oggetti base che sono usati dall’executive e (alcuni) esportati in user mode
44 Windows NT Kernel l Il kernel differisce dall’executive l Non è mai paginato dalla memoria l La sua esecuzione non è mai interrotta da altre thread ad eccezione delle ISR l Non verifica mai la correttezza dei parametri di chi chiama le sue funzioni l Non implementare politiche di gestione tranne per il thread scheduling
45 Windows NT Kernel l Il kernel implementa dei semplici oggetti (kernel object) l Molti oggetti dell’executive incapsulano uno o più kernel object
46 Windows NT Kernel: supporto hardware l Isolare (assieme all’HAL) l’executive dall’architettura thread context switching gestione della cache gestione del TLB
47 Windows NT Kernel vs. HAL l Kernel funzioni specifiche di un’architettura l HAL funzioni che possono essere diverse su macchine diverse all’interno della stessa architettura
48 HAL - Hardware Abstraction Layer l Un file binario caricato separatamente (HAL.DLL) l Scopo: Isolare (astrarre) Kernel e Executive da dettagli specifici di una piattaforma Presentare un modello di architettura uniforme per facilitare lo sviluppo dei driver
49 HAL - Hardware Abstraction Layer l HAL maschera: dispositivi di I/O specifici del sistema (bus, DMA,... ) meccanismi di cache coherency e di flushing, orologi di sistema supporto SMP, programmazione degli interrupt l HAL contiene alcune subroutines per Executive e Kernel
50 HAL - Hardware Abstraction Layer l Windows NT comprende HAL per alcune architetture: PC-compatibili, DEC Alpha, Power PC I produttori di hardware possono fornire altri HAL
51 HalGetBusData HalGetBusDataByOffset HalAssignSlotResources HalSetBusData HalSetBusDataByOffset HalTranslateBusAddress HalGetInterruptVector HalGetAdapter READ_REGISTER_ULONG WRITE_PORT_UCHAR Routine HAL di esempio HAL - Hardware Abstraction Layer
52 Convenzioni di nome: Kernel e HAL Kernel l Ke: Kernel l Ki: Kernel internal (not available outside the kernel) HAL l Hal: Hardware Abstraction Layer l READ_, WRITE_: I/O port and register access
53 Convenzioni di nome: Executive l Ex: General executive routine l Ob: Object management l Exp: Executive private (not exported) l Io: I/O subsystem l Cc: Cache manager l Se: Security l Mm: Memory management l Ps: Process structure l Rtl: Run Time Library l Lsa: Security Authentication l FsRtl: File System Run Time Lib l Zw: File access, etc.
54 Agenda l Key System Files l Process Execution Environment l Executive, Kernel, and HAL l Environment Subsystems l Executive Object Manager l I/O System l System Threads l Process-based Windows NT code l Summary
55 User process l I “processi” in user mode possono essere classificati in: Service process Special system support process Environment subsystems User applications
56 User process l Service process sono l’equivalente dei daemon Unix Event Logger, IIS,... l Special system support process Processi di sistema che non sono eseguiti come servizi Logon process, session manager,...
57 User process l Environment subsystem espongono i servizi nativi del sistema operativo, forniscono una “personalità” Win32, Posix 1.x, OS/2 1.2 l User application Win32 Windows 3.1 MS-DOS Posix 1.x OS/2 1.2 (modo console)
58 Environment Subsystems l Espone le API “native” Estende le funzionalità native di Windows NT l Due parti Subsystem DLL l Convertono le API documentate in API native Environment Subsystem Process l Mantengono lo stato dei processi “utente” l Implementano alcune API aggiuntive
59 Environment Subsystems l Tre ambienti forniti con Windows NT: Win32 l speciale, Windows NT non può funzionare senza Posix 1.x l solo lo standard, senza componenti opzionali OS/2 l supporto solo per applicazioni carattere l Non sono forniti strumenti e documentazione per estendere i sottosistemi
60 Environment Subsystems l Ciascun subsystem fornisce l’accesso ad un sotto insieme ad un diverso sotto insieme dei servizi di Windows NT l Le applicazioni di un subsystem possono fare cose “proibite” ad applicazioni di altri subsystem Ad esempio, Fork è disponibile solo nel subsystem Posix
61 Environment Subsystems l Le applicazioni devono essere linkate per un particolare subsystem l Quando l’applicazione (.EXE) è eseguita, il codice di creazione dei processi esamina il tipo di subsystem nell’header del file, per poter notificare all’appropriato subsystem del nuovo processo
62 Environment Subsystems l Le applicazioni utente non accedono direttamente ai servizi nativi del sistema operativo, ma passano attraverso una o più subsystem librerie dinamiche (DLL) l Le subsystem DLL traducono una funzione documentata nell’appropriata chiamata non documentata la DLL Win32 implementa le Win32 API la DLL Posix implementa le Posix API
63 Environment Subsystems: Applicazioni MS-DOS l NTVDM (NT Virtual Dos Machine) emula un processore Intel 486 con MS-DOS l Binari sono compatibili su Intel, DEC Alpha, Power PC, MIPS 4000 l Ogni applicazione DOS è eseguita in una NTVDM separata preemptive multitasking l’eventuale crash di un’applicazione no influenza le altre
64 Environment Subsystems: Applicazioni MS-DOS l La NTVDM ha tre thread Due thread sono usati per gestire l’ambiente della NTVDM Un thread esegue l’applicazione (single thread application) l La NTVDM non è un subsystem si appoggia al Win32 subsystem l Non tutte le applicazioni DOS sono supportate
65 Environment Subsystems: Applicazioni Win16 l Applicazioni per Windows 3.x l WOW machine (Win16-on-Win32) l Si appoggia a NTVDM (Win16 NTVDM) l Non è un vero subsystem Si appoggia a Win32 l I binari sono compatibili su tutti i sistemi che supportano NTVDM
66 Environment Subsystems: Applicazioni Win16 l La Win16 NTVDM ha tre thread Due thread sono usati per gestire l’ambiente della NTVDM Un thread esegue tutte le applicazione Win16 l Non sono preemptive multitasking l Non tutte le applicazioni Win16 sono supportate
67 Environment Subsystems: Applicazioni Win16 Win16 NTVDM separate Se un’applicazione va in crash non influenza le altre Preemptive multitasking Richiedono più RAM Non si possono eseguire applicazioni che usano shared data invece di OLE (Object Linking and Embeding) e DDL (Dinamic Data Exchange)
68 Environment Subsystems: Applicazioni Posix l Portable Operating System Interface for Compting Environment (standard UNIX) l Richiede almeno una partizione NTFS l I sorgenti sono portabili su tutte le piattaforme l Le applicazioni POSIX sono eseguite ciascuna in uno spazio indirizzi separato
69 Environment Subsystems: Applicazioni OS/2 l Solo applicazioni carattere E’ disponibile un add-on per applicazioni OS/2 1.x grafiche Nessun supporto per versioni successive l Solo su piattaforme Intel Alcune applicazioni OS/2 (real mode application) possono essere eseguite sotto DOS (NTVDM) l Spazio di indirizzamento privato per ogni applicazione
70 Environment Subsystems: Applicazioni Win32 l Le applicazioni sono sorgente- compatibili su tutte le architetture l Dato che parte del subsystem è sempre in kernel mode, le applicazioni Win32 sono le più veloci
71 Environment Subsystems: Win32 l Essenziale al funzionamento di Windows NT l Le componenti principali sono environment subsystem process kernel mode device driver
72 Environment Subsystems: Win32 l Win32 Environment Subsystem Process finestre console creazione/eliminazione di processi e thread parte della Virtual DOS Machine (VDM) per il supporto parziale di applicazioni DOS a 16 bit funzioni di utilità di vario tipo GetTempFile, DefineDosDevice, ExitWindowsEx,...
73 Environment Subsystems: Win32 l Kernel Mode Win32 Device Driver gestore delle finestre (Windows manager) l gestisce gli eventi associati alle finestre (mouse, tastiera, resize, ecc.) Graphical Device Interface (GDI) l una libreria di funzioni per i dispositivi di output grafici generici (funzioni per line, testo, ecc.) insieme di device driver per la grafica l (video e stampanti) parecchie subsystem DLL l traducono le Win32 API nelle appropriate chiamate a NTOSKRNL.EXE e WIN32K.SYS
74 NTDLL.DLL l Speciale libreria si sistema di supporto alle subsystem DLL l Contiene due tipi di funzioni Funzioni di interfaccia tra le subsystem DLL e i servizi dell’executive Funzioni di supporto aggiuntive
75 NTDLL.DLL l Funzioni di interfaccia tra le subsystem DLL e i servizi dell’executive Nell’executive ci sono più di 200 funzioni l NtCreateFile, NtSetEvent, … NTDLL contiene entry point con lo stesso nome Il codice nell’entry point causa la transizione in kernel mode per poter invocare la corrispondente funzione in NTOSKRNL.EXE
76 NTDLL.DLL l Funzioni di supporto aggiuntive Funzione per il caricamento degli eseguibili Gestore dello heap Gestore dell’Asynchronous Procedure Call (ASP) ...
77 OS/2 Win32 POSIX Environment Subsystems User Application Subsystem DLL Win32 User/GDI User Mode Executive Device DriversKernel Hardware Abstraction Layer (HAL) Kernel Mode System and Server Processes NTDLL.DLL Environment Subsystems Components Subsystem process (Win32: CSRSS.EXE) API DLL (Win32: KERNEL32.DLL, GDI32.DLL, USER32.DLL,...) Kernel-mode extension to executive Win32 only: WIN32K.SYS
78 Windows NT Simplified Architecture (3.52) OS/2Win32 POSIX Environment Subsystems UserMode KernelMode System and Server Processes Executive Device Drivers Kernel Hardware Abstraction Layer (HAL) LPC UserApplication Subsystem DLL 12 Most Win32 Kernel APIs All other Win32 APIs, including User and GDI APIs 2 1 NTDLL.DLL
79 OS/2 Win32 POSIX Environment Subsystems Win32User/GDI UserMode Executive Device Drivers Kernel Hardware Abstraction Layer (HAL) KernelMode System and Server Processes 132 UserApplication Subsystem DLL LPC Most Win32 Kernel APIs Most Win32 User and GDI APIs A few Win32 APIs NTDLL.DLL Windows NT Simplified Architecture (4.0)
80 Ruolo (semplificato) del Win32 Subsystem Process l Creazione e eliminazione dei processi l Creazione e eliminazione dei thread l Nome dei file temporanei l Lettere dei dischi l Controlli di sicurezza per il file system l Gestione grafica delle applicazioni console (a carattere) l Parziale supporto per le applicazioni DOS a 16-bit (NTVDM.EXE) l NLS (National Local Service)
81 call WriteFile(…) call NtWriteFile return to caller do the operation return to caller Int 2E return to caller call NtWriteFile dismiss interrupt Win32 application WriteFile in KERNEL32.DLL NtWriteFile in NTDLL.DLL KiSystemService in NTOSKRNL.EXE NtWriteFile in NTOSKRNL.EXE Chiamare le Win32 Kernel API Win32- specific used by all subsystems software interrupt UKUK
82 Esaminare i simboli nei file immagine l Esaminare cosa è importato/esportato in un.EXE dall’ OS In Explorer, cliccare con il pulsante destro del mouse sull’EXE o DLL, poi scegliere “quick view” o “View Dependencies” (Dependency Walker tool nel ResKit SDK) O utilizzare LINK /DUMP /EXPORTS /IMPORTS
83 Esaminare i simboli nei file immagine l Guardare gli “import” di \WINNT\SYSTEM32\NOTEPAD.EXE l Guardare gli import/export di KERNEL32.DLL La maggior parte delle funzioni esportate sono chiamate Win32 documentate
84 Esaminare i simboli nei file immagine l Guardare gli import/export di NTDLL.DLL Nessuno degli export è documentato Alcune sono simili alle stesse funzioni esportate da NTOSKRNL.EXE, documentate nel DDK
85 Esaminare i simboli nei file immagine l Guardare gli import/export di NTOSKRNL.EXE Circa 1000 simboli esportati Circa 300 delle funzioni esportate sono documentate nel DDK Chiamabili solo in kernel mode
86 Esaminare i simboli nei file immagine l Guardare tutti i simboli globali in NTOSKRNL.EXE Definiti in \support\symbols\xxx\debug\exe\ntoskrnl.d bg Il “Quick viewer” non li visualizza Utilizzare il Kernel Debugger Circa 4000 simboli Gli export di NTOSKRNL.EXE sono un sotto insieme di questa lista
87 Agenda l Key System Files l Process Execution Environment l Executive, Kernel, and HAL l Environment Subsystems l Executive Object Manager l I/O System l System Threads l Process-based Windows NT code l Summary
88 Windows NT Object Manager l Componente esecutiva per gestire gli oggetti sistema Gli oggetti sono strutture dati con dei nomi Gli oggetti gestiti comprendono i Win32 Kernel objects, ma non i Win32 User o GDI objects L’object manager implementa gli handle che permettono la gestione degli oggetti in user mode
89 Windows NT Object Manager l L’object manager non è usato per tutte le strutture dati di is not used Windows NT Sono quelle strutture che devono essere condivise, identificate da un nome o esportate in user mode Alcune strutture dati sono chiamate “oggetti” ma non sono gestite dall’object manager (ad es. oggetti DPC)
90 Navigare nell’ Object Manager WINOBJ.EXE dal MSSDK (\mssdk\bin\winnt\winobj.exe) od da
91 Agenda l Key System Files l Process Execution Environment l Executive, Kernel, and HAL l Environment Subsystems l Executive Object Manager l I/O System l System Threads l Process-based Windows NT code l Summary
92 Device driver l Interfaccia tra il sistema di I/O e l’hardware l Tipicamente scritti in C/C++ grazie all’HAL e al Kernel i sorgenti sono portabili su architetture diverse
93 Win32 appliation Win32 API DLL user mode VDM Virtual Dvc Drvr video port driver Executive and Kernel DOS/Win16 app. kernel mode GDI calls ReadFile, WriteFile, DeviceIoControl, ecc. video miniport KDD parallel port KDD Kernel Device Driver (KDD) Kernel Device Driver (possibly app- specific) User- And Kernel-Mode Drivers in Windows NT 4.0 Win32 Subsystem (WIN32K.SYS) display driver spooler printer driver GDI (graphics engine) NT Executive Services
94 Kernel-Mode Device Drivers l Moduli caricabili separatamente (drivername.SYS) Linked come dei.EXE Linked a NTOSKRNL.EXE e HAL.DLL l Definiti nel file di “registry” La stessa area dei servizi Win32 (t.b.d.) l Si possono visualizzare i driver caricati con PSTAT.EXE o DRIVERS.EXE
95 Kernel-Mode Device Driver l Hanno una struttura gerarchica l Sono classificati in base al tipo Hardware File system Filter Network redirector Miniport WIN32K.SYS
96 Kernel-Mode Device Driver
97 Kernel-Mode Device Driver l Hardware device driver Si interfacciano direttamente con l’HAL per gestire l’I/O di dispositivi fisici (disco, rete, ecc.) l File system device driver Accettano richieste di I/O associate ad un file system e le trasformano in richieste di I/O per uno specifico dispositivo
98 Kernel-Mode Device Driver l Filter driver disk mirror e encryption ricevono una richiesta di I/O, operano sui dati, e la passano al livello successivo l Network redirector sempre orientato a richieste di I/O di file system trasmette richieste di I/O a macchine remote e viceversa
99 Kernel-Mode Device Driver l Miniport driver ad esempio, i driver SCSI linkati al driver miniport generico l WIN32K.SYS driver driver legati all’ambiente Win32
100 File System: Virtual Cache l Condivisa da tutti i file systems (locali e remoti, HD e CD) l La cache è applicata a tutti i file Compresi i metadata del file system l Virtual cache Usa il meccanismo standard della memoria virtuale di Windows NT
101 Cached File Operations
102 Cached File Operations l Aprire un file: Trovare una view disponibile Mappare i primi 256 KB del file nella view l Leggere o scrivere un cached file: Remappare se necessario la parte di file che interessa nella cache Copiare i dati tra applicazione e cache L’I/O effettivo è eseguito dal meccanismo di gestione della memoria virtuale (paging)
103 Processaddressspace Systemaddressspace File Cached File Operations
104 Funzioni e controllo della cache l “Read ahead” automatico e asincrono Eseguito da un thread di sistema separato per il “Readahead” Per default 64 KB di readahead I dati successivi da leggere sono ipotizzati sulla base delle precedenti 3 letture Dei suggerimenti per il “Readahead” possono essere forniti a CreateFile: l FILE_FLAG_SEQUENTIAL esegue 192 KB di readahead l FILE_FLAG_RANDOM_ACCESS disabilita il read ahead
105 Funzioni e controllo della cache l Write-back, non write-through Il numero di “dirty page” controlla la scrittura l sistemi piccoli: Physical Pages / 8; l sistemi medi: Physical Pages / 4; l sistemi grandi: somma le due precedenti Il thread “Lazy writer” accoda 1/4 delle “dirty page” ogni secondo per permettere di separare il thread “Write Behind” (NB: il “Lazy writer” non scrive su disco)
106 Funzioni e controllo della cache l La politica “write back” può essere modificata in CreateFile tramite il flag FILE_FLAG_WRITE_THROUGH Oppure si può esplicitamente forzare la scrittura su disco com FlushFileBuffers
107 Funzioni e controllo della cache l La cache può essere disabilitata per un singolo file CreateFile con FILE_FLAG_NO_BUFFERING Richiede che read/write siano fatte per settori I buffer devono essere allineati in memoria per settori
108 Memoria virtuale l Windows NT non LRU Non usa lo “usage bit” che praticamente ogni architettura mette a disposizione per segnare una pagina di memoria utilizzata l Usa una FIFO modificata FIFO: la soluzione peggiore! La pagina selezionata viene messa in un’altra FIFO (standby list) Se la pagina e usata ancora, viene spostata dalla standby list di nuovo nel working set Si comporta male sotto stress
109 Agenda l Key System Files l Process Execution Environment l Executive, Kernel, and HAL l Environment Subsystems l Executive Object Manager l I/O System l System Threads l Process-based Windows NT code l Summary
110 System Threads l Routine interne che richiedono un thread context l Drivers o Executive possono creare system threads Sono sempre eseguiti in kernel mode Solitamente associati con il processo “System” l Ma possono essere associati ad altri processi Sono preemptible (a meno che non alzino un IRQL superiore o uguale a 2)
111 System Threads l Kernel mode API: PsCreateSystemThread PsTerminateSystemThread KeSetBasePriorityThread KeSetPriorityThread
112 Agenda l Key System Files l Process Execution Environment l Executive, Kernel, and HAL l Environment Subsystems l Executive Object Manager l I/O System l System Threads l Process-based Windows NT code l Summary
113 Process-Based Windows NT Code l “Pezzi” di Windows NT che sono contenuti in eseguibili (.EXE) separati e vengono eseguiti in processi distinti Avviati dal sistema Non sono legati al login utente l Hanno un contesto di processo completo
114 Process-Based Windows NT Code l Sono di tre tipi: Environment Subsystems (già descritti) Win32 Services Processi di system startup
115 Gerarchia di creazione dei processi l TLIST.EXE (dal resource kit) l TLIST /t mostra la gerarchia dei processi l Un processo genitore può terminare dopo aver creato dei processi figli l TLIST in questo cosa non mostra il processo che è terminato (come PS in Unix) EXPLORER.EXE è avviato da USERINIT.EXE, che poi termina
116 Gerarchia di creazione dei processi
117 Process-Based Windows NT Code: Win32 Services l Applicazioni (.EXE) Win32 che sono eseguite indipendentemente dall’utente che ha fatto login Sono avviate al boot o al logon Sopravvivono al logoff Sono definite mediante l’API CreateService (attraverso il Control Panel) Tipicamente non interagiscono con il desktop l Ottengono i parametri di avvio dal file di registro l Gli errori sono loggati nel Windows NT Event Log
118 Process-Based Windows NT Code: Win32 Services Utilizzano una forma di IPC per comunicare con i client Tipicamente i servizi fanno uso dei meccanismi di sicurezza di Windows NT Possono essere gestiti in modo remoto (start, stop, configurazione) l Il Server Manager permette il controllo remoto dei servizi l Il servizio non necessita di nessuna codice particolare per essere gestito in modo remoto
119 Process-Based Windows NT Code: Win32 Services l Utilizzare SRVANY.EXE, SC.EXE, SRVINSTW.EXE, INSTSRV.EXE nel resource kit l Esempi di servizi built-in in Windows Schedule service (avvio manuale), Event Log, Remote Access Server, IIS.
120 Service Controller Vita di un servizio Installazione: l’applicazione di setup comunica al Service Controller Manager (SCM) dell’esistenza del servizio CreateService Service Processes Control Panel Gestione: il Control Panel può avviare/fermare il servizio e cambiare i parametri di avvio Boot/inizializzazione: il SCM legge dal Registry le informazioni sul servizio e l’avvia come richiesto Setup Application Registry
121 Process-Based Windows NT Code: System Startup Processes l Processi separati caricati o avviati al boot (non come servizi o environment subsystems) l Il loro nome non è nel registry “Hardwired” nel code sorgente del kernel l La maggior parte sono eseguibili Win32, uno (SMSS) è un “native image”
122 Process-Based Windows NT Code: System Startup Processes l Idle: process id 0 Parte dell’immagine di sistema Ospita i thread che sono idle Non è un vero processo o un thread Spesso è indicato come “System Process”
123 Process-Based Windows NT Code: System Startup Processes l System: process id 2 Parte dell’immagine di sistema Ospita i thread definiti nel kernel Non è un vero processo o thread Il thread 0 (routine di nome Phase1Initialization) lancia il primo vero processo (SMSS.EXE)
124 Process-Based Windows NT Code: System Startup Processes l SMSS.EXE: Session Manager Il primo processo creato Prende i parametri da \Registry\Machine\System\ CurrentControlSet\Control\Session Manager Lancia dei sottosistemi (CSRSS.EXE) e WINLOGON.EXE
125 Process-Based Windows NT Code: System Startup Processes l WINLOGON.EXE: Logon process Presenta il primo prompt di login (“enter username and password”) Lancia SERVICES.EXE, LSASS.EXE, e NDDEAGNT.EXE Quando qualcuno esegue un login, lancia USERINIT.EXE
126 Process-Based Windows NT Code: System Startup Processes l SERVICES.EXE:Service Controller Ospita molti servizi forniti con NT Avvia altri processi (servizi) non parte di NT (elencati in \Registry\Machine\System\ CurrentControlSet\Services ) l LSASS.EXE: Local Security Processo di autenticazione
127 Process-Based Windows NT Code: System Startup Processes l USERINIT.EXE: Avviato dopo il login Avvia il desktop (EXPLORER.EXE) e termina (per questo non lo so vede nell’output di TLIST; Explorer è un orfano) l EXPLORER.EXE: Explorer e i processi figli sono i creatori di tutte le applicazioni
128 Process-Based Windows NT Code: System Startup Processes System SMSS CSRSS WINLOGON Idle SERVICES LSASSUSERINITNDDEAGNT EXPLORER
129 Agenda l Key System Files l Process Execution Environment l Executive, Kernel, and HAL l Environment Subsystems l Executive Object Manager l I/O System l System Threads l Process-based Windows NT code l Summary
130 Quattro contesti per l’esecuzione del codice l Process e thread context: Applicazioni utente Win32 Services Environment subsystem processes System startup processes l Thread context ma nessun process: Thread nel “System” process
131 Quattro contesti per l’esecuzione del codice l Routines chiamate da altri thread/processi: Subsystem DLL Executive system service (NtReadFile, ecc.) GDI routine in WIN32K.SYS (e nei graphic drivers) l Nessun contesto (“Arbitrary thread context”) Interrupt dispatching Device drivers
132 Dove è il codice? l KERNEL32.DLL, GDI32.DLL, USER32.DLL Esportano i Win32 entry points l NTDLL.DLL Fornisce allo user-mode accesso alle routine di sistema (kernel-mode) Contiene lo heap manager, l’image loader, il thread startup routine l WIN32K.SYS Il modulo che contiene il codice Win32 (prima era in CSRSS.EXE)
133 Dove è il codice? l NTOSKRNL.EXE (or NTKRNLMP.EXE) Executive e kernel Comprende la maggior parte delle routine che sono eseguite come thread nel “system” l HAL.DLL Hardware Abstraction Library l drivername.SYS Loadable kernel driver
134 Fonti di informazione per Windows NT Internal l Libri Inside Windows NT (Solomon, MS Press) Advanced Windows (Richter, MS Press) Windows NT Workstation Resource Guide (MS Press) l MSDN Library documentazione Platform SDK API documentazione Windows NT Device Driver Kit (DDK) Win32 Knowledge Base
135 Fonti di informazione per Windows NT Internal l Articoli e strumenti su Windows NT internal l Per costruttori di hardware e sviluppatori di driver l Installable File System Developers Kit l Windows NT device driver FAQ
136 Fonti di informazione per Windows NT Internal l NT audio/video tape l comp.os.ms-windows. programmer.nt.kernel-mode-drivers Newsgroup
137 Windows 2000 preview l Formalmente Windows NT 5 Forse non ci saranno successive versioni di Windows 9x
138 Aspetti da migliorare in NT 4 l Prestazioni Il modello di sicurezza basato sui domini non scala bene Ampia disponibilità di strumenti di misura, ma poca possibilità di intervenire l Gli strumenti di gestione delle prestazioni sono rivolti agli sviluppatori, non ai gestori l Memoria Indirizzamento a 64 bit l Facilità di gestione di grandi sistemi
139 Cambiamenti nelle prestazioni l Nessun grande cambiamento Le costanti di memoria andrebbero aggiornate per una miglior scalabilità l Quando ci sono più di 64 MB di Ram, gli NT Server sono tutti considerati “Large” Aggiunti due contatori ai tool di monitoring l Disk % Idle Time counter l System % Total Processor Time counter
140 Cambiamenti in Windows 2000 l NTFS l Common Internet File System (CIFS) l Microsoft Management Console l Multi-user systems WinFrame, Terminal Server l Active Directory l COM+
141 Cambiamenti in Windows 2000 l Fault tolerant Clustering l Plug and Play l Job Objects l Very large memory (Alpha)
142 NTFS l Compressione l Nuovi servizi di crittografia l NT 4 non è compatibile con il nuovo NTFS a meno di non installare un nuovo driver NTFS.SYS per una compatibilità limitata l Master File Directory entries passano da 4K a 1K
143 CIFS - Common Internet File System l File system distribuito simile a NFS Unix l Possibilità di montare file system remoti
144 CIFS
145 Microsoft Management Console
146 System Monitor l Alert service l contatori per processo
147 Clustering
148 Clustering l Un cluster è un insieme di computer che cooperano per fornire uno o più servizi l Vantaggi Scalabilità Fault tolerant Econimoci
149 Clustering l Un cluster individua componenti hw/sw mal funzionanti riavvia la componente trasferisce le funzionalità ad altre componenti l Migliora l’affidabilità del sistema e riduce il mean time to repear
150 Clustering l Astrazioni risorse dipendenze gruppi virtual server
151 Clustering: risorse l Sono l’unità base di gestione del cluster l Fisiche dischi, controller SCSI, schede di rete, … l Logiche indirizzo IP, volume di un disco, … l Forniscono un’interfaccia identica per essere gestite l Le risorse possono migrare
152 Clustering: dipendenze l Spesso il corretto funzionamento di una risorsa dipende dalla disponibilità di altre risorse Un database richiede un disco l Un albero di dipendenza descrive l’ordine in cui le risorse devono essere rese disponibili o fermate l Le dipendenze non possono attraversare i confini di un gruppo
153 Clustering: gruppi l Una collezione di risorse che devono essere gestite coma una singola unità l Un gruppo contiene tutti gli elementi che sono necessari per eseguire un’applicazione l Se una risorsa del gruppo non funziona, l’intero gruppo non funziona
154 Clustering: virtual server l Astrazione che incapsula un servizio e le risorse necessarie per eseguire quel servizio è come una classe in C++ tra le risorse compare un indirizzo IP l I virtual server possono itersecarsi le risorse di virtual server diversi possono essere condivise
155 Clustering: Node manager l Gestisce l’appartenenza delle risorse al cluster l Invia periodicamente dei messaggi (heartbeat) agli altri nodi nel cluster se un nodo non risponde, manda un broadcast agli altri membri per verificare la loro appartenenza al cluster (regroup event) se un node manager non risponde al regroup, tutti i gruppi che hanno risorse su quel nodo “falliscono”
156 Clustering: resource manager l Gestisce/avvia/ferma le risorse l Gestisce le dipendenze l Riceve informazioni dal node manager e dal resource monito
157 Clustering
158 Job objects l Un estensione del concetto di processo l E’ un oggetto che controlla gli attributi di un insieme di processi associati al Job l Serve ad ovviare alla mancanza di un albero dei processi in NT 4 l E’ possibile misurare informazioni di accounting di un Job
159 Jobs objects l Le Win32 API: creano un Job associano uno o più processi ad un Job l Esempio IIS crea dei CGI script, che possono essere messi nel contesto di un Job
160 Job objects l Un Job object contiene limiti che sono applicati a tutti i processi del job limiti di CPU time in user mode per il job limiti di CPU time in user mod per un singolo processo Massimo numero di in un job Priorità del job
161 Job objects l E’ possibile porre dei limiti a come i processi di un job usano le interfaccie utente impedire ai processi del job di aprire “window handle” con finestre di thread al di fuori del job impedire l’accesso alla clipboard ...
162 Plug and Play l Combinazione di hardware/software che permette al sistema di adattarsi a cambiamenti nella configurazione senza grossi interventi da parte dell’utente l Domanda: un sistema operativo può scalare da desktop a server?
163 Plug and Play l Advanced Configuration and Power Interface (ACPI) ver. 1.0 definizione di standard per schede madri e BIOS per affidare al sistema operativo alcuni meccanismi di gestione di una periferica l interrupt, canali DMA, indirizzi di I/O, power managment, … l ACPI è Indipendente dal sistema operativo e dalla CPU
164 Plug and Play l Implementazione in Windows 2000 estensione della infrastruttura di I/O riscrittura dei device driver l I meccanismi di plug and play operano all’installazione al boot su eventi l schede PCMCIA,...
165 Plug and Play l Nuovi device driver i dirver dei bus sono spostati fuori dall’HAL nuovi API per supportare l’installazione e la configurazione di nuovi device estensioni e cambiamenti al file dei registry estensioni al Control Panel l I vecchi device driver funzionano sempre, ma le capacità di plug and play sono ridotte
166 Plug and Play
167 Very large memory (VLM) l Windows NT 4 ha la capacità di indirizzare fino a 4 GB di memoria virtuale l Estensione in Windows 2000 a 28 GB sui sistemi Compaq/Digital Alpha l Non è previsto un porting sulle architetture Intel E’ prevista una vera versione a 64 bit per Intel IA64 e Digital Alpha
168 Very large memory (VLM) l NT 4 supporta 64 bit di indirizzamento sui file system 2 GB di memoria virtuale privata l 3 GB nella versione Enterprise l VLM permette l’uso di puntatori a 64 bit per superare il limite dei 2 GB le applicazioni vanno modificate con il nuovo puntatore per trarne beneficio nuove API per operare sui puntatori a 64 bit
169 Very large memory (VLM) l Limitazioni nell’uso dei puntatori a 64 bit Non sono gestite “page faults” di puntatori a 64 bit l Nuova Win64 API pienamente a 64 bit compatibile con applicazioni a 32 bit
170 Windows Management Instrumentation l WBEM (Web-based Enterprise Management) l Tentativo di unificare SNMP, DMI, e vari servizi Win32 (Perfmon API, Registry, Event log) Adottato dal consorzio DMTF (Intel, Cisco, BMC, Microsoft, ecc.) Descrive gli oggetti in base al CIM (Common Information Model)
171 Windows kernel trace l Descritto per la prima volta al CMG ‘97 l “Secure kernel trace facility” l Progettato per alti volumi di trace NT 4 Scheduler trace è stato abbandonato per via dell’overhead l Progettato per essere esteso
172 Trace Header Process Id Parent Process Id Security IdImage Name Process Start/End 4 bytes Variable length Trace Header Disk Signature Transfer Size Disk I/O 4 bytes IRP Flags 4 bytes Trace Header Page Faults Response 4 bytes Virtual Address 4 bytes Byte Offset 8 bytes Trace Header Source Ip Address Dest Ip Address TCP/IP 4 bytes Source Port 2 bytes Dest Port 2 bytes Size 4 bytes Process Id 4 bytes Operating System Traces
173 Windows kernel event trace header
174 Oltre Windows 2000 l Full porting su architetture a 64-bit Compaq (Digital) Alpha Intel/HP P7 Merced
175 Capacity planning: memoria l Memory: Pages/sec numero di pagine (4KB) lette/scritte da disco < 2 l la RAM è sufficiente > 3 l poca RAM
176 Capacity planning: processore l Processor/System: % Processor time percentuale di utilizzo del processore < 60% l il carico non è eccessivo > 60% l il processore è sovra-utilizzato l prima di fare un up-grade, controllare l’uso della memoria
177 Capacity planning: dischi l PhysicalDisk: Avg. Disk Queue Lenght numero medio di richieste di lettura/scrittura in attesa di essere servite < 2 l tutto OK > 3 l si richiede un disco e/o un controller più veloci
178 Capacity planning: dischi l PhysicalDisk: % Disk Time utilizzo del disco < 60% l tutto OK > 70% l si richiede un disco e/o un controller più veloci
179 Capacity planning: rete l Network segment: % Network utilization utilizzo della rete rispetto alla capacità massima del segmento < 60% l tutto OK > 70% l troppi computer/troppo traffico sul segmento di rete l partizionare ulteriormente il segmento o spostare dei server
180 Contatto l Paolo Cremonesi Dipartimento di Elettronica e Informazione Politecnico di Milano