Sistema operacional experimental · x86-64 · v0.6.0
Um kernel em JavaScript que carrega drivers reais do Windows.
O jsOS inicia direto no hardware virtual, sem outro sistema por baixo, e usa o QuickJS como motor do kernel. Os subsistemas do Windows NT, como objetos, I/O, memória, processos, Registro e segurança, são escritos em JavaScript. O progresso é medido com binários originais da Microsoft, como ntdll.dll, kernel32.dll, kbdclass.sys e cng.sys.
Estado em 12/10/2026 O DriverEntry de um driver proprietário de terceiros, de codinome Kyo, retornou sucesso no jsOS. O serviço de usuário que acompanha esse driver ainda não roda por completo.
Experimental operating system · x86-64 · v0.6.0
A JavaScript kernel that loads real Windows drivers.
jsOS boots straight on virtual hardware, with no other operating system underneath, and uses QuickJS as its kernel engine. The Windows NT subsystems, such as objects, I/O, memory, processes, the Registry and security, are written in JavaScript. Progress is measured with original Microsoft binaries such as ntdll.dll, kernel32.dll, kbdclass.sys and cng.sys.
Status on Oct 12, 2026 The DriverEntry of a third-party proprietary driver, codenamed Kyo, returned success on jsOS. The user-mode service that comes with that driver does not fully run yet.
BEAPKGL6[jsOS] kernel 64-bit vivo (BIOS real mode -> long mode) HELLO_KERNEL_OK [boot] fase 0: nanokernel + objetos + registry [clock] TSC = 3200.1 MHz [irq] IDT carregada; LAPIC timer 100Hz + IRQ1 teclado [mm] PFN: 352256 frames (1376 MB), 3 E820 ranges [smp] CPUs na MADT: 4 (BSP apicId=0, APs=3) [smp] CPU 1 online (apicId=1) [smp] CPU 2 online (apicId=2) [smp] CPU 3 online (apicId=3) [boot] fase 1: I/O manager + drivers + servicos [boot] NTFS montado em D: [driver] echo.sys: DriverEntry (WDK real, compilado com MSVC) ... KERNEL_JS_OK [usermode] ntdll.dll real (NTFS) em 0x180000000 (2434 exports, 473 syscalls mapeados) [usermode] entrando em ring 3: usertest.exe entry 0x140001000 pilha 0x7ffffffff8 jsOS ring 3: syscall real OK [usermode] usertest.exe saiu: codigo 0x42 USERMODE_OK
- 789exports no PE do kernelexports in the kernel PE
- ≈152 mil≈152klinhas de JavaScript no kernellines of JavaScript in the kernel
- 4 CPUsonline no QEMU com WHPXonline in QEMU with WHPX
- 0x00000000retorno do DriverEntry do Kyoreturn value of Kyo's DriverEntry
Como funciona
A CPU só executa código de máquina. Por isso o jsOS tem uma camada fina em C e
Assembly para o boot, as interrupções, a troca de privilégio e o motor QuickJS. Acima
dela, o sistema é JavaScript, organizado como a árvore de código do Windows NT:
ob, io, mm, ke, ps,
cm e se. Os termos técnicos estão explicados no
glossário, no fim da página.
-
Binários originais do Windows
ntdll.dll, kernel32.dll e kernelbase.dll em ring 3. cng.sys, ci.dll, kbdclass.sys e i8042prt.sys em ring 0. Vêm da instalação local do Windows e não fazem parte do jsOS.
- PE x64
- ring 0 e 3
-
O sistema em JavaScript
Object Manager, I/O e PnP, memória, processos e threads, Registro, segurança, ALPC, NTFS, loader PE e os exports do ntoskrnl.
- JavaScript
- ≈152 mil linhas
-
Motor e primitivas
O QuickJS roda dentro do kernel. As primitivas
os.*são a única porta do JavaScript para portas de I/O, memória física, MSRs e CPUID.- C
- QuickJS
-
Transições nativas
IRQs e exceções, conversão da ABI Microsoft x64, SYSCALL/SYSRET e o contexto salvo de cada thread.
- C e Assembly
-
Boot
Setor de boot e stage2: modo real, mapa E820, A20, GDT, leitura do disco por ATA, paginação e long mode.
- Assembly
-
Máquina virtual
QEMU com TCG ou WHPX, 4 GiB de RAM, quatro CPUs e um segundo disco com NTFS.
- QEMU
Uma chamada de driver, passo a passo
Um driver
.syschamaIoCreateDevice.-
No carregamento, o loader PE do jsOS ligou esse import à entrada 128 da tabela de trampolins.
O trampolim converte a chamada da ABI Microsoft x64 e entra no motor em C.
O C entrega a chamada a
Ntoskrnl.handle, em JavaScript.-
O handler cria o
DEVICE_OBJECTna memória do convidado, com o layout x64 do WDK, e devolve um NTSTATUS.
Programas de usuário seguem o loader real da ntdll:
LdrInitializeThunk → NtContinue →
RtlUserThreadStart → entrada do programa. As chamadas de sistema voltam
ao kernel por SYSCALL/SYSRET e são atendidas em JavaScript.
[pe] imports de ntoskrnl.exe [pe] DbgPrint -> api #32 [pe] IofCompleteRequest -> api #135 [pe] IoCreateDevice -> api #128 [pe] IoCreateSymbolicLink -> api #129 [pe] RtlInitUnicodeString -> api #348 [pe] entry point = 0x1121000 [driver] echo.sys: DriverEntry (WDK real, compilado com MSVC) [driver] echo.sys: PNP START_DEVICE
How it works
A CPU only runs machine code. That is why jsOS keeps a thin layer of C and Assembly
for booting, interrupts, privilege switches and the QuickJS engine. Above it, the
system is JavaScript, organized like the Windows NT source tree: ob,
io, mm, ke, ps, cm
and se. Technical terms are explained in the
glossary at the end of the page.
-
Original Windows binaries
ntdll.dll, kernel32.dll and kernelbase.dll in ring 3. cng.sys, ci.dll, kbdclass.sys and i8042prt.sys in ring 0. They come from the local Windows installation and are not part of jsOS.
- PE x64
- ring 0 and 3
-
The system in JavaScript
Object Manager, I/O and PnP, memory, processes and threads, the Registry, security, ALPC, NTFS, the PE loader and the ntoskrnl exports.
- JavaScript
- ≈152k lines
-
Engine and primitives
QuickJS runs inside the kernel. The
os.*primitives are JavaScript's only door to I/O ports, physical memory, MSRs and CPUID.- C
- QuickJS
-
Native transitions
IRQs and exceptions, conversion from the Microsoft x64 ABI, SYSCALL/SYSRET and each thread's saved context.
- C and Assembly
-
Boot
Boot sector and stage2: real mode, the E820 memory map, A20, GDT, disk reads over ATA, paging and long mode.
- Assembly
-
Virtual machine
QEMU with TCG or WHPX, 4 GiB of RAM, four CPUs and a second disk with NTFS.
- QEMU
A driver call, step by step
A
.sysdriver callsIoCreateDevice.-
At load time, the jsOS PE loader bound that import to entry 128 of the trampoline table.
The trampoline converts the call from the Microsoft x64 ABI and enters the C engine.
The C code hands the call to
Ntoskrnl.handle, in JavaScript.-
The handler builds the
DEVICE_OBJECTin guest memory, with the WDK x64 layout, and returns an NTSTATUS.
User programs go through the real ntdll loader: LdrInitializeThunk →
NtContinue → RtlUserThreadStart → program entry point.
System calls come back into the kernel through SYSCALL/SYSRET and are handled in
JavaScript.
[pe] imports de ntoskrnl.exe [pe] DbgPrint -> api #32 [pe] IofCompleteRequest -> api #135 [pe] IoCreateDevice -> api #128 [pe] IoCreateSymbolicLink -> api #129 [pe] RtlInitUnicodeString -> api #348 [pe] entry point = 0x1121000 [driver] echo.sys: DriverEntry (WDK real, compilado com MSVC) [driver] echo.sys: PNP START_DEVICE
O que já roda
Cada item tem uma prova: o marcador que o teste espera no log serial ou o resultado registrado na execução. O selo indica se o recurso está comprovado, parcial ou em andamento.
-
Comprovado
Boot próprio e várias CPUs
O setor de boot e o stage2, em Assembly, levam a CPU do modo real ao long mode. O kernel lê a tabela MADT da ACPI, acorda os outros núcleos com INIT-SIPI-SIPI e entrega trabalho nativo a cada um.
[smp] CPUs na MADT: 4 (BSP apicId=0, APs=3) -
Parcial
Subsistemas do NT em JavaScript
Object Manager com handles e referências, I/O Manager com IRPs e PnP, Memory Manager com PFN, PTEs e seções, eventos, timers e DPCs, Registro, tokens e ALPC. A compatibilidade completa ainda está em desenvolvimento.
KERNEL_JS_OK
-
Comprovado
Teclado com drivers da Microsoft
O i8042prt.sys e o kbdclass.sys originais carregam pela pilha PnP e ligam a ISR à IRQ1. O teste injeta uma tecla pelo QEMU, e o MakeCode 0x1E percorre ISR, DPC e callback até a leitura do kbdclass, o mesmo caminho que alimenta o shell.
KBDTEST_OK
-
Comprovado
Programas em ring 3 com DLLs reais
A ntdll.dll original inicia o processo, e as chamadas de sistema chegam ao kernel por SYSCALL/SYSRET. Os testes em C usam heap, arquivos, threads, TLS, SEH, Registro e CryptoAPI pelas DLLs da Microsoft.
WIN32_RUNTIME_OK
-
Parcial
NTFS com leitura e escrita
MFT, runlists, índices B-tree e bitmaps, com gravação até o disco ATA. Os testes conferem os dados depois de fechar e remontar o volume. Ainda faltam journal, ACLs e expansão da MFT.
[boot] NTFS montado em D:
-
Comprovado
Serviços e o comando sc
A base de serviços fica no Registro, e o protocolo SCMR passa por ALPC/LRPC com sechost.dll e rpcrt4.dll reais. No shell, o
sccria, inicia e para drivers e serviços pelo carregador real.SERVICE_NATIVE_DISPATCH_START_STOP_OK
-
Comprovado
Code Integrity original
A ci.dll da Microsoft inicializa suas fases e valida a assinatura do driver Kyo com nível 8. Uma cópia com um único byte alterado é rejeitada.
CiValidateImageHeader = 0 (nível 8) -
Em andamento
Kyo: driver e serviço
Kyo é o codinome de um driver proprietário de terceiros e do serviço de usuário que o acompanha. O driver passa pela CI, e o DriverEntry retorna sucesso depois de 12.532 chamadas de API, 176 s após o início do QEMU. O serviço e a comunicação entre os dois ainda não funcionam.
DriverEntry = 0x00000000
Como ler as provas
Os testes iniciam o jsOS no QEMU e esperam marcadores no log serial (COM1). Estes são os principais.
| Marcador | Significa que |
|---|---|
BEAPKGL6 |
o stage2 avançou do modo real até o long mode |
HELLO_KERNEL_OK |
o host em C está vivo |
KERNEL_JS_OK |
o kernel em JavaScript foi montado e está executando |
USERMODE_OK |
o programa de teste voltou do ring 3 com o código esperado |
WIN32_RUNTIME_OK |
os testes com KERNEL32 e KERNELBASE reais passaram |
SELFTEST_OK |
o autoteste do kernel passou |
KBDTEST_OK |
uma tecla atravessou a pilha nativa de teclado |
What already runs
Each item has proof: the marker the test expects in the serial log, or the result recorded during the run. The badge shows whether the feature is proven, partial or in progress.
-
Proven
Own boot and multiple CPUs
The boot sector and stage2, in Assembly, take the CPU from real mode to long mode. The kernel reads the ACPI MADT table, wakes the other cores with INIT-SIPI-SIPI and hands native work to each of them.
[smp] CPUs na MADT: 4 (BSP apicId=0, APs=3) -
Partial
NT subsystems in JavaScript
Object Manager with handles and references, I/O Manager with IRPs and PnP, Memory Manager with PFN, PTEs and sections, events, timers and DPCs, the Registry, tokens and ALPC. Full compatibility is still in development.
KERNEL_JS_OK
-
Proven
Keyboard with Microsoft drivers
The original i8042prt.sys and kbdclass.sys load through the PnP stack and connect their ISR to IRQ1. The test injects a key through QEMU, and MakeCode 0x1E travels through the ISR, the DPC and the callback up to the kbdclass read, the same path that feeds the shell.
KBDTEST_OK
-
Proven
Ring 3 programs with real DLLs
The original ntdll.dll starts the process, and system calls reach the kernel through SYSCALL/SYSRET. The C tests use the heap, files, threads, TLS, SEH, the Registry and CryptoAPI through Microsoft's DLLs.
WIN32_RUNTIME_OK
-
Partial
NTFS with reads and writes
MFT, runlists, B-tree indexes and bitmaps, with writes all the way to the ATA disk. The tests check the data after closing and remounting the volume. Journal, ACLs and MFT growth are still missing.
[boot] NTFS montado em D:
-
Proven
Services and the sc command
The service database lives in the Registry, and the SCMR protocol runs over ALPC/LRPC with the real sechost.dll and rpcrt4.dll. In the shell,
sccreates, starts and stops drivers and services through the real loader.SERVICE_NATIVE_DISPATCH_START_STOP_OK
-
Proven
Original Code Integrity
Microsoft's ci.dll initializes its phases and validates the Kyo driver's signature at level 8. A copy with a single altered byte is rejected.
CiValidateImageHeader = 0 (level 8) -
In progress
Kyo: driver and service
Kyo is the codename of a third-party proprietary driver and the user-mode service that comes with it. The driver passes CI, and DriverEntry returns success after 12,532 API calls, 176 s after QEMU starts. The service and the communication between the two do not work yet.
DriverEntry = 0x00000000
How to read the proofs
The tests start jsOS in QEMU and wait for markers in the serial log (COM1). These are the main ones.
| Marker | Means that |
|---|---|
BEAPKGL6 |
stage2 went from real mode to long mode |
HELLO_KERNEL_OK |
the C host is alive |
KERNEL_JS_OK |
the JavaScript kernel is assembled and running |
USERMODE_OK |
the test program came back from ring 3 with the expected code |
WIN32_RUNTIME_OK |
the tests with the real KERNEL32 and KERNELBASE passed |
SELFTEST_OK |
the kernel self-test passed |
KBDTEST_OK |
a key went through the native keyboard stack |
Na tela
O console escreve direto na memória de vídeo VGA, em 0xB8000, no modo
texto de 80 colunas por 25 linhas. Depois do boot, o shell do jsOS espera comandos.
Comandos do shell
- help, version
- ajuda e versão do sistema
- ls, cat, write, rm
- arquivos do sistema de arquivos em memória
- run, spawn, ps, kill
- programas em JavaScript e processos
- exec
- executa um .exe do Windows (PE32+)
- loaddriver
- carrega um driver .sys
- sc
- consulta e controla serviços e drivers
- objects
- mostra o namespace do Object Manager
- mem, selftest
- uso de memória e autoteste do kernel
- echo, clear, halt
- texto, limpar a tela e desligar
On screen
The console writes straight into VGA video memory at 0xB8000, in 80×25
text mode. After boot, the jsOS shell waits for commands.
Shell commands
- help, version
- help and system version
- ls, cat, write, rm
- files in the in-memory file system
- run, spawn, ps, kill
- JavaScript programs and processes
- exec
- runs a Windows .exe (PE32+)
- loaddriver
- loads a .sys driver
- sc
- queries and controls services and drivers
- objects
- shows the Object Manager namespace
- mem, selftest
- memory usage and kernel self-test
- echo, clear, halt
- text, clear the screen and shut down
O que ainda falta
O projeto registra o que foi comprovado e o que ainda não foi. Estes são os limites atuais mais importantes.
- Janelas e desenho: USER32, GDI32 e Win32k cobrem só a inicialização testada.
- Um processo de usuário por vez, com CR3 compartilhado.
- Sem XSTATE/AVX e sem crescimento de pilha por guard page.
- NTFS sem journal, ACLs persistentes nem arquivos comprimidos ou esparsos.
- O Registro fica só na RAM, então a configuração se perde ao reiniciar.
- O motor JavaScript roda na CPU principal. As outras executam jobs nativos.
- O código JavaScript ainda não é preemptado pelo timer.
- O serviço de usuário do Kyo e a comunicação dele com o driver.
- Nunca foi validado em hardware físico. O desenvolvimento usa o QEMU.
What is still missing
The project records what has been proven and what has not. These are the most important current limits.
- Windows and drawing: USER32, GDI32 and Win32k cover only the tested initialization.
- One user process at a time, with a shared CR3.
- No XSTATE/AVX and no stack growth through guard pages.
- NTFS without a journal, persistent ACLs, or compressed and sparse files.
- The Registry lives only in RAM, so configuration is lost on reboot.
- The JavaScript engine runs on the main CPU. The other CPUs run native jobs.
- The timer does not preempt JavaScript code yet.
- Kyo's user-mode service and its communication with the driver.
- Never validated on physical hardware. Development uses QEMU.
Linha do tempo
Do primeiro commit ao DriverEntry do Kyo, segundo o histórico de desenvolvimento.
-
Primeiro commit
Boot próprio, QuickJS no kernel, loader PE e os primeiros drivers .sys com IRPs. No mesmo dia vieram Registro, DPCs, threads de kernel, Memory Manager, Power Manager e o início do SMP.
-
Dispatcher, WDM e PCI
Eventos, mutexes e timers com TSC, pilha de dispositivos WDM, barramento PCI em JavaScript e IRQ com preempção sob WHPX. O kbdclass.sys da Microsoft carrega.
-
Teclado de verdade
O i8042prt.sys e o kbdclass.sys entregam o scancode de ponta a ponta até o shell.
-
Pilha de armazenamento
atapi, ataport, disk, classpnp e mountmgr originais entram no boot. Dois dias depois, o atapi ficou em espera, e o disco voltou ao driver ATA em JavaScript.
-
Runtime NT consolidado
Processos em ring 3 com DLLs reais, NTFS com escrita, ALPC e serviços entram no projeto. O kernel passa a ter 729 exports.
-
A CI original inicializa
CiInitialize, CiInitializePolicy e CiInitializePhase2 retornam 0 com a ci.dll da Microsoft.
-
CI no boot normal
A validação de imagens passa a usar a CI real no boot normal, e o diagnóstico do Kyo passa para o backend WHP.
-
Firmware e diagnóstico contínuo
ExGetFirmwareEnvironmentVariable passa a usar o provedor de BIOS real, e o trace do Kyo continua depois do DriverEntry.
-
DriverEntry = 0
O driver Kyo retorna sucesso em 176 s no build principal, depois de 12.532 chamadas de API.
Timeline
From the first commit to Kyo's DriverEntry, according to the development history.
-
First commit
Own boot, QuickJS in the kernel, the PE loader and the first .sys drivers with IRPs. The same day brought the Registry, DPCs, kernel threads, the Memory Manager, the Power Manager and the start of SMP.
-
Dispatcher, WDM and PCI
Events, mutexes and TSC-based timers, the WDM device stack, a PCI bus in JavaScript and IRQ preemption under WHPX. Microsoft's kbdclass.sys loads.
-
A real keyboard
i8042prt.sys and kbdclass.sys deliver the scancode end to end, all the way to the shell.
-
Storage stack
The original atapi, ataport, disk, classpnp and mountmgr join the boot. Two days later, atapi was put on hold and the disk went back to the JavaScript ATA driver.
-
NT runtime consolidated
Ring 3 processes with real DLLs, NTFS writes, ALPC and services join the project. The kernel reaches 729 exports.
-
The original CI initializes
CiInitialize, CiInitializePolicy and CiInitializePhase2 return 0 with Microsoft's ci.dll.
-
CI in the normal boot
Image validation now uses the real CI in the normal boot, and Kyo's diagnostics move to the WHP backend.
-
Firmware and continuous diagnostics
ExGetFirmwareEnvironmentVariable now uses the real BIOS provider, and Kyo's trace continues after DriverEntry.
-
DriverEntry = 0
The Kyo driver returns success in 176 s on the main build, after 12,532 API calls.
Perguntas
É um emulador do Windows?
Não. Quem emula a máquina é o QEMU. O jsOS é o sistema operacional que roda nela: os binários do Windows executam direto na CPU virtual, e o jsOS atende as chamadas que eles fazem ao kernel.
Por que existe C e Assembly num sistema em JavaScript?
A CPU só executa código de máquina. O boot, as entradas de interrupção, a troca de nível de privilégio e o próprio QuickJS são nativos. Os gerenciadores do kernel, os drivers em JavaScript e o loader PE são JavaScript.
Ele roda qualquer programa do Windows?
Ainda não. Os testes cobrem contratos específicos com as DLLs originais. Não há janelas nem desenho, e só um processo de usuário roda por vez.
O código-fonte está disponível?
Não. O jsOS é um projeto pessoal de código fechado. Esta página mostra como ele funciona e o que já foi comprovado.
O que é o Kyo?
É o codinome de um driver proprietário de terceiros e do serviço que o acompanha, usados como o teste de compatibilidade mais exigente do kernel. O nome real não é divulgado, e os arquivos dele não são distribuídos.
O jsOS inclui arquivos do Windows?
Não. DLLs, drivers e tabelas NLS vêm da instalação local do Windows, no computador onde o jsOS é testado, e são copiados para o disco da máquina virtual na hora do build. Nada disso é distribuído.
Dá para rodar jogos?
Não. O jsOS não tem interface gráfica nem DirectX.
Funciona em um PC de verdade?
Ainda não foi validado em hardware físico. O desenvolvimento e os testes usam o QEMU no Windows 10 x64, com TCG ou WHPX.
FAQ
Is it a Windows emulator?
No. QEMU emulates the machine. jsOS is the operating system running on it: Windows binaries execute directly on the virtual CPU, and jsOS answers the calls they make to the kernel.
Why is there C and Assembly in a JavaScript system?
A CPU only runs machine code. The boot, the interrupt entry points, privilege-level switches and QuickJS itself are native. The kernel managers, the JavaScript drivers and the PE loader are JavaScript.
Does it run any Windows program?
Not yet. The tests cover specific contracts with the original DLLs. There are no windows or drawing, and only one user process runs at a time.
Is the source code available?
No. jsOS is a closed-source personal project. This page shows how it works and what has been proven.
What is Kyo?
The codename of a third-party proprietary driver and the service that comes with it, used as the kernel's most demanding compatibility test. The real name is not disclosed, and its files are not distributed.
Does jsOS include Windows files?
No. DLLs, drivers and NLS tables come from the local Windows installation on the test machine and are copied to the virtual machine's disk at build time. None of it is distributed.
Can it run games?
No. jsOS has no graphical interface and no DirectX.
Does it work on a real PC?
It has not been validated on physical hardware. Development and testing use QEMU on Windows 10 x64, with TCG or WHPX.
Glossário
Os termos técnicos que aparecem nesta página, em poucas palavras.
- ACPI e MADT
- Tabelas que o firmware entrega ao sistema para descrever o hardware. A MADT lista os processadores e os controladores de interrupção.
- ALPC
- Advanced Local Procedure Call. O mecanismo do NT para troca de mensagens entre processos, usado por serviços e por RPC.
- CI (Code Integrity)
- O componente do Windows (ci.dll) que confere a assinatura digital de drivers e programas antes de eles rodarem.
- DPC
- Deferred Procedure Call. Trabalho que uma interrupção agenda para rodar logo depois, num nível de prioridade (IRQL) mais baixo, para a interrupção terminar rápido.
- DriverEntry
- A função de entrada de um driver do Windows. O kernel a chama ao carregar o driver, e ela devolve um NTSTATUS.
- IRP
- I/O Request Packet. A estrutura que o I/O Manager envia aos drivers para cada pedido: abrir, ler, escrever ou controlar um dispositivo.
- Log serial (COM1)
- A saída de texto da porta serial da máquina virtual. Os testes leem esse log em busca dos marcadores.
- Long mode
- O modo de 64 bits dos processadores x86-64. O boot passa pelo modo real (16 bits) e pelo modo protegido (32 bits) antes de chegar nele.
- ntdll.dll
- A DLL mais baixa do modo usuário no Windows. Ela carrega os programas e faz as chamadas de sistema.
- NTSTATUS
- O código de resultado de 32 bits do kernel do Windows. 0x00000000 é STATUS_SUCCESS; valores que começam com 0xC indicam erro.
- PE
- Portable Executable. O formato dos arquivos .exe, .dll e .sys do Windows.
- PFN e PTE
- O banco de páginas físicas da memória (PFN) e as entradas da tabela de páginas (PTE), que ligam endereços virtuais a endereços físicos.
- PnP
- Plug and Play. A parte do kernel que descobre dispositivos, escolhe os drivers e entrega recursos como portas e interrupções.
- QEMU, TCG e WHPX
- QEMU é a máquina virtual onde o jsOS roda. No modo TCG, o QEMU emula a CPU por software; com o WHPX, usa a virtualização do processador pelo Windows Hypervisor Platform.
- QuickJS
- Um motor JavaScript pequeno, escrito em C. No jsOS, ele roda dentro do kernel.
- Ring 0 e ring 3
- Níveis de privilégio da CPU. Kernel e drivers rodam em ring 0; programas de usuário rodam em ring 3, sem acesso direto ao hardware.
- SCM
- Service Control Manager. O gerenciador que instala, inicia e para serviços e drivers no Windows.
- SYSCALL/SYSRET
- Instruções do x86-64 que levam um programa de usuário para dentro do kernel e de volta, numa chamada de sistema.
Glossary
The technical terms used on this page, in a few words.
- ACPI and MADT
- Tables the firmware hands to the system to describe the hardware. The MADT lists the processors and interrupt controllers.
- ALPC
- Advanced Local Procedure Call. The NT mechanism for passing messages between processes, used by services and RPC.
- CI (Code Integrity)
- The Windows component (ci.dll) that checks the digital signature of drivers and programs before they run.
- COM1 serial log
- Text output from the virtual machine's serial port. The tests read this log looking for markers.
- DPC
- Deferred Procedure Call. Work an interrupt schedules to run right after it, at a lower priority level (IRQL), so the interrupt can finish quickly.
- DriverEntry
- A Windows driver's entry function. The kernel calls it when loading the driver, and it returns an NTSTATUS.
- IRP
- I/O Request Packet. The structure the I/O Manager sends to drivers for each request: open, read, write or control a device.
- Long mode
- The 64-bit mode of x86-64 processors. The boot goes through real mode (16-bit) and protected mode (32-bit) before reaching it.
- ntdll.dll
- The lowest user-mode DLL on Windows. It loads programs and makes the system calls.
- NTSTATUS
- The 32-bit result code of the Windows kernel. 0x00000000 is STATUS_SUCCESS; values starting with 0xC are errors.
- PE
- Portable Executable. The file format of Windows .exe, .dll and .sys files.
- PFN and PTE
- The database of physical memory pages (PFN) and the page table entries (PTE) that map virtual addresses to physical ones.
- PnP
- Plug and Play. The part of the kernel that discovers devices, picks drivers and hands out resources such as ports and interrupts.
- QEMU, TCG and WHPX
- QEMU is the virtual machine jsOS runs in. In TCG mode, QEMU emulates the CPU in software; with WHPX, it uses the processor's virtualization through the Windows Hypervisor Platform.
- QuickJS
- A small JavaScript engine written in C. In jsOS, it runs inside the kernel.
- Ring 0 and ring 3
- CPU privilege levels. The kernel and drivers run in ring 0; user programs run in ring 3, without direct access to the hardware.
- SCM
- Service Control Manager. The manager that installs, starts and stops services and drivers on Windows.
- SYSCALL/SYSRET
- x86-64 instructions that take a user program into the kernel and back during a system call.