Virtual Machine Manager

La Virtual Machine Manager (VMM) e' il vero sistema operativo dietro Windows 95. Essa erige e sostiene la struttura per maneggiare le virtual machine. Fornisce inoltre molti altri servizi agli altri VxD. Tre importanti servizi sono:

Gestione Della Memoria

La VMM usa la capacita' di paging degli Intel 80386 e dei processori successivi per creare un virtual address a 32-bit per la VM di sistema. Essa divide lo spazio degli indirizzi in quattro aree distinte. La VMM fornisce tre tipi di servizi di memoria ai VxD

Interrupt Handling

Gli interrupt nel protected mode sono rediretti dalla Interrupt Descriptor Table (IDT). La VMM supervisiona la IDT delle VM con l'aiuto dei VxD. Normalmente la VMM gestisce quasi tutte le entry nella IDT. Essa fornisce interrupt handlers di primo livello che salvano sullo stack lo stato del programma interrotto e trasferiscono il controllo agli interrupt handler di secondo livello che possono essere forniti dai vari VxD per l'elaborazione corrente. Quando l'handler di secondo livello finisce il suo lavoro, esso trasferisce il controllo alla funzione di redispatch che ripristinera' lo stato del programma interrotto per riprendere l'esecuzione dal punto dell'interruzione.
Questa descrizione e' la piu' semplificata possibile. L'operazione di redispatching puo' non essere immediata poiche' il timeslice della VM interrotta puo' scadere. I VxD possono installare interrupt handlers tramite i servizi della VMM come Set_PM_Int o Hook_V86_Int_Chain. I generale i VxD non devono mai modificare direttamente le entry della IDT (ma potete anche far cio' se siete sicuri di cio' che state facendo)

Pianificazione Dei Thread

La VMM usa due componenti di pianificazione per implementare il multitasking preemptive tra i thread e le VM. Il compito del primary scheduler e' di scegliere il thread con la maggiore priorita' da eseguire. Questa selezione avviene mentre la VMM sta gestendo un interrupt (come gli interrupt del timer). Il risultato determina a quale thread/VM sara' dato il controllo quando la  VMM ritorna dalla gestione dell'interrupt. Il primary scheduler lavora in base alla regola o-tutto-o-niente. Un thread quindi verra' eseguito oppure no. Solo un thread viene scelto. La VMM e gli altri VxD possono alzare/modificare la priorita' di esecuzione dei thread tramite i servizi della VMM. Per esempio, se avviene un interrupt hardware, la VMM alzera' la priorita' di esecuzione dell'interrupt handler cosi' che esso possa avere la piu' alta possibilita' di completare l'operazione nel minor tempo possibile.
Il secondary scheduler usa i servizi del primary scheduler per allocare tempo di CPU tra i thread che condividono la piu' alta priorita' di esecuzione dando ad ogni thread una time slice (quantum di tempo macchina). Quando un thread viene eseguito, finche' la sua time slice scade, il secondary scheduler aumenta la priorita' di esecuzione del thread successivo cosi' che esso verra' scelto dal primary scheduler per essere eseguito successivamente.

Potete ottenere maggiori dettagli riguardo questi argomenti leggendo Walter Oney's Systems Programming for Windows 95 e la Windows 95 DDK documentation.

Traduzione italiana a cura di: fabio@privacy.nu
Torna alla main page! Torna alla pagina principale