Skip to content

Personal graphical operating system

Notifications You must be signed in to change notification settings

PawelReich/GitOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

368 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitOS

My personal graphical operating system project

Graphical shell

Links

You can access the documentation here.

There is a simple v86-based demo available here!

Note that the speed is not real-time.

Goals

Boot

  • Custom bootloader - GitBoot
    • Loading kernel from ATA drive
    • BIOS memory mapping routine
    • Set VBE to 1024x768x32
    • Load kernel.elf from partition
  • GRUB Multiboot support

Kernel

  • Global Descriptor Table
  • Interrupt Descriptor Table and handlers

Drivers

  • Disk driver with streaming support
  • Graphics driver with text mode and VBE support
  • PIC handling routines
  • PS2 keyboard support
  • PS2 mouse support
  • Serial port communication

Formats

  • Support for the ELF executable format

Filesystem

  • File operations and management routines
  • FAT16 filesystem support (w/o writing)
  • Memory-based filesystem
  • Pipe-based filesystem support
  • Path parsing functionality

Memory Management

  • Heap management
  • Paging support
  • Dynamic memory allocation

Task Management

  • Process management functionality
  • Task switching mechanisms
  • Recovering from task crashes
  • Multitasking support
    • Round robin scheduler
  • Process arguments and environment passing

Syscalls

  • Syscall interface
  • File operations support
  • Dynamic memory allocation
  • Executing processes

Userland

  • Developed blank application
  • Graphical shell functionality
    • Drawing background
    • Graphical cursor
    • Compositor
  • C/C++ application support
  • Basic printing to kernel stdio
  • Debugging userland applications