| Developping the core kernel functions (kprint, debug). Basic memory management development. Auto-initialisation system (autoinit.c)
Adding map() SOS system call, first real kernel, irq handling at asm level.
Multi-console display in SOS, BSS segment wiped.
kprint and debug installed. keyboard handling through a key map, adding low-level memory operations (memcpy, ...)
enhanced display (vline/hline ...) first debug screens for low-level memory management (from ASM to C); Avl imported, kalloc/kfree tests.
auto initialisation system. Next versions are final debuggings.
| System rewritten to NASM (from tasm), splitting boot sequence into SOS and KERNEL. defining the SOS api.
| adapting the pmode tutorial of TRAN to a small os, featuring VM86
for mouse control, exception handling through a text debug pannel
assembly implementation of LOSTZONE, BLOCMAN and PAGER1 as S-DLODS.
looks more like a dos extender than a real kernel, so far.
Kernel Dynamix System
| This version see the rise of KDS: naming, services ...
Though KDS is restricted to single address space and functions
Adding BTree support, basic kds naming schemes, Virtual Sets Extensions design, cursors for BTrees
Ensuring a "true" 64K limit to kernel file (rather than a 64K virtual image including uninitialised datas :)
Kds Naming System available, working on services (tests under Linux system faking a Clicker).
Adding a KDS info shower, fighting with the 64K barrier
Splitting the distribution in kern, misc & info - got rid of the 64K barrier
Slang support and modules management. Some debugs in memory management.
working on Slang compiler, added services exports for the Kernel,
adding the Interner in KDS, kernel adds its internal symbols
(from Slang analysis) at startup
adding kdsLock and kdsUnlock, debug control pannel, blocman being
a client of the memmap service.
modmaker & modview tools
Hello from Clicker 0.4.5 module added. Paging activation,
debugging aligned allocation. Paging-aware SOS.
module directory framework, modloadall, page fault handlers.
Paging debug pannel, modmaker detects unresolved symbols.
Initiating Multitasking system
| This evolution adds extended memory management that is needed to
achieve multitasking like segmentation control, stacks management, etc.
debugging SOS for IBM ThinkPad compatibility, correction of module maker, introducing segmentation management, adding the LOG system and converting some SIGNs into LOGs
Descriptortables support written and tested.
Allocation/Dellocation of zones without causing page faults
Automatically-zeroed page now work. pager system should now be stable
clock service, pages cluster introduced, stack memory objects written, Debug now support fast forward and break.
| This evolution adds the support of multithreading in the microkernel. At a final point, we should be able to define asynchronous servers that run in a separate thread and receive their request from a message queue.
First thread creation, thread switching is done manually by calling/jumping to a tss. Also introduce a task debug pannel
introducing the dispatcher, the halt task, making print buffer glocal and multithread-compliant.
catching stack overflow through stack faults rather than page faults, introducing the crashTask for intercepting very auwful panics (that would have made the CPU reboot otherwise).
some patches in module loader, upgrading clock to 1KHz, deferring task switches when handling an interrupt.
module format version 1.2 (no more bss/init overlayering), creating PAGER-II module, introducing a user heap (that will later turn into private heap).
readers/writers sharing, process manager (for truly killing threads)
remote-kill and deferred-kill, module manager, thread shielding
modules for semaphores, reader, writers, scheduler hot-swapping
cleaning up, module format 1.3, slang update _thread_ and _queue_, asynchronous servers support
user level & multiprocess
| Main target of version 0.7.x is to add user-level
and multiprocess support. At version 0.8.0, it should be possible to
open a user program by giving a file name to a "exec" system call from
another user-program, and to simply define new resource classes (like
a message printer, for instance).
Evolution 7 is also the time to make a LOT of clean up within the
source code. The version 0.8.0 of Clicker microkernel should be
AS CLEAN AS POSSIBLE, using no hacks, being fully-documented and
should be distributed as a .tar.gz (rather than legacy .zip)
separately from the extensions modules (for debug, demos, etc.)
Therefore - and because i'm no more a student - Evolution 7 is
one of the longest in Clicker's history.
Page Frame viewer,
PgCount service, forcing invalid instruction at offset 0 after core init
Content-viewing in page debugger,
address space creation tests, memory classes copies,
persistent private objects (PPO).
kernel 2 kernel system calls, PROG memory object, binterpreter for PROGrams.
checking user stacks creation,
auto-import of a memory class, SOS_crash page fault now tolerated.
Now you can run a user program that do nothing.
All sources have been translated to English
Adding & testing resources support,
a user program can do system calls: "Hello World" program milestone
new process status pannel, debug pannels reordering
address space deletion, KDS object
recognizer, multi-process-aware paging debug pannel
moving Multiprocess management to a module, SFS file service.
process-killing, new memorymap
system, use SFS for microkernel files access
Add access from
kernel space to user space address (safe and copyless),
several cleanups (memory core management ported to C),
even more debugs before final release
| still to be written ...|
a user-level program can load another user-level program
KDS 2.0 modules support,
C++ friendly kernel sources,
common serializer feature in KDS,
KDS Objects extension (including toString()),
modules dependencies tracking (through auto-symbols of KDS2)
XLR8 thread-switching extension.
Linux SDK added, support for BOCHS PC emulator due to repeated
request from the Mega-Tokyo community :)
kernel-mode events engine. partial add of kds_domain, automatized
.api and .sym header files generation from .idl and sources.
I/O source base and very simple disk driver
Starting the re-write of the new memory system
Continuing re-factoring: MrHyde, moclass, paging core
Restored Pager2 and address space (+process) creation
Fully restored Pager2, process construction and destruction