La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Windows NT® Internals Paolo Cremonesi. 2 Testo consigliato l F. Avery Bishop, “Inside Windows NT”, Microsoft Press l

Presentazioni simili


Presentazione sul tema: "Windows NT® Internals Paolo Cremonesi. 2 Testo consigliato l F. Avery Bishop, “Inside Windows NT”, Microsoft Press l"— Transcript della presentazione:

1 Windows NT® Internals Paolo Cremonesi

2 2 Testo consigliato l F. Avery Bishop, “Inside Windows NT”, Microsoft Press l

3 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 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 5 Estensioni in Windows 2000 l Plug and play l Job object l indirizzamento a 64 bit

6 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 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 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 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 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 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 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 13 Programmi | Strumenti di amministrazione | Windows NT Diagnostics Windows NT Versions

14 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 15 Packaging del prodotto l Il kernel e i driver sono gli stessi

16 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 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 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 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 20 Per-process address space System wide Address Space Thread Thread Thread Processi e Threads Per-process address space Thread Thread

21 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 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 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 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 25 ComponentiAccess mode ApplicazioniUser Subsystem processesUser ExecutiveKernelKernel DriversKernel HALKernel Kernel Mode Vs. User Mode

26 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 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 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 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 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 31 Accounting del tempo di kernel Programmi | Strumenti di amministrazione | Performance Monitor

32 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 51 HalGetBusData HalGetBusDataByOffset HalAssignSlotResources HalSetBusData HalSetBusDataByOffset HalTranslateBusAddress HalGetInterruptVector HalGetAdapter READ_REGISTER_ULONG WRITE_PORT_UCHAR Routine HAL di esempio HAL - Hardware Abstraction Layer

52 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 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 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 55 User process l I “processi” in user mode possono essere classificati in:  Service process  Special system support process  Environment subsystems  User applications

56 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 71 Environment Subsystems: Win32 l Essenziale al funzionamento di Windows NT l Le componenti principali sono  environment subsystem process  kernel mode device driver

72 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 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 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 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 76 NTDLL.DLL l Funzioni di supporto aggiuntive  Funzione per il caricamento degli eseguibili  Gestore dello heap  Gestore dell’Asynchronous Procedure Call (ASP) ...

77 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 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 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 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 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 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 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 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 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 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 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 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 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 90 Navigare nell’ Object Manager WINOBJ.EXE dal MSSDK (\mssdk\bin\winnt\winobj.exe) od da

91 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 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 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 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 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 96 Kernel-Mode Device Driver

97 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 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 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 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 101 Cached File Operations

102 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 103 Processaddressspace Systemaddressspace File Cached File Operations

104 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 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 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 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 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 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 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 111 System Threads l Kernel mode API:  PsCreateSystemThread  PsTerminateSystemThread  KeSetBasePriorityThread  KeSetPriorityThread

112 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 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 114 Process-Based Windows NT Code l Sono di tre tipi:  Environment Subsystems (già descritti)  Win32 Services  Processi di system startup

115 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 116 Gerarchia di creazione dei processi

117 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 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 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 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 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 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 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 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 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 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 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 128 Process-Based Windows NT Code: System Startup Processes System SMSS CSRSS WINLOGON Idle SERVICES LSASSUSERINITNDDEAGNT EXPLORER

129 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 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 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 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 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 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 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 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 137 Windows 2000 preview l Formalmente Windows NT 5  Forse non ci saranno successive versioni di Windows 9x

138 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 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 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 141 Cambiamenti in Windows 2000 l Fault tolerant Clustering l Plug and Play l Job Objects l Very large memory (Alpha)

142 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 143 CIFS - Common Internet File System l File system distribuito simile a NFS Unix l Possibilità di montare file system remoti

144 144 CIFS

145 145 Microsoft Management Console

146 146 System Monitor l Alert service l contatori per processo

147 147 Clustering

148 148 Clustering l Un cluster è un insieme di computer che cooperano per fornire uno o più servizi l Vantaggi  Scalabilità  Fault tolerant  Econimoci

149 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 150 Clustering l Astrazioni  risorse  dipendenze  gruppi  virtual server

151 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 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 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 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 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 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 157 Clustering

158 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 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 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 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 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 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 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 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 166 Plug and Play

167 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 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 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 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 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 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 173 Windows kernel event trace header

174 174 Oltre Windows 2000 l Full porting su architetture a 64-bit  Compaq (Digital) Alpha  Intel/HP P7 Merced

175 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 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 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 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 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 180 Contatto l Paolo Cremonesi Dipartimento di Elettronica e Informazione Politecnico di Milano


Scaricare ppt "Windows NT® Internals Paolo Cremonesi. 2 Testo consigliato l F. Avery Bishop, “Inside Windows NT”, Microsoft Press l"

Presentazioni simili


Annunci Google