Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Haksell/kfs

Repository files navigation

kfs

subject

kfs3

  • You must implement a complete, stable and functionnal memory system in your kernel.
  • You must enable memory paging in your kernel
  • You must code a memory structure that handle paging and memory rights
  • You must define kernel and user space
  • You must implement a function to create / get memory pages
  • You must implement kmalloc, kfree, ksize, kbrk for physical memory
  • You must implement vmalloc, vfree, vsize, vbrk for virtual memory
  • You must handle "kernel panics" (print, stop the kernel)

kfs4

  • Create an Interrupts Descriptor Table, fill it and register it
  • Hardware Interrupts
  • Software Interrupts
  • A signal-callback system on your Kernel API
  • An interface to schedule signals
  • Global Panic Fault handling
  • An interface to clean registers before a panic / halt
  • An interface to save the stack before a panic
  • When you’re done with all of that, you’ll have to implement a IDT keyboard handling system.
  • It has not been said, but syscalls are also handled by the IDT. You can’t implement them now (No processus / Execution), but a good start could be coding the base functions for it, it could save you some work.
  • Also, you can add some features to the keyboard handler, for example multi layouts (qwerty, azerty), base functions like get_line (just like read: waits for characters and return them when \n is pressed).

todo

  • fix ld warnings
  • bring back enable_paging from old x86_64 code
  • bring back setup_page_tables from old x86_64 code and adapt it to 32-bit
  • bring back blinking cursor
  • second keyboard then repush kfs-4
  • proper comments for gdt
  • count timer interrupts
  • show timer command (.......)
  • debug screen and error screen where we can’t print
  • 511 -> ENTRY_SIZE - 1
  • EntryFlags -> TableEntryFlags
  • command history with vector to test memory
  • cpuinfo command
  • use size_of instead of 64 where applicable
  • fix absolute path in .vscode/settings.json
  • snake
  • optimize vga history with a ring buffer
  • nice help menu with Code page 437 border characters
  • bring back testing and more useful stuff from v2
  • colorful tests (with color module based on colored)
  • full exploration of possible deadlocks
  • print_screen creates a file using serial port
  • use https://doc.rust-lang.org/nightly/core/cell/ instead of lazy_static crate
  • Interrupt handlers should only perform the minimal amount of work necessary
  • warning screen (F11)
  • debug screen (F12)
  • separate user and kernel stacks
  • mouse (scroll history)
  • find project name and rebrand

check before each push

  • update nightly version
  • set timeout=10 (and maybe several entries) for correction
  • check executable does not exceed 10 MB before push (try with release mode)
  • fix compiler warnings

artistic direction

artistic direction

About

Operating System for the i386 Processor

Resources

Stars

Watchers

Forks

Contributors 2

  •  
  •