Architettura Windows NT
Da Wikipedia, l'enciclopedia libera.
Windows NT 3.5x, Windows 2000, Windows XP, Windows Server 2003, e Windows Vista sono dei sistemi operativi facenti parte della famiglia Windows NT prodotta da Microsoft. Tutti sono sistemi operativi a Multitasking con prelazione, progettati per lavorare su macchine Intel x86 sia a singolo sia a multiprocessore (SMP).
A partire da Windows XP, Microsoft ha cominciato a sviluppare il supporto nei suoi sistemi operativi, prima il suo sistema operativo era basato su un modello a 32-bit. L'architettura della linea di sistemi operativi NT è altamente modulare e si struttura in due strati principali: user mode e kernel mode. I programmi ed i sottosistemi in user mode sono limitati in termini di risorse di sistema alle quali possono accedere, mentre ciò che gira in kernel mode gode di un accesso alla memoria centrale ed ai device esterni senza restrizioni. Il kernel dei sistemi operativi di questa linea è conosciuto come kernel ibrido - tuttavia non è essenzialmente un kernel monolitico in qualche modo strutturato come un microkernel. L'architettura comprende un kernel ibrido, un Livello di astrazione dell'Hardware (HAL), driver che vivono in kernel mode.
L'user mode nella linea Windows NT è realizzato tramite un sottosistema capace di passare le richieste I/O agli appropriati driver software in kernel mode usando un manager di I/O. L'user mode di Windows 2000 è fatto di due sottosistemi: Il sottosistema d'Ambiente, che puo' eseguire applicazioni scritte per diversi sistemi operativi, ed il sottosistema integrato, che svolge le funzioni specifiche del sistema operativo. Il kernel mode in Windows 2000 ha accesso completo alle risorse hardware di sistema, inoltre ha la funzione di interdire ai servizi in user mode l'accesso ad aree critiche del sistema operativo alle quali non dovrebbero avere accesso.
L'Executive dialoga con tutti i sottosistemi dell'user mode: I/O, gestione degli oggetti, gestione dei processi e della sicurezza. Il kernel si pone tra l'HAL e l'Executive per la sincronizzazione multiprocessore, i thread ed interrupt scheduling e dispatching, trap handling ed exception dispatching. Il kernel ha inoltre la funzione di inizializzare i driver dei dispositivi all'avvio. I driver possono girare in Kernel mode in tre livelli: alto (highest level drivers), medio (intermediate drivers) e basso (low level drivers). Il Modello di driver Windows (Windows Driver Model, WDM) è di livello medio e fu ideato per essere compatibile sia a livello binario che di codice sorgente tra Windows 98 e Windows 2000. I driver di basso livello possono essere o driver supportati in retrocompatibilità che controllano un dispositivo in modo diretto, o un bus hardware Plug and Play.
Indice |
[modifica] Modalità utente
La modalità utente è costituita dal sottosistema che trasmette le richieste I/O i driver appropriati della modalità kernel tramite l'I/O manager (che risiede nella kernel mode). Due sottosistemi costituiscono lo strato di per la modalità utente di Windows 2000: il Sottosistema d'ambient e il Sottosistema integral.
Il sottosistema d'ambiente è progettato per eseguire applicazioni scritte per sistemi operativi diversi. Nessuno dei sottosistemi d'ambiente può accedere direttamente all'hardware, e deve richiedere l'accesso alle risorse attraverso il Manager della memoria virtuale che esegue in kernel mode. Inoltre le applicazioni girano a livello di priorità basso rispetto ai processi in modalità kernel. Attualmente ci sono tre principali sottosistemi d'ambiente: il sottosistema Win32, un sottosistema OS/2 e un sottosistema per POSIX.
Il sottosistema d'ambiente Win32 può eseguire applicazioni Windows a 32-bit. Contiene la console come supportato dalla finestra di testo, lo spegnimento e una gestione di hard-error per tutti gli altri sottosistemi d'ambiente. Supporta anche la Virtual DOS Machine (VDMs), che permette alle applicazioni MS-DOS e Windows 3.x a 16-bit di essere eseguite su Windows. C'è una specifica MS-DOS VDM che gira nel proprio spazio di indirizzamento a che emula un Intel 80486 che esegue MS-DOS 5. I programmi Win16, comunque, girano in una VDM Win16. Ogni programma, di default, gira nello stesso processo, usando lo stesso spazio di indirizzamento, e la VDM Win16 concede ad ogni programma il suo proprio thread da eseguire. Tuttavia, Windows 2000 permette agli utenti di eseguire un programma Win16 in una separata Win16 VDM, che consente al programma di essere soggetto al multitasking poiché Windows 2000 effettuerà il pre-empiting dell'intero processo VDM, che include una sola applicazione in esecuzione. Il sottosistema d'ambiente OS/2 supporta applicazioni character-based a 16-bit OS/2 ed emula OS/2 1.x, ma non il 2.x o applicazioni per OS/2 successivi. Il sottosistema d'ambiente POSIX supporta applicazioni che sono scritte esclusivamente con lo standard POSIX.1 o ad esso collegati ISO/IEC
Il sottosistema integrale fornisce specifiche funzioni del sistema operativo al posto del sottosistema d'ambiente environment subsystem. Consta di un "sottosistema di sicurezza", un "workstation di servizio" e di un "server di servizio". Il sottosistema di sicurezza utilizza i token (di sicurezza), fornisce o nega l'accesso agli account utenti basandosi su permessi per le risorse, gestisce le richieste di logon e avvia l'autenticazione del logon e determina quali risorse di sistema devono essere esaminate da Windows 2000. Si occupa anche dell' Active Directory. La workstation di servizio è un API verso il redirezionamento della rete e fornisce al computer l'accesso alla rete. Il server di servizio è un API che consente al computer di fornire servizi di rete.
[modifica] Kernel mode
Il kernel mode di Windows 2000 ha pieno accesso alle risorse hardware e software del computer ed esegue del codice in un'area protetta della memoria. Controlla gli accessi allo scheduling, la priorità dei thread, la gestione della memoria e l'interazione con l'hardware. Il kernel mode impedisce ai servizi e alle applicazioni in user mode di accedere in aree critiche del sistema operativo alle quali non dovrebbero avere accesso mentre i processi in user mode chiedono al kernel mode di effettuare tali operazioni in sua vece.
Il Kernel mode consta di "executive services", il quale è esso stesso composto da diversi moduli che hanno compiti specifici, "kernel driver", un "kernel" e un "Hardware Abstraction Layer" o HAL.
[modifica] Executive
L' Executive si interfaccia con tutti i sottosistemi in user mode. Si lega con I/O, gestione degli oggetti, della sicurezza e dei processi. Comprende diversi componenti, compresi l' "I/O Manager", il "Security Reference Monitor", l' "Object Manager", l' "IPC Manager", il "Virtual Memory Manager" (VMM), un "PnP Manager" e un "Power Manager" come un "Window Manager", che funziona insieme col Windows "Graphics Device Interface" (GDI). Ognuno di questi componenti esporta un routine di supporto lato-kernel che consente agli altri componenti di comunicare l'uno con l'altro. Tutti insieme, componenti possono essere chiamati "servizi esecutivi". Nessun componente esecutivo ha accesso alle routine interne di un altro componente esecutivo.
L' object manager è un sottosistema esecutivo speciale attraverso il quale devono passare tutti i sottosistemi esecutivi per avere l'accesso a Windows 2000 rendendolo essenzialmente un' infrastruttura di servizio per la gestione delle risorse. L'object manager è utilizzato per ridurre la duplicazione della funzionalità di gestione delle risorse oggetto in altri sottosistemi esecutivi, che potrebbero potenzialmente generare dei bug e rendere più difficile o sviluppo di Windows 2000[1]. Nell'object manager, ogni risorsa è un oggetto, sia che quella risorsa sia una risorsa fisica (come un file system o una periferica) o una risorsa logica (come un file). Ogni oggetto ha una struttura o "object type" che l'object manager deve conoscere. Quando un altro sottosistema esecutivo richiede la creazione di un oggetto, loro mandano quella richiesta all'object manager he crea un oggetto struttura vuoto il quale viene riempito con il sottosistema esecutivo richiedente[2]. Gli Object types definiscono le procedure oggetto e qualsiasi dato sull'oggetto. In questo modo, l'object manager rende il Windows 2000 un sistema operativoobject oriented siccome gli object types possono essere considerati classi che definiscono fli oggetti.
Ogni istanza di un oggetto che viene creata, immagazzina il proprio nome, i parametri passati alla funzioni di creazione dell'oggetto, gli attributi di sicurezza e un puntatore al tipo di oggetto. L'oggetto contiene inoltre una procedura di chiusura oggetto e un conteggio delle referenze che indica all' Object Manager quanti altri oggetti nel sistema fanno riferimento a quel particolare oggetto in modo da determinare se l'oggetto può venir distrutto quando gli viene inviata una richiesta di chiusura.[3]. Ogni oggetto prende posto in uno spazio dei nomi degli oggetti gerarchico.
Ulteriori sottosistemi esecutivi sono i seguenti:
- I/O Manager: permette ai device di comunicare con sottosistemi user-mode. Traduce comandi 'read' e 'write' user-mode in 'read' o 'write' IRPs che passa ai driver di device.
Accetta richieste I/O del file system e le traduce in chiamate di device specifiche, e puo' incorporare driver di basso livello dei device stessi che manipolano direttamente hardware per leggere o scrivere input. Include anche un cache manager per migliorare le performance su disco mettendo in cache richieste di lettura al disco in background.
- Security Reference Monitor (SRM): l' autorità primaria per rinforzare le regole di sicurezza delle regole del sottosistema integrale di sicurezza.[4]. Determina se un oggetto o una risorsa possono essere utilizzate, mediante l' uso delle 'access control lists' (ACLs), le quali sono esse stesse composte di 'access control entries' (ACEs). Le ACEs contengono un 'security identifier' (SID) ed una lista di operazioni che alle quali quelle danno un selezionato gruppo di credenziali - un account utente, un account gruppo, una 'logon session'[5] — un permesso (consenti, nega, or chiedi) ad una data risorsa.[6][7]
- IPC Manager abbreviazione di Interprocess Communication Manager, questo gestisce la comunicazione tra client (il sottosistema dell' ambiente) e server (componenti dell' Executive). Puo' usare due risorse: la Local Procedure Call (LPC) (client e server su d' un unico computer) e la Remote Procedure Call (RPC) (dove client e server sono situati su computer differenti). Microsoft ha avuto significativi problemi di sicurezza con la seconda[8].
- Virtual Memory Manager: gestisce la memoria virtuale, permettendo a Windows 2000 di usare l' hard disk come 'storage device' secondario (sebbene strettamente parlando sia secondario). Controlla ogni aspetto del 'paging' su disco.
- Process Manager: processa la creazione ed il termine di applicazioni e threads
- PnP Manager: processa il Plug and Play e supporta il riconoscimento e l' installazione dell' hardware al boot. Ha anche la responsabilità di interrompere ed avviare a richiesta periferiche - talvolta ciò avviene quando un bus ottiene una nuova periferica e necessità di avere un driver caricato per supportarla. Sia FireWire sia USB sono 'hot-swappable', ovvero supportano l' aggiunta o la rimozione di hardware sistema in esecuzione, e richiedono i servizi del PnP Manager per caricare, interrompere, avviare periferiche. Il PnP Manager s' interfaccia con l' HAL, il resto dell'esecutivo cosi' come coi driver di periferica.
- Power Manager: regola gli eventi di accensione-spegnimento e simili e genera i relativi IRPs. Coordina quelli quando parecchie periferiche inviano una richiesta d' essere spente determinando il modo migliore di farlo.
- Il sistema di display è stato spostato da 'user mode' a 'kernel mode' come un driver di periferica contenuto nel file Win32k.sys. Ci sono due componenti in quest' ultimo - il Window Manager ed il GDI:
- Window Manager: responsabile di disegnare finestre e menu. Controlla il modo in cui l' output è rappresentato a schermo e process gli eventi di input (dalla tastiera o dal mouse ad esempio), poi passa messaggi alle applicazioni che necessitano di ricevere tali input.
- GDI: Graphics Device Interface, è responsabile di compiti come disegnare funzioni matematice, permettere il rendering di font, gestire il cromatismo. Windows 2000 ha introdotto nativo nel GDI l' alpha blending.
[modifica] Kernel e kernel-mode driver
Il kernel si trova tra lo strato HAL e lo strato di esecuzione e si occupa della sincronizzazione multiprocessore, della gestione dei thread e degli interrupt. Il kernel si può interfacciare con con il gestore dei processi..[9] Il kernel è inoltre responsabile dell'inizializzazione dei driver dei dispositivi ed è necessario per il funzionamento del sistema operativo
[modifica] Driver kernel e kernel-mode
Il kernel sta tra l' HAL e l' Executive e fornisce sincronizzazione multiprocessore, organizzazione ed invio di thread ed interrupt, gestione dei trap e delle exception. Il kernel spesso s' interfaccia con il Process Manager.[9] Il kernel è anche responsabile dell' inizializzazione dei driver di periferica al boot necessari ad avere il sistema operativo pienamente funzionante.
Windows 2000 usa la kernel-mode per pilotare direttamente l'hardware. Ogni driver sarà definito da una routine interna (quella a livello kernel) e da una routine di sistema che sarà mostrata al resto del sistema operativo. Tutti i dispositivi sono visti dai processi eseguiti in user-mode come file oggetto nell' I/O manager, però dall'I/O manager stesso i dispositivi sono visti come oggetti dispositivo i quali possono essere altri file, dispositivi o driver oggetto. I driver kernel-mode esistono in tre livelli: livello alto (high level), livello intermedio (intermediate level) e livello basso (low level). The highest level drivers, such as file system drivers for FAT and NTFS, rely on intermediate drivers. Intermediate drivers consist of function drivers — or main driver for a device — that are optionally sandwiched between lower and higher level filter drivers. The function driver then relies on a bus driver — or a driver that services a bus controller, adapter, or bridge — which can have an optional bus filter driver that sits between itself and the function driver. Intermediate drivers rely on the lowest level drivers to function. The Windows Driver Model (WDM) exists in the intermediate layer. The lowest level drivers are either legacy Windows NT device drivers that control a device directly or can be a PnP hardware bus. These lower level drivers directly control hardware and do not rely on any other drivers.
[modifica] Hardware abstraction layer
Hardware Abstraction Layer di Windows 2000 (HAL), è lo strato interposto tra l'hardware vero e proprio ed il resto del sistema operativo. È stato progettato per nascondere le differenze hardware e per fornire una piattaforma unificata per ogni applicazione in esecuzione. L'HAL comprende specifiche hardware per il controllo delle interfaccie di I/O, interrupt controllers e processori multipli
Windows 2000 è stato progettato per il supporto ai 64-bit DEC Alpha. Dopo che Compaq annunciò la fine del supporto per il processore, Microsoft interruppe la versione di test per AXP al pubblico, interrotta con la beta 3. Lo sviluppo continuò per la poco diffusa architettura Intel Itanium IA-64. Attualmente l'HAL supporta unicamente hardware compatibile con l'architettura Intel x86.
[modifica] Note
- ^ Mark Russinovich (October 1997). Inside NT's Object Manager. Introduzione.
- ^ Mark Russinovich (October 1997). Inside NT's Object Manager. "Object Types".
- ^ Mark Russinovich (October 1997). Inside NT's Object Manager. "Objects".
- ^ Microsoft. "Active Directory Data Storage".
- ^ MSDN. Trustee definition.
- ^ Siyan, Kanajit S., 2000.
- ^ MSDN. ACE definition.
- ^ Segue una lita dei bollettini di sicurezza che Microsoft ha presentato in riguardo a vulnerabilità RPC.:
- ^ a b Inside Microsoft Windows 2000 (Third Edition). Microsoft Press. Pages 543-551.
[modifica] Collegamenti esterni
| Storia di Microsoft Windows | |
|---|---|
| Famiglia MS-DOS: 1.0 | 2.0 | 386 | 3.x | 95 | 98 | Me | |
| Famiglia NT: NT 3.x | NT 4.0 | 2000 | XP | XP MCE | XP 64 bit | XP Pro x64 | Server 2003 | FLP | Vista | Home Server | Server 2008 | |
| Famiglia CE: CE 3.0 | CE 4.0 | Mobile | CE 5.0 | CE 6.0 | |
| Versioni future: Windows 7 | Windows Cloud | Windows Server 7 | |
| Sistemi operativi | |
|---|---|
| BSD | FreeBSD · NetBSD · OpenBSD · DragonFly BSD · DesktopBSD · PC-BSD · FreeNAS · m0n0wall · pfSense |
| GNU/Linux (lista) | Arch Linux · Debian · Fedora · Gentoo · Knoppix · Mandriva · Red Hat Linux · Slackware · OpenSUSE · Ubuntu |
| Mac OS | System 5 · 6 · 7 · 8 · 9 · Mac OS X · .0 -.1 · .2 · .3 · .4 · .5 · .6 · Server |
| MS-DOS Microsoft Windows |
1.0 · 2 · 3.x · 95 · 98 · Me · NT · 3.5x · 4.0 · 2000 · XP · 2003 - FLP · Vista · ReactOS |
| WebOS | Attolo · Desktoptwo · Divine · eyeOS · Goowy · LFS Desktop · myGoya · Oos · Purefect · ROBIN · SSOE · Xindesk · YouOS |
| Altri | AmigaOS · AROS · BeOS · Inferno · LynxOS · Haiku OS · OS/2 · QNX · Solaris · Unix · Minix · Möbius · MorphOS · MVS · I5/OS · SkyOS · VMS · Zeta · FreeDOS |

