Skip to content
Sukant Pal edited this page Dec 27, 2017 · 11 revisions

Silcos Kernel

The silcos kernel aims to build a platform for running highly modular and secure systems. Its design allows extensions and modules to be configured in a highly secure and controlled manner, going to the extent of building a in-kernel JIT-framework (in the future). It was and is designed for being compatible with the linux kernel from the user-space, and therefore, compatible with most linux-based applications. It’s main goal is to provide a robust and stable platform for building a operating system, and also giving a common application-framework for all OS software built on top it, therefore, a OS-independent software environment.

This documentation is for developers who have slight knowledge of system programming and the IA32/64 architectures. For in-depth explanation of these techniques refer to osdev.org because here we focus on what makes the kernel unique.

Composition

The kernel is composed of various modules which unify to provide executive services. The following modules are (built-in) required for a complete in-kernel environment -

Microkernel - This module is the central coordinator for all other pieces of software, and is responsible for low-level hardware configuration, system boot-up, scheduling, memory-allocation, module-loading & binary-file parsing, etc.

ModuleFramework (com.silcos.circuit.mdfrwk.*) - This module provides basic software utilities like data-structures, Object, new & delete, memory heap and many other abstractions for kernel-applications.

ObjectManager (com.silcos.circuit.obmgr.*) - This module provides high-level object abstractions and organizes active-state objects into a hierarchy allowing them to be accessed by name & automatically destroy them, when no user-space handles exist towards them. It also helps user-space services to communicate through objects & their names.

ResourceManager (com.silcos.circuit.rsmgr.*) - This module is responsible for resource-tracking and allocation techniques like demand-paging, PFRA, page-level management, memory-caches, allocators above KPage & Slab, etc. It also manages the lifecycle of processes and gives various forms of IPC.

ExecutionManager (com.silcos.circuit.exemgr.*) - This module is responsible for high-level task management, threading, deferred interrupts, thread-groups, virtual processors, kernel-to-userspace communication, etc.

NOTES

1. The kernel relies on the multiboot specification for getting into its environmental state. For more information, http://download-mirror.savannah.gnu.org/releases/grub/phcoder/multiboot.pdf is link for its documentation.

2. The kernel uses the ELF ABI for loading & linking its modules. Other binary formats are strictly prohibited for specific reasons.

Clone this wiki locally