ChrisOS Research ProjectOperating systems · language systems · graphics · machine emulation
DOCUMENTATION ARCHIVEMAIN BRANCH
ChrisOS/Memória, privilégio e estado arquitetural x86-64

Memória, privilégio e estado arquitetural x86-64

Long mode

O long mode x86-64 fornece registradores gerais de 64 bits e grande espaço virtual mantendo partes importantes da herança da arquitetura. Segmentação é reduzida para endereçamento comum, mas seletores, descriptor tables e metadados de privilégio continuam relevantes para transições e exceções.

ChrisOS liga seu kernel no higher half. O linker script define kstart como entry point e coloca o kernel em endereço virtual canônico alto, sem assumir identidade entre endereço físico e virtual.

Endereços canônicos

Nem todo padrão de 64 bits é um endereço virtual x86-64 válido. Implementações suportam uma largura definida e bits superiores não utilizados precisam formar a extensão canônica do bit significativo implementado. "Inteiro de 64 bits" e "endereço virtual válido" não são conceitos idênticos.

O código de processos do ChrisOS rejeita endereços de usuário acima de sua fronteira configurada; o kernel ocupa a região alta.

Rings e privilégio

A arquitetura define níveis 0 a 3. Sistemas convencionais usam ring 0 para kernel e ring 3 para programas de usuário.

Privilégio faz parte do estado de execução e dos descritores. Um programa ring 3 não pode simplesmente reescrever CR3 ou desabilitar interrupções. A CPU verifica a permissão da operação.

programa de usuário
   │ ring 3
   │ transição controlada
   ▼
entrada no kernel
   │ ring 0
   ├── valida pedido
   ├── acessa estado privilegiado
   └── retorna

Control registers

Registrador Papel
CR0 controles globais de modo e proteção, incluindo paging
CR2 endereço linear que causou page fault
CR3 base física da estrutura superior de tradução e bits de controle definidos pela arquitetura
CR4 recursos arquiteturais adicionais, inclusive ligados a paging

mm_switch no ChrisOS escreve CR3 ao trocar address spaces. Uma única instrução de máquina muda o contexto de tradução usado pelos acessos virtuais seguintes.

Descriptor tables

A GDT fornece descritores e seletores ainda necessários para convenções de código/dados, privilégio e TSS. A IDT associa vetores de exceção e interrupção a descritores de handlers.

Uma entrada da IDT não é apenas um ponteiro de função. Ela codifica offset, selector, gate type e propriedades de presença/privilégio. O processador realiza a transferência conforme esses campos.

Exceções

Exceções são consequências síncronas da execução: invalid opcode, general protection e page fault. Interrupções de dispositivos são assíncronas em relação ao fluxo atual.

O kernel precisa preservar estado suficiente para diagnosticar ou recuperar, determinar a origem e então retomar, encerrar o processo ou falhar de modo controlado.

Estado arquitetural no ChrisCPU

ChrisCPU representa o estado observável por instruções guest: registradores gerais, instruction pointer, flags e estado de controle/segmentos exigido pelo subset implementado.

O valor documental é direto: o kernel ChrisOS mostra como usar x86-64; ChrisCPU mostra como implementar o comportamento visível da mesma arquitetura.

Arquitetura não é microarquitetura

Esses contratos não obrigam um emulador a reproduzir speculative execution, register renaming ou caches comerciais. Tais mecanismos afetam timing e desempenho, mas não o resultado arquitetural básico das instruções suportadas.

Registro do documento ID: x86-64-memory-privilege Reviewed source: da3df29cb397 Class: technical-chapter