Tree


LICENSEcommits | blame
NOBScommits | blame
READMEcommits | blame
TODOcommits | blame
alpha/
boot.scommits | blame
boot2.scommits | blame
build.sh*commits | blame
c449commits | blame
cleanup.sh*commits | blame
common/
includecommits | blame
kernel/
run.sh*commits | blame
servers/
syscalls/

README

49 is an operating system that takes multiples ideas from
kernels like L4 and operatings systems like Plan9 and
OpenBSD. It is meant to be an operating system with a fixed
size, meaning that it never allocates memory for itself
and its size at boot time remains constant. The size of the
kernel can be changed by a user through configuration to
match its platform.

This has the benefit of making allocation simply for user
space. There is also no virtual page tables CR3 operations
besides the kernel one to map all memory. The memory is 1
to 1 mapped to allow usage of the MPU.

Communication among tasks is done through shared buffers
called seats. When the kernel boots, it takes a set amount
of seats represented by a fixed size array. These seats are
all of PAGE_SIZE and can be either vacant or occupied. When
a task wants to communicate wit another it takes a seat
and waits before exchanging information.

Fragmentation is solved by moving chunks of innactive
threads.

Features:

- Buggy

- Unsafe

- Incomplete

- POSIX unfriendly

- No ELF

- and more