Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 11 additions & 12 deletions docs/architecture/processes.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
# pvKernel 0.0.9 process architecture

**Status:** authoritative 0.0.9 design and current implementation model on
the unmerged implementation branch; 0.0.9 is not released. The stable-
baseline sections describe pvKernel 0.0.8 at
`2e99b6a16e3c3bec7fdde88ae580c1d76cba8e56`. Phase A process identity,
**Status:** authoritative design and current implementation model for
pvKernel 0.0.9, merged on `main` and passed through the formal pre-release
audit with no P0, P1, or P2 blockers. Version 0.0.9 remains unreleased, and
RC1 has not been created. The stable-baseline sections describe pvKernel 0.0.8
at `2e99b6a16e3c3bec7fdde88ae580c1d76cba8e56`. Phase A process identity,
Phase B boot-mapping audit/inactive-root construction, Phase C user-stack/
RSP0 support, Phase D checked static ELF loading, and the Phase E prepared
user-task/process-resource model are implemented on the 0.0.9 branch. Phase F
user-task/process-resource model are implemented in 0.0.9. Phase F
has an audited CR3 activation primitive, a Rust scheduler SwitchPlan, and a
QEMU runtime root-switch/RSP0 smoke. Phase G now schedules process-owned CPL3
timer frames and has a deterministic two-process preemption test; legacy
Expand Down Expand Up @@ -732,16 +733,14 @@ manager, GUI/desktop, APIC/x2APIC, SMP, NUMA or multicore scheduling.

## 34. Implementation status and remaining phases

Implementation phases A through L are present on the 0.0.9 branch: bounded
Implementation phases A through L are merged on `main`: bounded
identity/lifecycle, audited inactive roots, stack/RSP0 support, checked ELF,
prepared tasks/publication, CR3 switching, CPL3 PIT preemption, getpid/exit,
checked user-copy, fault containment/Zombie reaping, accounting/QEMU scenarios,
and version/docs updates. The remaining project gates are:

* **M:** separate implementation PR and human review.
* **N:** formal pre-release audit against the exact merged main and artifacts.
* **O:** RC, published-artifact verification, then stable release only after
review. No RC or release is part of this implementation branch.
and version/docs updates. The implementation review and formal pre-release
audit are complete. The remaining project gate is RC creation and published-
artifact verification, followed by stable release only after review. No RC or
release has been created.

The dependency order remains significant: runtime mapping audit precedes CR3
activation, and the non-returning exception handoff precedes claims of user
Expand Down
6 changes: 3 additions & 3 deletions kernel/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ use halt::idle_loop;
/// (`BootInfo::physical_memory_offset`), which `arch::x86_64::memory` needs
/// to access the active page table (see [`arch::x86_64::memory::init`]).
/// The bootloader picks the actual virtual range dynamically at boot time;
/// pvKernel does not otherwise change the bootloader's default virtual
/// memory layout (kernel, stack, framebuffer, and boot-info mappings all
/// keep their default `Mapping::Dynamic` placement).
/// pvKernel retains dynamic bootloader mappings but constrains their virtual
/// placement to the audited upper-half kernel arena so the process lower
/// canonical half remains user-only.
const fn bootloader_config() -> BootloaderConfig {
let mut config = BootloaderConfig::new_default();
config.mappings.physical_memory = Some(Mapping::Dynamic);
Expand Down
Loading