cefriel consorzio per la formazione e la ricerca in ingegneria dellinformazione politecnico di...
TRANSCRIPT
© 2002 - William Fornaciari© 2002 - William Fornaciari
CEFRIELCEFRIELConsorzio per la Formazione e la RicercaConsorzio per la Formazione e la Ricercain Ingegneria dell’Informazionein Ingegneria dell’Informazione
PolitecnicoPolitecnicodi Milanodi Milano
Windows NTWindows NT
Docente:Docente:
Ing. Domenico BarrettaIng. Domenico Barretta
Politecnico di MilanoPolitecnico di [email protected]@elet.polimi.it
www.elet.polimi.it/~barrettawww.elet.polimi.it/~barretta
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 22 - -
SommarioSommario
IntroduzioneAmbiente di esecuzione dei processiArchitettura di Windows NT
Modo prilivegiatoNT Executive
NT Kernel
HAL (Hardware Abstraction Layer)
Modo utenteEnvironment Subsystems
Processi di startup del sistema
Cambiamenti in Windows 2000Monitoraggio del Sistema
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 33 - -
IntroduzioneIntroduzione
Sistema operativo Windows NTA Prelazione (preemptive)Rientrante
Tutte le parti condivise di libreria non sono auto-modificanti.
– Non è consentita la modifica diretta dei dati.
Memoria virtualeMulti piattaformaParzialmente compatibile con DOS e Win3.1
Estensioni di Windows 2000Plug and playJob objectIndirizzamento a 64 bit
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 44 - -
Introduzione: Architettura Introduzione: Architettura WinNTWinNT
Processi di servizio
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
Applicazione
Subsystem DLLs
POSIX
OS/2
Session Manager
Processi di Sistema
Applicazioni Utente
File systems Object management / Executive RTL
NT Kernel
Hardware Abstraction Layer (HAL)
Event Logger
System Threads Modalità Kernel
Executive API
Win32
NTDLL.DLL Modalità Utente
NTOSKRNL.EXE NT Executive
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 55 - -
Introduzione: Processi e Introduzione: Processi e ThreadThread
ProcessoUn’istanza di un programma in esecuzioneun processo si crea per eseguire un programma quindi, avviare un’applicazione crea un processo.L’argomento principale all’API (Application Program Interface) Win32 CreateProcess è il nome del file da eseguire.
Esempio:#include <string.h>...strcpy(lpcommandLine, “c:\\WINNT\\SYSTEM32\\NOTEPAD.EXE temp.txt”);CreateProcess (Null, lpCommandLine,...);...
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 66 - -
Introduzione: Processi e Introduzione: Processi e ThreadThread
Thread (processo leggero – lightweight process)Un contesto di esecuzione all’interno di un processo.
Un processo definisce uno spazio di indirizzamento all’interno del quale uno o più thread sono eseguiti.
Tutti i thread in un processo,Sono eseguiti all’interno di un singolo spazio di indirizzamento;Condividono le stesse risorse.
L’argomento principale all’API Win32 CreateThread è il nome di una funzione.
Esempio:CreateThread(NULL, 0, myFunc, &Arg, ...);
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 77 - -
Introduzione: Processi e Introduzione: Processi e ThreadThread
All’avvio ogni processo è composto da un solo thread: quello corrispondente all’esecuzione della funzione main.ll thread può creare altri thread nello stesso processoIl thread può creare altri processi
Spazio di indirizzamento del processo Spazio di indirizzamento del processo
Esecuzione di Thread
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 88 - -
Introduzione: Introduzione: Modo utente e modo kernelModo utente e modo kernel
Il passaggio da un modo all’altro, oltre ad influenzare lo stato del processore consente di controllare:
l’accesso alla memoriaOgni pagina ha un tag che indica il modo richiesto per leggere o scrivere
– Le pagine di codice hanno tag “no write in any mode”
Protegge la memoria dedicata al sistema accessi da parte processi utente.Protegge processi utente da altri processi dello stesso tipo.
la possibilità di eseguire istruzioni privilegiateAd esempio, istruzioni di I/O.
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 99 - -
ComponentiComponenti Modo di Modo di AccessoAccesso
Applicazioni Utente
Subsystem processes Utente
NT Executive Kernel
NT Kernel Kernel
Driver Kernel
HAL Kernel
ComponentiComponenti Modo di Modo di AccessoAccesso
Applicazioni Utente
Subsystem processes Utente
NT Executive Kernel
NT Kernel Kernel
Driver Kernel
HAL Kernel
Introduzione: Introduzione: Modo utente e modo kernelModo utente e modo kernel
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 1010 - -
Architettura: Modo kernelArchitettura: Modo kernel
Il codice è eseguito in modo kernel per:1. Richiesta da parte di un thread attivo in modo
utente2. Interrupt da dispositivi esterni3. Thread attivi in modo kernel
1. Richiesta da parte di un thread attivo in modo utente
Il passaggio a modo kernel da parte di un thread in modo utente avviene
attraverso il system service dispatchil codice in modo kernel viene eseguito nel contesto del thread
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 1111 - -
Architettura: Modo kernelArchitettura: Modo kernel
2. Interrupt da dispositivi esterniGli Interrupt (come tutte le eccezioni) sono gestiti in modalità kernelL’interrupt dispatcher di Windows NT invoca la le routine di servizio alle interruzioni (interrupt service routine – ISR )La ISR viene eseguita nel contesto del thread interrotto (“arbitrary thread context”)La ISR spesso richiede l’esecuzione di una Deferred Procedure Call (DPC), anche essa in kernel mode
3. Thread attivi in modo kernelAlcuni thread di sistema sono sempre in modo kernel mode, la maggior parte nel processo SystemScheduling e preemption sono analoghi come per ogni altro thread.
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 1212 - -
Sincronizzazione nel kernelSincronizzazione nel kernel
La garanzia della mutua esclusione per l’accesso a strutture dati del kernel può avvenire in modi diversiSu singolo processore è sufficiente disabilitare gli interrupt le cui ISR potrebbero accedere alla struttura datiSu multiprocessore non è sufficiente questo approccio
Si usa uno spinlock: una primitiva per prendere un lock su una struttura dati condivisaImplementazione dipendente dall’hardware
Spesso utilizza l’istruzione di test-and-set
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 1313 - -
SincronizzazioneSincronizzazione
L’utilizzo della soluzione dello spinlock non è attuabile che a livello kernel
Quando si richiede uno spinlock la CPU stalla fino al suo ottenimento
Usabile solo per sezioni critiche molto brevi
A livello executive vengono offerte delle primitive di sincronizzazione
Si basano sull’attesa che un oggetto passi dallo stato nonsignaled allo stato signaled
Quando ciò avvenga e quanti thread vengano riportati nello stato ready dipende dal tipo di oggetto (processo, thread, file, mutex, …)
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 1414 - -
Architettura di Architettura di NTNT e e Win2000Win2000
NT Executive
Applicazione
NT Kernel
Hardware Abstraction Layer (HAL)
Modalità Kernel
Win32 Modalità Utente
Hardware
Altri sotto sistemi
Applicazione Applicazione
Altri sotto sistemi
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 1515 - -
ArchitetturaArchitettura
Windows NT e 2000 ha una architettura microkernel modificata.
Ogni funzione del sistema è gestita da una sola componente del sistema operativo.Il resto del sistema operativo e tutte le applicazioni accedono alla funzione attraverso il componente che ne è responsabile utilizzando interfacce standard.Si può accedere ai dati di sistema solo attraverso funzioni appropriate.Non è una architettura microkernel pura poiché molte delle funzioni di sistema non incluse nel microkernel sono eseguite in modo privilegiato (modo kernel).
Per ragioni legate alle prestazioni– Molte funzioni non microkernel richiederebbero molte
commutazioni tre thread o processi, molti cambi di modo e l’uso di buffer in memoria extra.
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 1616 - -
Processi di servizio
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
Applicazione
Subsystem DLLs
POSIX
OS/2
Session Manager
Processi di Sistema
Applicazioni Utente
File systems Object management / Executive RTL
Kernel
Hardware Abstraction Layer (HAL)
Event Logger
System Threads Modalità Kernel
Executive API
Win32
NTDLL.DLL Modalità Utente
NTOSKRNL.EXE
Architettura: Modo kernelArchitettura: Modo kernel
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 1717 - -
ArchitetturaArchitettura:: NT Executive NT Executive
Costruito sopra il kernel, implementa tutte le politiche ed i servizi offerti da NT.
Gestione dei processiGestione della memoriaGestione dei fileGestione dei dispositivi
È costituito da moduli:Gestore degli oggetti, gestore di processi e thread, gestore della memoria virtuale, gestore della sicurezza, gestore dell’I/O, gestore della cache, funzioni di runtime, funzioni di supporto esecutivo, Strumenti per LPC (local procedure call).
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 1818 - -
ArchitetturaArchitettura:: NT Executive NT Executive
Gestore degli oggettiCrea, gestisce e cancella gli oggetti e tipi di dati astratti utilizzati per rappresentare le risorse
Processi, thread, sincronizzazione ...
Gestore degli oggetti implementa gli handle che permettono la gestione degli oggetti in modo utente
Gestisce la sicurezza degli oggetti
Oggetto Esecutivo
Applicazione
Oggetto Kernel
Modalità Kernel
Modalità Utente
handle
NT Executive
NT Kernel
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 1919 - -
ArchitetturaArchitettura:: NT Executive NT Executive
Gestore di processi e threadGestisce tutti gli aspetti che non sono gestiti da altri elementi specializzati (es: le caratteristiche di un file)
Crea e termina thread e processiSvolge l’attività di supervisore nella allocazione delle risorseFornisce le primitive di sincronizzazioneControlla i cambi di stato dei thread e processi
Gestore della sicurezzaGestisce le politiche di sicurezza sul computer localeControlla le risorse del sistema operativo
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 2020 - -
ArchitetturaArchitettura:: NT Executive NT Executive
Gestore della memoria virtualeimplementa il meccanismo di memoria virtuale
Mette in corrispondenza gli indirizzi virtuali relativi allo spazio di indirizzamento di un processo con le pagine fisiche della memoria di lavoro. Quando un processo è creato dispone di 4 GB di spazio virtuale di indirizzamento.
fornisce il supporto alla I/O cacheLa politica di sostituzione delle pagine è FIFO modificata
La pagina da eliminare viene messa in un’altra FIFO (standby list).Se la pagina e usata ancora, viene spostata dalla standby list di nuovo nel working set.FIFO è la politica peggiore.
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 2121 - -
ArchitetturaArchitettura:: NT Executive NT Executive
Gestore dell’I/ORealizza un ambiente attraverso cui le applicazioni possono accedere ai dispositivi di I/O.
funzioni di I/O device-independent.– Hardware device driver: gestiscono l’I/O dei dispositivi fisici
(disco, rete, ecc.) interfacciandosi direttamente con l’HAL– 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
– Network redirector: trasmettono richieste di I/O a macchine remote e viceversa (orientato a richieste di I/O di file system)
Individua il driver più appropriato per ulteriori elaborazioni
Filter driver– disk mirror, per crittare e decrittare dati, ...– ricevono una richiesta di I/O, operano sui dati, e la passano al
livello successivo.
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 2222 - -
ArchitetturaArchitettura:: NT Executive NT Executive
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 2323 - -
ArchitetturaArchitettura:: NT Executive NT Executive
Gestore della cacheMigliora le prestazioni di dispositivi di I/O basati su file
Mantenendo in memoria centrale le pagine lette di recente.Rimandando la scrittura su disco mantenendo le pagine in memoria di centrale.
La Cache è condivisa da tutti i file systems (locali e remoti, HD e CD) ed è applicata a tutti i file.Alla cache è applicato il meccanismo standard della memoria virtuale di Windows NT: Virtual cache.
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 2424 - -
ArchitetturaArchitettura:: NT Executive NT Executive
Richiesta di lettura
Driver del File System
Memoria Virtuale
Vista del file 1
Vista del file 2
...
...
...
Gestore della cache
Gestore della memoria virtuale
Driver del disco
1
2
3
4 5
6
7 Gestore della
memoria virtuale
Descrittore dell’indirizzo
virtuale
Page Fault
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 2525 - -
ArchitetturaArchitettura:: NT Executive NT Executive
Gestore della cache (continua)Aprire un file:
Trovare una vista disponibile e inserire i primi 256 KB del file nella vista
Leggere o scrivere un file in cache:Rimappare se necessario la parte di file che interessa nella cacheCopiare i dati tra applicazione e cache (verso cache in caso di scrittura su file)L’I/O effettivo viene eseguito dal meccanismo di gestione della memoria virtuale
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 2626 - -
ArchitetturaArchitettura:: NT Executive NT Executive
Gestore della cache (continua) La politica di gestione in scrittura della cache è Write-back
Il numero di pagine dirty presenti controlla la scrittura– sistemi piccoli: numero di pagine fisiche/8; – sistemi medi: numero di pagine fisiche/4;– sistemi grandi: somma le due precedenti
Il thread Lazy writer accoda 1/4 delle pagine modificate (dirty page) ogni secondo
– Nota: il thread Lazy writer non scrive su disco; questa attività è svolta da Write Behind.
La gestione della politica di predizione della lettura da disco (Read Ahead) è di tipo automatico e asincrono
I dati successivi da leggere sono ipotizzati sulla base delle precedenti 3 letture
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 2727 - -
ArchitetturaArchitettura:: NT Executive NT Executive
Funzioni runtimegestione di stringhe, funzioni algebriche, conversione di tipi...
Strumenti per LPC (local procedure call) Fa rispettare la relazione client/server tra le applicazioni e i sotto sistemi esecutivi su di uno stesso calcolatore
Simile all’RPC (Remore Procedure Call) nall’ambito dei sistemi distribuiti
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 2828 - -
ArchitetturaArchitettura:: NT KernelNT Kernel
Rapresenta il microkernel modificato di NTÈ costituito dalle più importanti e più utilizzate componenti del sistema operativoNT Kernel gestisce:
Lo scheduling dei threadLa comunicazione tra processiLa gestione di interruzioni ed eccezioniLa sincronizzazione multiprocessore
Altre importanti funzioni del kernel sono:Isolare l’executive dall’architettura Mascherare le differenze tra diverse architetture
X86, Alpha, etc.
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 2929 - -
ArchitetturaArchitettura:: NT KernelNT Kernel
Il kernel differisce dall’executive Non è mai paginato dalla memoriaLa sua esecuzione non è mai interrotta da altri thread
ad eccezione delle Interrupt Service Routine
Non verifica mai la correttezza dei parametri di chi chiama le sue funzioniNon implementare politiche di gestione
tranne per il thread scheduling
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 3030 - -
SchedulingScheduling
In Windows NT/2000 la granularità dello scheduling è a livello di thread, non a livello di processoUn processo con tanti thread, a parità di priorità, avrà a disposizione una frazione maggiore del tempo di CPU rispetto ad un processo con pochi threadI thread vengono schedulati in base alla loro priorità
32 livelli di priorità0: riservato allo zero page thread1-15: priorità variabile16-31: priorità “real time”
– Real time è usato in senso improprio: non vengono offerte garanzie tipiche dei sistemi operativi real-time
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 3131 - -
SchedulingScheduling
Lo scheduler mantiene una coda di thread in stato ready per ogni livello di prioritàDi volta in volta il thread viene selezionato fra quelli nella coda non vuota corrispondente alla priorità più altaNon viene fatta alcuna distinzione fra thread in modalità utente e thread in modalità kernelIl quanto di tempo assegnato ad un thread può variare dinamicamente
Il thread in foreground ha un quanto di tempo più lungo degli altri
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 3232 - -
Scheduling : Scheduling : PrioritàPriorità
Il livello di priorità di un thread viene determinato in base a
Priorità del processo di appartenenzaPriorità rispetto ad altri thread
I livelli di priorità fra 1 e 15 possono essere modificati dal sistema
Si parla di priority boost (si veda la slide successiva)
I livelli di priorità fra 16 e 31 non vengono mai modificati e sono usati anche da thread di sistema
Un thread a priorità oltre il 16 potrebbe non permettere l’esecuzione di thread di sistema
Necessari privilegi per usare questi livelli di priorità
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 3333 - -
Priority boostPriority boost
Esistono cinque casi in cui la priorità (se minore di 16) può aumentare provvisoriamente
Al completamento di operazioni di input/outputDopo una wait su un evento o un semaforoQuando un thread in foreground completa una waitQuando un thread di gestione dell’interfaccia grafica si risveglia per un’attività relativa alla gestione delle finestreQuando un thread non è stato schedulato da molto tempo
Dopo un certo intervallo di tempo la priorità torna al valore iniziale
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 3434 - -
PreemptionPreemption
Alcuni interrupt software e tutti gli interrupt hardware hanno priorità superiore alla massima priorità di un thread
Se avviene uno di questi interrupt, il thread in esecuzione viene sospeso
Se viene creato un thread a priorità superiore rispetto a quello in esecuzione, il thread viene interrotto e torna in testa alla coda corrispondente alla sua prioritàLo stesso avviene se un thread a priorità più elevata torna allo stato ready dallo stato waiting (o transition)
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 3535 - -
Scheduling su multiprocessoreScheduling su multiprocessore
Su sistemi a multiprocessore simmetrico possono essere in esecuzione più thread contemporaneamenteIl meccanismo di scheduling viene alterato tenendo conto dell’affinità
L’affinità è l’insieme di processori su cui un thread può essere schedulato per l’esecuzione
Sottoinsieme dei processori disponibiliDefault: tutti i processori
Viene tenuta traccia del processore preferenziale (inizializzato con una variabile casuale) e dell’ultimo processore su cui è stato eseguito
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 3636 - -
Scheduling su multiprocessoreScheduling su multiprocessore
La scelta di un thread da eseguire su un processore avviene secondo i seguenti criteri (si cerca un thread che ne rispetti almeno uno, nel rispetto dell’affinità)
L’ultima volta che è stato eseguito era su quel processoreHa quel processore come processore idealeÈ pronto per l’esecuzione da almeno due quanti di tempoHa una priorità maggiore di 23
Se non ne trova uno, schedula come su monoprocessore (ma tenendo conto dell’affinità)
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 3737 - -
ArchitetturaArchitettura:: HALHAL
L’Hardware Astraction Layer (HAL.DLL) mette in relazione i comandi e le risposte di un hardware generico con quelli di una specifica piattaforma.
Fornisce a NT Kernel una visione uniforme del bus di sistema della macchina, del controller DMA, del controller dell’interrupt, dei timer di sistema e del modulo di memoria.
Differennze tra NT Kernel e HALNT Kernel
Maschera le funzioni specifiche di un’architetturaHAL
Maschera le funzioni che possono essere diverse su macchine diverse all’interno della stessa architettura
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 3838 - -
ArchitetturaArchitettura:: HALHAL
Windows NT comprende HAL per alcune architetture:
PC-compatibili, DEC Alpha, Power PCI produttori di hardware possono fornire altri HALRoutine d’esempio:
HalGetBusDataHalAssignSlotResourcesHalSetBusDataHalSetBusDataByOffsetHalTranslateBusAddressHalGetInterruptVectorHalGetAdapterREAD_REGISTER_ULONG WRITE_PORT_UCHAR
HalGetBusDataHalAssignSlotResourcesHalSetBusDataHalSetBusDataByOffsetHalTranslateBusAddressHalGetInterruptVectorHalGetAdapterREAD_REGISTER_ULONG WRITE_PORT_UCHAR
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 3939 - -
Programmi di Programmi di Windows NTWindows NT
Sono elementi di Windows NT che sono contenuti in eseguibili (.EXE) separati e vengono eseguiti in processi distinti
Sono avviati dal sistemaNon sono legati all’utente
Sono di tre tipi:Environment Subsystems Win32 Services
Processi di startup del sistema
Sono processi attivati in modo utente
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 4040 - -
Processi in modo utenteProcessi in modo utente
I processi attivi in modo utente possono essere classificati nel modo seguente:
Processi di servizioSono processi che rimangono in attesa di svolgere uno specifico servizio.
– Esempio: un processo di servizio è quello che gestisce la coda di stampa oppure quello per monitorare eventi di sistema, sicurezza o applicazione (Event Logger).
Processi speciali di supporto al sistemaProcessi di sistema che non sono eseguiti come servizi
– Logon process, session manager, ...
Ambiente dei sotto sistemi Environment subsystems
Applicazioni utente
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 4141 - -
Processi in modo utenteProcessi in modo utente
Processi di servizio
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
Applicazione
Subsystem DLLs
POSIX
OS/2
Session Manager
Processi di Sistema
Applicazioni Utente
File systems Object management / Executive RTL
Kernel
Hardware Abstraction Layer (HAL)
Event Logger
System Threads Modalità Kernel
Executive API
Win32
NTDLL.DLL Modalità Utente
NTOSKRNL.EXE
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 4242 - -
ArchitetturaArchitettura : : Environment SubsystemsEnvironment Subsystems
Ogni Environment Subsystem fornisce un insieme di servizi di base tipici di un dato sistema operativo.
Esempio: I programmi applicativi scritti per MS-DOS sfruttano l’interfaccia messa a disposizione dall’environment subsystem MS-DOS.
Il sottosistema fornisce alla applicazione la stessa API (Application Program Interface) che fornisce MS-DOS.
Sistemi SupportatiWin32, Windows 3.1, MS-DOS
Posix 1.x
OS/2
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 4343 - -
ArchitetturaArchitettura : : Environment SubsystemsEnvironment Subsystems
Dei tre sistemi supportati da Windows NT, Win32 assume un ruolo speciale poiché implementa alcune estensioni di NT Executive che sono necessarie a tutti gli altri sottosistemi.
Posix 1.x– E’ supportata solo la componente standard
» Non sono presenti componenti opzionali
OS/2– Supporto solo per alcune tipologie di applicazioni
» Applicazione di tipo carattere (non grafiche)
Nota: non sono forniti strumenti e documentazione per estendere i sottosistemi
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 4444 - -
ArchitetturaArchitettura : : Environment SubsystemsEnvironment Subsystems
Ciascun sottosistema fornisce l’accesso ad un diverso sotto insieme dei servizi di Windows NT.
Le applicazioni relative ad un sottosistema possono attuare servizi non disponibili ad applicazioni di altri sottosistemi
Ad esempio, il servizio di fork è disponibile solo nel sottosistema Posix.
Quando viene creato un processo, il tipo di sottosistema specificato nell’intestazione del file consente di indirizzarlo all’opportuno insieme di servizi.
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 4545 - -
ArchitetturaArchitettura : : Environment SubsystemsEnvironment Subsystems
Le applicazioni utente non accedono direttamente ai servizi del sistema operativo, ma passano attraverso una o più libreria dinamica di sotto sistemaLe DLL di sotto sistema traducono una funzione nel codice nell’appropriata chiamata.
la DLL Win32 implementa le Win32 APIla DLL Posix implementa le Posix 1003.1 API
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 4646 - -
ArchitetturaArchitettura : : Environment Subsystems - Win32Environment Subsystems - Win32
Creazione e eliminazione dei processiCreazione e eliminazione dei threadGenerazione del nome dei file temporaneiIdentificatore delle unità dischiControlli di sicurezza per il file system.Gestione grafica delle applicazioni console (a carattere)Parziale supporto per le applicazioni DOS a 16-bit.
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 4747 - -
ArchitetturaArchitettura : : Win32 Win32 ServicesServices
Applicazioni (.EXE) Win32 che sono eseguite indipendentemente dall’utente che ha fatto login
Sono avviate al boot o al logon Sopravvivono al logoffSono definite mediante l’API CreateService (attraverso il Control Panel)Tipicamente non interagiscono con il desktop
Ottengono i parametri di avvio dal file di registroGli errori sono loggati nel Windows NT Event Log
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 4848 - -
ArchitetturaArchitettura : : Win32 Win32 ServicesServices
Utilizzano una forma di IPC per comunicare con i clientTipicamente i servizi fanno uso dei meccanismi di sicurezza di Windows NTPossono essere gestiti in modo remoto (start, stop, configurazione)
Il Server Manager permette il controllo remoto dei serviziIl servizio non necessita di nessuna codice particolare per essere gestito in modo remoto
Esempi di servizi built-in in WindowsSchedule service (avvio manuale), Event Log, Remote Access Server, IIS.
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 4949 - -
ArchitetturaArchitettura : : Processi di Processi di startup startup del sistemadel sistema
SystemSystem
SMSSSMSS
CSRSSCSRSS WINLOGONWINLOGON
IdleIdle
SERVICESSERVICES LSASSLSASS USERINITUSERINIT NDDEAGNTNDDEAGNT
EXPLOREREXPLORER
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 5050 - -
ArchitetturaArchitettura : : Processi di Processi di startup startup del sistemadel sistema
Sono processi separati caricati o avviati al boot non come servizi o environment subsystems
Il loro nome non è nel registrySono inglobati nel codice sorgente del kernel
Idle: processo ID 0Ospita i thread che sono idleNon è un vero processo o un threadSpesso è indicato come System Process
System: Ospita i thread definiti nel kernelNon è un vero processo o threadIl thread 0 (routine di nome Phase1Initialization) lancia il primo vero processo (SMSS.EXE)
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 5151 - -
ArchitetturaArchitettura : : Processi di Processi di startup startup del sistemadel sistema
SMSS.EXE: Session ManagerIl primo processo creatoPrende i parametri da\Registry\Machine\System\CurrentControlSet\Control\Session Manager
Lancia dei sottosistemi (CSRSS.EXE) e WINLOGON.EXEWINLOGON.EXE: Logon process
Presenta il primo prompt di login(“enter username and password”)Lancia SERVICES.EXE, LSASS.EXE, e NDDEAGNT.EXEQuando qualcuno esegue un login, lancia USERINIT.EXE
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 5252 - -
ArchitetturaArchitettura : : Processi di Processi di startup startup del sistemadel sistema
SERVICES.EXE: Service ControllerOspita molti servizi forniti con NTAvvia altri processi (servizi) non parte di NT (elencati in \Registry\Machine\System\CurrentControlSet\Services )
LSASS.EXE: Local SecurityProcesso di autenticazione
USERINIT.EXE:Avviato dopo il loginAvvia il desktop (EXPLORER.EXE) e termina
EXPLORER.EXE:Explorer e i processi figli sono i creatori di tutte le applicazioni
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 5353 - -
Cambiamenti in Windows Cambiamenti in Windows 20002000
NTFSConsente la compressione e nuovi servizi di crittografiaNT 4 non è compatibile con il nuovo NTFS
Common Internet File System (CIFS)File system distribuito simile a NFS Unix e possibilità di montare file system remoti
Multi-user systemsWinFrame, Terminal Server
Active DirectoryPlug and PlayVery large memory (Alpha)
Windows NT 4 ha la capacità di indirizzare fino a 4 GB di memoria virtualeEstensione in Windows 2000 a 28 GB sui sistemi Compaq/Digital Alpha
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 5454 - -
Monitoraggio del SistemaMonitoraggio del Sistema
Utilizzare perfmon.exe per monitorare il sistema.
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 5555 - -
Monitoraggio della MemoriaMonitoraggio della Memoria
Memory: Pages/secNumero di pagine (4KB) lette o scritte da disco per risolvere le mancanze di pagina cioè le pagine di dati o codice che non sono nel working set ma devono essere caricate da disco (hard fault).
Questo indicatore è utilizzato per analizzare i fallimenti che determinano ritardi di sistema più elevati.
Analisi< 2 pagine al secondo
– La RAM è sufficiente
> 3 pagine al secondo– La RAM è insufficiente. Il working set non può essere
dimensionato correttamente
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 5656 - -
Monitoraggio del ProcessoreMonitoraggio del Processore
Processor:%Processor timeIdentifica la percentuale di tempo in cui il processore è utilizzato per eseguire dei thread non-idle
Questo indicatore è utilizzato per analizzare l’attività del processore
Analisi< 60%
– il carico è contenuto. La capacità computazionale del processore e sufficiente per le attività svolte.
> 60%– Il processore è caricato in modo eccessivo. – prima di fare un up-grade, controllare l’uso della
memoria
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 5757 - -
Monitoraggio dei DischiMonitoraggio dei Dischi
PhysicalDisk: Avg. Disk Queue Lenghtnumero medio di richieste, di sia di lettura sia di scrittura, accodate al disco selezionato e che sono in attesa di essere servite.Analisi
< 2– Il numero di richieste pendenti non è critico. Il
sistema lavora correttamente.
> 3– Il numero di richieste pendenti è critico poiché il
disco e/o il controller non sono sufficientemente veloci per soddisfare le esigenze del sistema.
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 5858 - -
Monitoraggio dei DischiMonitoraggio dei Dischi
PhysicalDisk: % Disk TimeIdentifica la percentuale di tempo in cui il disco selezionato è occupato a servire le richeste di lettura o scrittura.Analisi
< 60%– Il sistema lavora correttamente.
> 70%– Il sistema è sovraccaricato: è richiesto un disco e/o
un controller più veloce.
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 5959 - -
Conteggio del tempo in modo Conteggio del tempo in modo kernelkernel
Processor: % Processor Time Processor Time: tempo totale in CPU
elapsed real time - idle time
Il Processor Time è dato dalla somma del% User Time % Privileged Time
– tempo passato in kernel mode– comprende:
» Interrupt Time, DPC Time» Altri kernel-mode time (nessun contatore)
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 6060 - -
FilesystemFilesystem
Windows NT supporta i seguenti filesystemCDFS (CD-ROM File System)
Nomi non più lunghi di 32 caratteriMassima profondità degli alberi di directory 8Considerato un formato “legacy”
UDF (Universal Disk Format)Sostituisce CDFSNomi fino a 256 caratteriMassima lunghezza di un percorso 1023 caratteriNomi di file in cui maiuscole e minuscole sono diverse
FAT12, FAT16 e FAT32
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 6161 - -
Filesystem: Filesystem: FATFAT
FAT=File Allocation TableIl numero dopo la sigla indica il numero di bit per indirizzare i clusterIl filesystem FAT12 è utilizzato per i floppyI filesystem FAT16 e FAT32 sono supportati principalmente per compatibilità con altri sistemi operativi in sistemi multibootSu dischi grandi un basso numero di bit per l’indirizzamento dei cluster implica l’utilizzo di grossi cluster
Grosso spreco di spazio
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 6262 - -
NTFSNTFS
Supportato a partire da Windows 2000E’ un filesystem che usa 64 bit per indirizzare i cluster
Limite imposto da Windows 2000: la massima dimensione di un disco equivale a quella che avrei con uno spazio di indirizzamento a 32 bit (128 TB)
La dimensione del cluster dipende dalla dimensione del disco (come per tutti i filesystem)E’ robusto rispetto a crash di sistema o spegnimenti accidentaliHa caratteristiche di sicurezza
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 6363 - -
NTFSNTFS
RobustezzaSi basa sul concetto di transazione atomica
Un’operazione o va a buon fine o viene completamente annullata
Le informazioni vitali per la gestione del filesystem sono replicate per garantire che non vengano perse
SicurezzaAd ogni file è associato un descrittore per la sicurezzaE’ possibile assegnare i diritti sui file a livello di singolo utenteI diritti vengono assegnati dal proprietario del file (di default il creatore)
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 6464 - -
NTFSNTFS
NTFS mette a disposizione alcune caratteristiche avanzate fra cui
Un file può essere composto da più flussi di dati (data stream)
Ad esempio un flusso aggiuntivo è usato per le informazioni sul file (autore, titolo, …)
Indicizzazione dei file per una ricerca più veloceSostituzione dinamica dei cluster danneggiatiHard links
Esiste una chiamata di sistema ma non un comando per crearli
Quote per gli utentiCrittografia dei dati
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 6565 - -
Gestore della memoriaGestore della memoria
Lo spazio di indirizzamento virtuale è di 4 GB (indirizzi a 32-bit)Vengono gestiti file mappati in memoriaPermette di condividere pagine fra processiFornisce servizi al gestore della cache del filesystemAlcune delle migliorie di Windows 2000:
Possibilità di gestire fino a 64 GB di memoria fisicaMiglioramento delle prestazioni e della scalabilità
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 6666 - -
Spazio di indirizzamento Spazio di indirizzamento virtualevirtuale
Accessibile in user mode
Accessibile in user mode
Accessibile in kernel mode
Accessibile in kernel mode
}}
Uno per processo
Uno per tuttoil sistema
00000000
7FFFFFFF
80000000
FFFFFFFF
Lo spazio di indirizzamento di un processo contiene:
L’applicazione in esecuzione (.EXE e le .DLL)Uno stack utente per ogni threadTutte le variabili statiche dell’applicazione
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 6767 - -
Spazio di indirizzamento Spazio di indirizzamento virtualevirtuale
Accessibile in user mode
Accessibile in user mode
Accessibile in kernel mode
Accessibile in kernel mode
}}
Uno per processo
Uno per tuttoil sistema
Lo spazio di sistema contiene:
Executive, kernel e HALCelle di memoria allocate staticamente per il sistemaTabella delle pagineGli heap dell’executiveDevice drivers in Kernel-modeCache del file systemUno stack in kernel-mode per ogni thread
00000000
7FFFFFFF
80000000
FFFFFFFF
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 6868 - -
64-bit Win2K 32-bit Win2K
Memoria virtuale 16 TB 4 GBCache di sistema 1 TB 1 GBDimensione del 512 TB 16 TBPaging filePaged pool 128 GB 470 MBNon-paged pool 128 GB 256 MB
Windows 2000 a 64 bitWindows 2000 a 64 bit
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 6969 - -
Memoria fisicaMemoria fisica
Il formato della tabella delle pagine limita la memoria fisica di Windows NT 4.0 a 4 GB per x86 e 8 GB per AlphaPer i sistemi x86 Xeon con più di 4 GB
Intel fornisce un driver che permette l’utilizzo della RAM oltre i 4 GB come RAM disk
NT non può usare questa parte della memoria per i processi
Windows 2000 supporta un indirizzamento diverso
Massima dimensione supportata da Windows 2000:
Professional, Server: 4 GBAdvanced Server: 8 GBDatacenter Server: 64 GB
Windows NTWindows NT © 2002 - William Fornaciari© 2002 - William Fornaciari- - 7070 - -
Memoria fisicaMemoria fisica
Anche se lo spazio di indirizzamento virtuale è di 4 GB, una memoria fisica maggiore può essere sfruttata
Anche se un processo può indirizzare solo 2 GB, ce ne possono essere tanti in memoriaI nuovi servizi di indirizzamento esteso permettono ai processi Win32 di allocare memoria fisica e mapparne delle “viste” nello spazio di indirizzamento virtuale del processo
Un processo può allocare fino a 64 GB di RAM e mappare le “viste” nel suo spazio di indirizzamento virtuale