CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dellInformazione Politecnico di Milano © Fabio Salice Windows NT Introduzione Docente: Luigi Pomante Politecnico di Milano
Windows NT© Fabio Salice- 2 - Sommario Introduzione Ambiente di esecuzione dei processi Architettura di Windows NT Modo prilivegiato NT Executive NT Kernel HAL (Hardware Abstraction Layer) Modo utente Environment Subsystems Processi di startup del sistema Cambiamenti in Windows 2000 Monitoraggio del Sistema
Windows NT© Fabio Salice- 3 - Introduzione Sistema operativo Windows NT A Prelazione (preemptive) Rientrante Tutte le parti condivise di libreria non sono auto- modificanti. –Non è consentita la modifica diretta dei dati. Memoria virtuale Multi piattaforma Parzialmente compatibile con DOS e Win3.1 Estensioni di Windows 2000 Plug and play Job object Indirizzamento a 64 bit
Windows NT© Fabio Salice- 4 - Introduzione: Architettura WinNT
Windows NT© Fabio Salice- 5 - Introduzione: Processi e Thread Processo Unistanza di un programma in esecuzione un processo si crea per eseguire un programma quindi, avviare unapplicazione crea un processo. Largomento principale allAPI (Application Program Interface) Win32 CreateProcess è il nome del file da eseguire. Esempio: #include... strcpy(lpcommandLine, c:\\WINNT\\SYSTEM32\\NOTEPAD.EXE temp.txt); CreateProcess (Null, lpCommandLine,...);...
Windows NT© Fabio Salice- 6 - Introduzione: Processi e Thread Thread (processo leggero – lightweight process) Un contesto di esecuzione allinterno di un processo. Un processo definisce uno spazio di indirizzamento allinterno del quale uno o più thread sono eseguiti. Tutti i thread in un processo, Sono eseguiti allinterno di un singolo spazio di indirizzamento; Condividono le stesse risorse. Largomento principale allAPI Win32 CreateThread è il nome di una funzione. Esempio: CreateThread(NULL, 0, myFunc, &Arg,...);
Windows NT© Fabio Salice- 7 - Introduzione: Processi e Thread Allavvio ogni processo è composto da un solo thread: quello corrispondente allesecuzione della funzione main. ll thread può creare altri thread nello stesso processo Il thread può creare altri processi
Windows NT© Fabio Salice- 8 - Introduzione: Modo utente e modo kernel Il passaggio da un modo allaltro, oltre ad influenzare lo stato del processore consente di controllare: laccesso alla memoria Ogni 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 privilegiate Ad esempio, istruzioni di I/O.
Windows NT© Fabio Salice- 9 - ComponentiModo di Accesso ApplicazioniUtente Subsystem processes Utente NT Executive Kernel NT Kernel Kernel Driver Kernel HAL Kernel ComponentiModo di Accesso ApplicazioniUtente Subsystem processes Utente NT Executive Kernel NT Kernel Kernel Driver Kernel HAL Kernel Introduzione: Modo utente e modo kernel
Windows NT© Fabio Salice Architettura: Modo kernel Il codice è eseguito in modo kernel per: 1. Richiesta da parte di un thread attivo in modo utente 2. Interrupt da dispositivi esterni 3. 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 dispatch il codice in modo kernel viene eseguito nel contesto del thread
Windows NT© Fabio Salice Architettura: Modo kernel 2. Interrupt da dispositivi esterni Gli Interrupt (come tutte le eccezioni) sono gestiti in modalità kernel L 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 lesecuzione di una Deferred Procedure Call ( DPC ), anche essa in kernel mode 3. Thread attivi in modo kernel Alcuni thread di sistema sono sempre in modo kernel mode, la maggior parte nel processo System Scheduling e preemption sono analoghi come per ogni altro thread.
Windows NT© Fabio Salice Architettura di NT e Win2000
Windows NT© Fabio Salice Architettura 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 luso di buffer in memoria extra.
Windows NT© Fabio Salice Architettura: Modo kernel
Windows NT© Fabio Salice Architettura: NT Executive Costruito sopra il kernel, implementa tutte le politiche ed i servizi offerti da NT. Gestione dei processi Gestione della memoria Gestione dei file Gestione dei dispositivi È costituito da moduli: Gestore degli oggetti, gestore di processi e thread, gestore della memoria virtuale, gestore della sicurezza, gestore dellI/O, gestore della cache, funzioni di runtime, funzioni di supporto esecutivo, Strumenti per LPC (local procedure call).
Windows NT© Fabio Salice Architettura: NT Executive Gestore degli oggetti Crea, 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
Windows NT© Fabio Salice Architettura: NT Executive Gestore di processi e thread Gestisce tutti gli aspetti che non sono gestiti da altri elementi specializzati (es: le caratteristiche di un file) Crea e termina thread e processi Svolge lattività di supervisore nella allocazione delle risorse Fornisce le primitive di sincronizzazione Controlla i cambi di stato dei thread e processi Gestore della sicurezza Gestisce le politiche di sicurezza sul computer locale Controlla le risorse del sistema operativo
Windows NT© Fabio Salice Architettura: NT Executive Gestore della memoria virtuale implementa 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 cache La politica di sostituzione delle pagine è FIFO modificata La pagina da eliminare viene messa in unaltra FIFO (standby list). Se la pagina e usata ancora, viene spostata dalla standby list di nuovo nel working set. FIFO è la politica peggiore.
Windows NT© Fabio Salice Architettura: NT Executive Gestore dellI/O Realizza un ambiente attraverso cui le applicazioni possono accedere ai dispositivi di I/O. funzioni di I/O device-independent. –Hardware device driver »Gestiscono lI/O dei dispositivi fisici (disco, rete, ecc.) interfacciandosi direttamente con lHAL –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 NT© Fabio Salice Architettura: NT Executive
Windows NT© Fabio Salice Architettura: NT Executive Gestore della cache Migliora le prestazioni di dispositivi di I/O basati su file Mantenendo in memoria di 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 NT© Fabio Salice Architettura: NT Executive
Windows NT© Fabio Salice Architettura: 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 cache Copiare i dati tra applicazione e cache (verso cache in caso di scrittura su file) LI/O effettivo viene eseguito dal meccanismo di gestione della memoria virtuale
Windows NT© Fabio Salice Architettura: 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 NT© Fabio Salice Architettura: NT Executive Funzioni runtime gestione 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 allRPC (Remore Procedure Call) nallambito dei sistemi distribuiti
Windows NT© Fabio Salice Architettura: NT Kernel Rapresenta il microkernel modificato di NT È costituito dalle più importanti e più utilizzate componenti del sistema operativo NT Kernel gestisce: Lo scheduling dei thread La commutazione tra processi La gestione di interruzioni ed eccezioni La sincronizzazione multiprocessore Altre importanti funzioni del kernel sono: Isolare lexecutive dallarchitettura Mascherare le differenze tra diverse architetture X86, Alpha, etc.
Windows NT© Fabio Salice Architettura: NT Kernel Il kernel differisce dallexecutive Non è mai paginato dalla memoria La 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 funzioni Non implementare politiche di gestione tranne per il thread scheduling
Windows NT© Fabio Salice Architettura: HAL 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 dellinterrupt, dei timer di sistema e del modulo di memoria. Differennze tra NT Kernel e HAL NT Kernel Maschera le funzioni specifiche di unarchitettura HAL Maschera le funzioni che possono essere diverse su macchine diverse allinterno della stessa architettura
Windows NT© Fabio Salice Architettura: HAL Windows NT comprende HAL per alcune architetture: PC-compatibili, DEC Alpha, Power PC I produttori di hardware possono fornire altri HAL Routine desempio: HalGetBusData HalAssignSlotResources HalSetBusData HalSetBusDataByOffset HalTranslateBusAddress HalGetInterruptVector HalGetAdapter READ_REGISTER_ULONG WRITE_PORT_UCHAR HalGetBusData HalAssignSlotResources HalSetBusData HalSetBusDataByOffset HalTranslateBusAddress HalGetInterruptVector HalGetAdapter READ_REGISTER_ULONG WRITE_PORT_UCHAR
Windows NT© Fabio Salice Programmi di Windows NT Sono elementi di Windows NT che sono contenuti in eseguibili (.EXE) separati e vengono eseguiti in processi distinti Sono avviati dal sistema Non sono legati allutente Sono di tre tipi: Environment Subsystems Win32 Services Processi di startup del sistema Sono processi attivati in modo utente
Windows NT© Fabio Salice Processi in modo utente I processi attivi in modo utente possono essere classificati nel modo seguente: Processi di servizio Sono 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 sistema Processi di sistema che non sono eseguiti come servizi –Logon process, session manager,... Ambiente dei sotto sistemi Environment subsystems Applicazioni utente
Windows NT© Fabio Salice Processi in modo utente
Windows NT© Fabio Salice Architettura : Environment 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 linterfaccia messa a disposizione dallenvironment subsystem MS-DOS. Il sottosistema fornisce alla applicazione la stessa API (Application Program Interface) che fornisce MS-DOS. Sistemi Supportati Win32, Windows 3.1, MS-DOS Posix 1.x OS/2
Windows NT© Fabio Salice Architettura : Environment 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 NT© Fabio Salice Architettura : Environment Subsystems Ciascun sottosistema fornisce laccesso 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 nellintestazione del file consente di indirizzarlo allopportuno insieme di servizi.
Windows NT© Fabio Salice Architettura : Environment Subsystems Le applicazioni utente non accedono direttamente ai servizi del sistema operativo, ma passano attraverso una o più libreria dinamica di sotto sistema Le DLL di sotto sistema traducono una funzione nel codice nellappropriata chiamata. la DLL Win32 implementa le Win32 API la DLL Posix implementa le Posix API
Windows NT© Fabio Salice Architettura : Environment Subsystems - Win32 Creazione e eliminazione dei processi Creazione e eliminazione dei thread Generazione del nome dei file temporanei Identificatore delle unità dischi Controlli di sicurezza per il file system. Gestione grafica delle applicazioni console (a carattere) Parziale supporto per le applicazioni DOS a 16-bit.
Windows NT© Fabio Salice Architettura : Win32 Services Applicazioni (.EXE) Win32 che sono eseguite indipendentemente dallutente che ha fatto login Sono avviate al boot o al logon Sopravvivono al logoff Sono definite mediante lAPI CreateService (attraverso il Control Panel) Tipicamente non interagiscono con il desktop Ottengono i parametri di avvio dal file di registro Gli errori sono loggati nel Windows NT Event Log
Windows NT© Fabio Salice Architettura : 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) Il Server Manager permette il controllo remoto dei servizi Il servizio non necessita di nessuna codice particolare per essere gestito in modo remoto Esempi di servizi built-in in Windows Schedule service (avvio manuale), Event Log, Remote Access Server, IIS.
Windows NT© Fabio Salice Architettura : Processi di startup del sistema System SMSS CSRSS WINLOGON Idle SERVICES LSASS USERINIT NDDEAGNT EXPLORER
Windows NT© Fabio Salice Architettura : Processi di startup del sistema Sono processi separati caricati o avviati al boot non come servizi o environment subsystems Il loro nome non è nel registry Sono inglobati nel codice sorgente del kernel Idle: processo ID 0 Ospita i thread che sono idle Non è un vero processo o un thread Spesso è indicato come System Process System : 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 )
Windows NT© Fabio Salice Architettura : Processi di startup del sistema 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 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
Windows NT© Fabio Salice Architettura : Processi di startup del sistema 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 ) LSASS.EXE : Local Security Processo di autenticazione USERINIT.EXE : Avviato dopo il login Avvia il desktop ( EXPLORER.EXE ) e termina EXPLORER.EXE : Explorer e i processi figli sono i creatori di tutte le applicazioni
Windows NT© Fabio Salice Cambiamenti in Windows 2000 NTFS Consente la compressione e nuovi servizi di crittografia NT 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 systems WinFrame, Terminal Server Active Directory Plug and Play Very large memory (Alpha) Windows NT 4 ha la capacità di indirizzare fino a 4 GB di memoria virtuale Estensione in Windows 2000 a 28 GB sui sistemi Compaq/Digital Alpha
Windows NT© Fabio Salice Monitoraggio del Sistema Utilizzare perfmon.exe per monitorare il sistema.
Windows NT© Fabio Salice Monitoraggio della Memoria Memory: Pages/sec Numero 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 NT© Fabio Salice Monitoraggio del Processore Processor:%Processor time Identifica la percentuale di tempo in cui il processore è utilizzato per eseguire dei thread non-idle Questo indicatore è utilizzato per analizzare lattività 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 luso della memoria
Windows NT© Fabio Salice Monitoraggio dei Dischi PhysicalDisk: Avg. Disk Queue Lenght numero 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 NT© Fabio Salice Monitoraggio dei Dischi PhysicalDisk: % Disk Time Identifica 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 NT© Fabio Salice Conteggio del tempo in modo kernel 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)