Skip to content

markoelez/miniOS

Repository files navigation

Overview

Goal: write a simple operating system in as few lines as possible.

Preview

Features

  • Shell with basic commands
  • Memory Management
    • Physical memory manager (bitmap allocator)
    • Paging with 4KB pages
    • Kernel heap allocator
  • GUI
    • Framebuffer graphics (800x600x32)
    • Window system with dragging, minimize, maximize, close
    • Double-buffered rendering
    • Mouse and keyboard input
    • GNOME-style desktop with top panel and dock
  • File System
    • In-memory VFS with directories and files
  • Process Management
    • Process control blocks (8 max processes, 32 max threads)
    • Round-robin preemptive scheduler (thread-based)
    • Context switching between threads
    • Per-process page tables (shared by threads)
  • User Mode
    • Ring 0/Ring 3 separation
    • 24 syscalls (write, read, exit, fork, exec, wait, pipe, kill, signal, thread_create, thread_join, futex_wait, futex_wake, etc.)
    • TSS for privilege level switching
  • IPC
    • Pipes with blocking read/write
    • Signals (SIGINT, SIGKILL, SIGUSR1, SIGUSR2, SIGTERM, SIGCHLD)
    • Per-process file descriptor tables
  • Threading
    • Kernel threads (up to 32 system-wide)
    • Thread syscalls (thread_create, thread_exit, thread_join, gettid)
    • Thread-local storage (TLS) support
    • Futex-based synchronization primitives
    • Threads share address space, have separate kernel stacks

TODO

  • Networking
    • NIC driver
    • TCP/IP stack
    • Sockets API
  • Storage
    • ATA/IDE disk driver
    • Persistent filesystem (ext2 or FAT)
    • Exec from filesystem paths
  • Virtual Memory
    • Copy-on-write for fork
    • Demand paging
    • Swap space
    • mmap/munmap
    • Shared memory
  • Time
    • RTC driver
    • System time (gettimeofday)
    • sleep/alarm syscalls
  • I/O
    • dup/dup2 syscalls
    • select/poll
    • waitpid for zombie reaping
  • Security
    • Users and groups
    • File permissions
  • Multicore
    • SMP support
    • Per-CPU scheduling
  • Power
    • ACPI
    • Shutdown/reboot

About

Simple operating system

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages