Repository navigation
Kernel
Modular Driver Model & HAL (Hardware Abstraction Layer): Create a clean, consistent API for interacting with hardware. Instead of having ad-hoc driver code, this will structure how you write drivers, making it easier to add support for new devices and port your OS to different hardware in the future.
Filesystem with Block Device Abstraction: Implement a filesystem (like FAT16) to store and organize files persistently. This is fundamental for loading programs and data. It should be built on top of a generic block device driver, allowing your filesystem to work with any storage device (IDE, SATA, etc.) without modification.
Concurrency and Synchronization Primitives: Since all code runs with full privileges in a multitasking environment, you must implement synchronization tools like spinlocks and mutexes. This will prevent race conditions and data corruption when multiple tasks try to access the same hardware or data structure simultaneously.
Complete Networking Stack: Build upon your existing RTL8139 driver to create a full networking stack. This involves implementing core protocols like IP, TCP, and UDP to enable network communication, file transfers, and potentially even internet access directly from your OS.
Executable Loader: Write the code to load and execute programs from your filesystem. Even in a Ring 0 OS, you need a way to launch separate applications. This involves reading an executable file (in a simple binary or ELF format), placing it in memory, and jumping to its entry point.
Welcome to SimpleOS.