Modalità 8086 virtuale
![Niente fonti!](http://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Question_book-4.svg/45px-Question_book-4.svg.png)
Nei processori 80386 e successivi, la modalità 8086 virtuale (Virtual 8086 mode), chiamata anche modalità reale virtuale (virtual real mode, o VM86), permetteva l'esecuzione di programmi in modalità reale che non sono in grado di funzionare in modalità protetta, sotto il controllo di un sistema operativo in modalità protetta. È una tecnica di virtualizzazione hardware del processore 80386 che permette di emulare uno o più processori virtuali 8086, è una conseguenza dei problemi causati dalla modalità protetta del processore 80286, il quale non era in grado di eseguire correttamente e contemporaneamente applicazioni in modalità reale.
VM86 usa uno schema di segmentazione identico a quello della modalità reale (per ragioni di compatibilità), sfruttando lo stesso indirizzamento a 20 bit, ma soggetto al meccanismo di paginazione di memoria della modalità protetta.
Panoramica
VM86 è una modalità usati dai processi eseguiti in modalità protetta. Di conseguenza, il processore può commutare tra processi VM86 e quelli non VM86, permettendo il multitasking di applicazioni DOS.
Per poter utilizzare VM86, un sistema operativo imposta un monitor in modalità VM86, che è un programma che gestisce l'applicativo in modalità reale ed emula oppure filtra l'accesso alle risorse hardware e software. Il monitor deve essere eseguito al livello di privilegio 0 e in modalità protetta. Solo l'applicativo 8086 viene eseguito nella modalità VM86 e al livello di privilegio 3. Quando l'applicativo in modalità reale tenta di fare operazioni come accedere a certe porte I/O per usare periferiche hardware, oppure accedere a certe aree di memoria, la CPU intercetta queste richieste ed invoca il monitor, il quale esamina quello che l'applicativo sta facendo e può agire da tramite con l'hardware, emulando la funzione che l'applicativo in modo reale vuole usare, oppure termina l'applicativo se sta cercando di fare qualcosa di non consentito.
Utilizzo
Viene usato per eseguire alcuni programmi DOS in FlexOS 386 (dal 1987), Concurrent DOS 386 (dal 1987), Windows/386 2.10 (dal 1987), DESQview 386 (dal 1988), Windows 3.x (dal 1990), Multiuser DOS (dal 1991), Windows for Workgroups 3.1x (dal 1992), OS/2 2.x (dal 1992), 4690 OS (dal 1993), REAL/32 (dal 1995), nella modalità 386 avanzata su Windows 95, 98, 98 SE e ME attraverso macchine DOS virtuali, su SCO UNIX attraverso Merge, e su Linux attraverso DOSEMU.
Indirizzamento di memoria
Il problema più comune riscontrato nell'esecuzione di codice 8086 nella modalità protetta è l'indirizzamento di memoria che è completamente diverso tra la modalità protetta e la modalità reale. Lavorando nel modo VM86 la segmentazione funziona come nel modo reale, ma con l'attivazione del meccanismo di paginazione, ed è trasparente al codice in modo reale.
Interrupt
Quando viene eseguito un interrupt (sia hardware, software ed istruzioni iret), il processore disabilita il codice VM86 e ritorna a funzionare in modalità protetta per gestire l'interrupt.
Voci correlate
- Modalità reale
- Modalità protetta
- Memory management unit
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Computer_n_screen.svg/24px-Computer_n_screen.svg.png)