User:Hhubsinfo/hhuOS
Jump to navigation
Jump to search
hhuOS | |
hhuOS Shell | |
Developed by: | C. Gesse | F. Ruhland |
Kernel: | Monolithic |
Task Model: | Preemptive multitasking |
Platform(s): | x86 |
Language(s): | C++, Assembly |
Website: | hhuOS Wiki |
Github: | hhuOS/hhuOS |
License: | GPLv3 |
hhuOS is a small operating system for the x86-architecture, build for teaching purposes. The main goal of this project is to show, how different aspects of operating systems theory can be implemented and linked together. The system is not aimed to be a fully featured operating system for daily use. It is implemented in C++ with small parts of assembly where needed.
This is a project by the Operating Systems group at the Heinrich Heine University Düsseldorf.
Features
Kernel Features
- Preemptive multithreading
- User space processes, running in isolated address spaces in ring 3
- Load and run binary ELF-files
- On demand Paging
- Virtual file system with support for FAT (based on FatFs), Initrd and virtual subfilesystems similar to /dev, /proc, etc.
- Block based memory manager for managing page frames and list based memory manager for kernel/user heaps
- Multiboot2 compliant
Hardware support
- Runs on BIOS and UEFI systems
- Keyboard and Mouse support
- CGA and Linear frame buffer support, either manual by using VESA BIOS calls or handed over by the bootloader
- Floppy driver
- IDE driver for hard disk drives
- UDP/IP-stack and driver for RTL8139 Ethernet cards
- SoundBlaster driver and an application to play .wav-files (no sophisticated sound subsystem yet)
- APIC support with preparations for multicore support done
- FPU/MMX/SSE with multitasking is supported
- GDB stub implementation via serial port for debugging on real hardware
- Can use BIOS calls on old hardware by switching to real mode and back to protected mode again
User space library
- Collection classes like ArrayList, HashMap, etc.
- Graphic library for working with the frame buffer
- Game Engine for simple 2D/3D games (no hardware acceleration)
- File access
- Datagram sockets for sending/receiving UDP packets