User:Hhubsinfo/hhuOS

From OSDev Wiki
Jump to navigation Jump to search

hhuOS

HhuOS.png
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