|
1. Applicazioni user mode
Normalmente le applicazioni che eseguite abitualmente sono a 32
bit; quelle a 16 bit sono un lontano ricordo, sebbene tuttora supportate.
Ogni applicazione a 32 bit viene eseguita in uno spazio di memoria
separato e riceve in dotazione da XP tutta la memoria necessaria,
fino a 4 GB di memoria virtuale (ovvero una parte di memoria fisica
e il resto su disco). La memoria virtuale appare contigua, mentre
quella reale è gestita a blocchi fisici non contigui chiamati
pagine, allocati in base alle necessità; quando la RAM non
basta, lo spazio di memoria di un processo (programma in esecuzione)
viene esteso su disco. Naturalmente se l’applicazione è
pesante e la memoria fisica è scarsa, lo scambio tra disco
e RAM ridurrà notevolmente le prestazioni.
In ogni caso le diverse applicazioni a 32 bit in esecuzione sono
protette una dall’altra, a differenza delle prime versioni
di Windows dove un programma poteva invadere lo spazio di memoria
di un’altro e causare un crash generale.
Le applicazioni a 16 bit vengono eseguite da XP in user mode, ma
in una singola area di memoria. Ogni applicazione a 16 bit costituisce
un thread di un’unica macchina virtuale. L’utility WOWEXEC.EXE
(Windows On Windows manager, in SYSTEM32) ha il compito di eseguire
i programmi a 16 bit, che vengono prima convertiti in 32 bit; il
crash di un programma di solito si propaga a tutti gli altri, a
meno di non richiedere l’esecuzione del programma in uno spazio
di memoria separato.
Quanto alle applicazioni DOS (anch’esse a 16 bit), XP mette
a disposizione la DOS Virtual machine, un ambiente che fa credere
alle applicazioni di utilizzare una macchina DOS tutta per sé;
dato che queste applicazioni possono essere voraci di risorse e
poco soggette a regole, XP le tiene a bada separandole dal resto
del sistema. Al contrario delle applicazioni a 16 bit, quelle a
32 bit possono essere multithreaded (strutturate in percorsi paralleli
di esecuzione simultanea) e godono di un multitasking più
efficiente.
A differenza del vecchio e rudimentale cooperative multitasking,
Windows offre, per le applicazioni a 32 bit, il preemptive multitasking,
che prevede una distribuzione efficiente dell’uso delle risorse
(in particolare i processori) da parte delle applicazioni in esecuzione.
Inoltre le applicazioni a 32 bit usano uno spazio di memoria uniforme
con indirizzamento fino a 4 GB, più efficiente rispetto al
vecchio sistema di segmentazione della memoria.
Il nucleo di Windows XP
Le applicazioni per XP, a seconda che siano a 16 o 32 bit, utilizzano uno o l’altro dei due gruppi di tre file citati sopra, GDI.EXE, KRNL386.EXE e USER.EXE oppure KERNEL32.DLL, GDI32.EXE e USER32.DLL. I programmi comunicano con il kernel attraverso un’interfaccia detta API (Application Programming Interface), un insieme di funzioni tramite le quali il software applicativo chiede i servizi del kernel. KRNL386.EXE e KERNEL32. DLL supportano le funzioni di livello più basso e sono il kernel vero e proprio di XP, che tuttavia non funzionerebbe senza il contributo dei due componenti GDI e USER.
GDI.EXE e GDI32.EXE costituiscono la Graphics Device Interface, l’interfaccia grafica invocata ogni volta che un’applicazione visualizza qualcosa sullo schermo (font, colori, immagini e via dicendo).
USER.EXE e USER32.DLL sono i gestori delle finestre; sono chiamati in causa ogni volta che un’applicazione visualizza finestre, icone, bottoni e così via. I file dell’API a 16 bit sono nella directory SYSTEM, mentre quelli dell’API a 32 bit si trovano in SYSTEM32.
|