Evolution 0.8.0 reached

microkernel code cleaned: process & user level is now fully moduled, memmap.asm and lostzone.asm belongs to the past
All debug pannels have been moved to modules
Kernel access to files are now going through an upgradable sfs service. Still missing the list call, though... (see initial requirements )
true program maker, handling both unlinked and linked COFF files. Still could be improved to support more memory objects and multithreaded programs, though.
exec() system call available: a user-level program can now load another one, but we're still using the kernel semantic of files. Hope Ognen will quickly be ready with the first brick of the complete file service :)
The system now can destroy address spaces and process. This is available to the user through the Process Manager Pannel.

A view of the future: 

What should be in kernel 0.8.x ?
  • Inter-process communication
  • objects and enumerations support in KDS
  • events communication between threads
  • maybe a automatically generated .api and html documentation by Slang parser.

Versionning Index

Current Clicker kernel version is 0.8.0, which should be read as "Version 0 (microkernel appearing), Evloution 8 (adding IPC), Release 0". As we're at early development stade, there is still no odd/even meaning to the numbers. It might come later...
Though, usually, odd release number is used for heavy coding (internal saves) and even numbers for heavy debugging phase (making code work again, real testings ...)


Developping the core kernel functions (kprint, debug). Basic memory management development. Auto-initialisation system (autoinit.c)
0.2.2 Adding map() SOS system call, first real kernel, irq handling at asm level.
0.2.3 Multi-console display in SOS, BSS segment wiped.
0.2.6 kprint and debug installed. keyboard handling through a key map, adding low-level memory operations (memcpy, ...)
0.2.7 enhanced display (vline/hline ...) first debug screens for low-level memory management (from ASM to C); Avl imported, kalloc/kfree tests.
0.2.8 blocman tests.
0.2.10 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 callbacks.
0.3.1 Adding BTree support, basic kds naming schemes, Virtual Sets Extensions design, cursors for BTrees
0.3.2 Ensuring a "true" 64K limit to kernel file (rather than a 64K virtual image including uninitialised datas :)
0.3.4 Kds Naming System available, working on services (tests under Linux system faking a Clicker).
0.3.6 Adding a KDS info shower, fighting with the 64K barrier
0.3.8 Splitting the distribution in kern, misc & info - got rid of the 64K barrier

Slang support and modules management. Some debugs in memory management.

0.4.1 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
0.4.2 adding kdsLock and kdsUnlock, debug control pannel, blocman being a client of the memmap service.
0.4.3 modmaker & modview tools
0.4.5 Hello from Clicker 0.4.5 module added. Paging activation, debugging aligned allocation. Paging-aware SOS.
0.4.8 module directory framework, modloadall, page fault handlers.
0.4.9 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.
0.5.2 debugging SOS for IBM ThinkPad compatibility, correction of module maker, introducing segmentation management, adding the LOG system and converting some SIGNs into LOGs
0.5.4 Descriptortables support written and tested.
0.5.6 Allocation/Dellocation of zones without causing page faults
0.5.8 Automatically-zeroed page now work. pager system should now be stable
0.5.10 clock service, pages cluster introduced, stack memory objects written, Debug now support fast forward and break.

Multitasking system

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.
0.6.0 First thread creation, thread switching is done manually by calling/jumping to a tss. Also introduce a task debug pannel
0.6.2 introducing the dispatcher, the halt task, making print buffer glocal and multithread-compliant.
0.6.4 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).
0.6.6 some patches in module loader, upgrading clock to 1KHz, deferring task switches when handling an interrupt.
0.6.8 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).
0.6.10 readers/writers sharing, process manager (for truly killing threads)
0.6.12 remote-kill and deferred-kill, module manager, thread shielding
0.6.14 modules for semaphores, reader, writers, scheduler hot-swapping
0.6.16 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.
0.7.2 Page Frame viewer, PgCount service, forcing invalid instruction at offset 0 after core init
0.7.4 Content-viewing in page debugger, address space creation tests, memory classes copies, persistent private objects (PPO).
0.7.6 Experimenting kernel 2 kernel system calls, PROG memory object, binterpreter for PROGrams.
0.7.8 checking user stacks creation, auto-import of a memory class, SOS_crash page fault now tolerated.
0.7.10 Now you can run a user program that do nothing. All sources have been translated to English
0.7.12 Adding & testing resources support, a user program can do system calls: "Hello World" program milestone
0.7.15 code cleanup, new process status pannel, debug pannels reordering
0.7.16 address space deletion, KDS object recognizer, multi-process-aware paging debug pannel
0.7.18 moving Multiprocess management to a module, SFS file service.
0.7.20 process-killing, new memorymap system, use SFS for microkernel files access
0.7.22 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


inter-process communication

still to be written ...
0.8.0 a user-level program can load another user-level program
0.8.2 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)
0.8.4 XLR8 thread-switching extension.
0.8.5 Linux SDK added, support for BOCHS PC emulator due to repeated request from the Mega-Tokyo community :)
0.8.6 kernel-mode events engine. partial add of kds_domain, automatized .api and .sym header files generation from .idl and sources.
0.8.8 I/O source base and very simple disk driver
0.8.10 Starting the re-write of the new memory system
0.8.11 Continuing re-factoring: MrHyde, moclass, paging core
0.8.14 Restored Pager2 and address space (+process) creation
0.8.16 Fully restored Pager2, process construction and destruction

Powered by SourceForge