System Architecture
VAIOS is organized into a modular architecture that separates core system functionality from hardware-specific implementations. This separation allows the system to remain portable across different microcontroller platforms while maintaining a consistent kernel interface.
At a high level, the system is divided into two primary layers: the kernel layer and the portable layer.
The kernel layer contains the core components responsible for task management, scheduling, inter-task communication, memory management, and system services. This layer is hardware-independent and forms the main logic of the operating system. It includes modules for task scheduling and lifecycle management, synchronization primitives such as semaphores and mutexes, dynamic memory allocation, and higher-level services such as the virtual file system and terminal interface. Additional components provide logging, utility functions, and system call handling, enabling structured interaction between different parts of the system.
The portable layer encapsulates all hardware-dependent functionality. This includes context switching, interrupt configuration, and low-level processor-specific operations. Separate implementations are provided for different architectures, such as Cortex-M4 and AVR, allowing the same kernel to be reused across platforms. The portable layer exposes a well-defined interface to the kernel, ensuring that all hardware interactions are localized and can be adapted without modifying core system logic.
Within this structure, execution flow is coordinated between the two layers. The kernel determines scheduling decisions and system behavior, while the portable layer performs the necessary low-level operations such as saving and restoring task context during a switch. This division ensures that performance-critical operations are implemented close to the hardware, while higher-level logic remains clean and maintainable.
System services are integrated into the kernel as modular components rather than tightly coupled subsystems. For example, memory management, inter-task communication, and file system access are implemented as independent modules that interact through well-defined interfaces. This modularity simplifies development and allows individual components to be extended or replaced without affecting the overall system.
Overall, the architecture of VAIOS emphasizes separation of concerns, portability, and modular design. By isolating hardware-specific functionality and organizing system services into clear modules, the system achieves both flexibility and efficiency across different deployment scenarios.