modus
The mark of modus: a heron of square pixels that stands on one leg in water, a blue body, a pale neck, an orange beak and a violet crest and tail, above the name modus in square letters

modus

A new kernel and operating system, written in Odin. The system boots under QEMU to a graphical desktop with a console, a system tool and demo programs.

News

Every news entry - the feed

The start of the machine

  1. firmware 1658.0 ms
  2. boot program load the kernel, the boot image 23.5 ms
  3. boot program page tables, memory map, jump 15.9 ms
  4. kernel page frames, kernel page table 0.5 ms
  5. kernel first processor, timer 10.1 ms
  6. kernel other processors 32.4 ms
  7. kernel root service 2.3 ms

The lines "kernel: boot: ..." of build/test_output.txt, one run of the main machine test under QEMU.

The boot image

The boot image is not built: the tiles are the modules of module_builds that it holds, with no size and no color.

Measured

Kernel entries in one second, with 1, 2 and 4 programs that each take the locks of their own objects

locks: kernel entries in one second, each locker on its own objects: 1 locker 5634346, 2 lockers 10322773, 4 lockers 20668160

Reads of the time in one second from the time page, with no kernel entry

clock: the time page: 674004030 reads in one second, 0 kernel entries for one million reads

Wakes in one second of two threads that wake each other on a busy machine, under the strategy EEVDF

scheduler: EEVDF: two threads that wake each other, a spinner on each processor: 133899 wakes in one second (53373 turns ended on the processor of the waker, 190 by an interrupt, 702 moves); a thread that sleeps 2 ms among 8 spinners: late by 863 us in the middle, 1520 us at worst; 8 spinners of one weight: shares 11.6 % to 13.5 %, work 6205 million in one second; 12 spinners, weights 1 2 4: a spinner of each weight 4.8 %, 7.5 %, 12.6 %; 60675 turns ended by a wake, 2111 moves, one pick 190 ns, one preemption by an interrupt 4908 ns in the kernel

Every measured number, with its log and its conditions

The machine

Pictures of the screen that the machine test takes under QEMU; the captions are those of README.md. A picture opens at full size.

The desktop

The desktop: console, life, monitor and plasma. The title bar of the window in front goes from blue to a darker blue; the others are quiet
The launcher: the key super opens it, the list narrows at each typed key, Enter starts the chosen program
The menu of the programs: the button of the bar opens it

The console

The completion list of the console: "mcnt" matches monitor.count by a fuzzy match, the matched letters lit, each name with what it is and its signature
The console
The commands of the console

The monitor and the developer tool

A call from the host: kerneltool call "monitor.programs()" reaches the program remote through its endpoint, which makes the isolated call and sends the typed result back; the counts, the connections that the root service made, and the last calls
A developer tool: the address space of the console as a band scaled by pages, with each gap folded, the table of its mappings with the pages that have a frame, its modules, its threads with the state of the scheduler; a sample each 250 ms with its cost
The same tool on a program that stopped on a fault: the stack trace as module + offset, near the export before it

Isolation, rights and budgets

An isolated call: a module that faults or loops stops alone
A program with a part of the rights of two handles: the kernel does four operations and refuses five
A budget pays for each page and each thread; the kernel refuses when it cannot pay, and each page returns

The network

The network: a virtio network device in a program, a network service with ARP, IPv4, ICMP echo and UDP, and an endpoint with a grant of one remote; ten cases with their answers, and the measures
TCP in the program: server holds a listen grant on the port 80 and serves one table of connections from one thread; the peer of the test drops, reorders and repeats frames, resets a connection, opens 16 at once, and keeps 32 connections with no progress, which the server ends; the table shows the state, the bytes, the round trip and the congestion window of each connection
A simple HTTP/1.1 server: keep-alive, pipelining, HEAD and each refusal status, the pages of its private store that the console puts with server.put; the connections and the last requests, live

The storage

The storage service: the private store of the console, its limit of blocks, the stores that the person sees, and a grant that the person revokes
A persistent program after a restart of the machine: notes finds its note and its count of 1000 commits in its private store
After a loss of power during the write of a root: the storage service takes the root before it, and notes finds its note and its count

The fonts

The text of the system is a vector font with subpixel bands (Paper Mono by default); the program settings changes it to Spleen 8x16 and back while every window runs
Six candidate fonts beside Spleen 8x16, each from a glyph cache in fixed point, and a word of each enlarged

The newest release

0.86.0, 2026-11-12: 1 changes. 86 steps so far; each step is one tested commit on master.