È stata pubblicata la prima versione sperimentale del progetto Neptune OS, che sviluppa un'interfaccia sopra il microkernel seL4 con l'implementazione dei componenti del kernel di Windows NT, mirata a fornire supporto per l'esecuzione di applicazioni Windows. Il codice è distribuito sotto licenza GPLv3.
Il progetto implementa 'NT Executive', uno dei livelli del kernel di Windows NT (NTOSKRNL.EXE), responsabile della fornitura dell'API delle chiamate di sistema NT Native e dell'interfaccia per il funzionamento dei driver. In Neptune OS, il componente NT Executive e tutti i driver vengono eseguiti non a livello di kernel, ma come processi utente in un ambiente basato sul microkernel seL4. L'interazione del componente NT Executive con i driver avviene tramite la IPC standard di seL4. Le chiamate di sistema fornite permettono il funzionamento della libreria NTDLL.DLL con l'implementazione dell'interfaccia di programmazione Win32, utilizzata nelle applicazioni.
La prima versione di Neptune OS include un driver per la tastiera (kbdclass.sys), un driver per la porta PS/2 (i8042prt.sys), un driver per il segnale acustico (beep.sys) e un interprete della riga di comando (ntcmd.exe), trasferiti da ReactOS e che consentono di dimostrare i principi fondamentali dell'organizzazione del lavoro. La dimensione dell'immagine di avvio è di 1,4 MB.
L'obiettivo finale è quello di portare il livello a uno stato sufficiente per la portabilità dell'ambiente utente e dei driver di ReactOS. Gli sviluppatori stanno anche considerando la possibilità di raggiungere la compatibilità binaria con i file eseguibili di Windows e una compatibilità accettabile a livello di sorgente con i driver del kernel di Windows.
Il principale ostacolo al supporto dei driver di Windows è l'uso, nella maggior parte dei driver del kernel di Windows, di un protocollo di comunicazione non standard per interagire con altri driver, optando invece per la trasmissione diretta di puntatori, cosa che non può essere implementata in Neptune OS a causa dell'esecuzione dei driver in processi separati.
Fonte: opennet.ru
