Skip to content

en: Design

Frog Chen edited this page Aug 30, 2016 · 6 revisions

Source Tree Design

  • / kernel.cpp, Makefile, etc.: the essential part
  • /arch/ Put all modules and drivers here
  • /arch/${ARCH}/ Folder for multiarch, only i686 at present though
  • /arch/${ARCH}/Boot/ Files for booting, e.g. bootstrap
  • /arch/${ARCH}/Basic/ Basic module for the arch, e.g. basic I/O, memory, debugging, multi threading...
  • /arch/${ARCH}/Device/ Kernel space device drivers that are necessary or can't be abstracted by IOMod, and also some abstraction layers (PCI-E, for example)
  • /arch/${ARCH}/.../ Other in kernel modules served as a driver
  • /arch/${ARCH}/IOMod/ The driver server which connect the kernel with userspace driver

Kernel Design

Yet another mindmap

Cryst is a hybird kernel. It has few in-kernel modules served as drivers, and it also has driver server which enables the userspace driver.

Things should be in kernel and kernel space:

  1. Memory management
  2. Process and thread management
  3. Driver server
  4. Partial POSIX support (e.g. IPC and fork)
  5. Kernel idle process
  6. IDT & GDT Management
  7. Hardware abstracted drivers

Things should be in kernel but userspace (or in process)

  1. File system
  2. Binary Loader (e.g. ELF Loader)

Things should not be in kernel but in userspace process:

  1. Graphical drivers
  2. Display servers
  3. Block devices support
  4. ...
Clone this wiki locally