All Projects → a-darwish → Cuteos

a-darwish / Cuteos

A 64-bit SMP-safe kernel for the PC architecture.

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Cuteos

Dgos
Operating System
Stars: ✭ 90 (+76.47%)
Mutual labels:  x86-64, kernel, operating-system, osdev
KnutOS
An x86_64 hobbyist OS written in C and Assembly
Stars: ✭ 16 (-68.63%)
Mutual labels:  kernel, x86-64, osdev, operating-system
Dennix
Dennix is a unix-like hobbyist operating system written from scratch.
Stars: ✭ 53 (+3.92%)
Mutual labels:  x86-64, kernel, operating-system, osdev
Cyjon
A simple, clean code, multi-tasking operating system written in pure assembly language for 64-bit processors from the AMD64 family.
Stars: ✭ 184 (+260.78%)
Mutual labels:  x86-64, kernel, operating-system, osdev
biefircate
Running x86-16 or x86-32 code from x86-64 UEFI; _very experimental_ • mirror of https://gitlab.com/tkchia/biefircate • developer notes at https://gitlab.com/tkchia/biefircate/-/blob/main/doc/NOTES.asciidoc
Stars: ✭ 47 (-7.84%)
Mutual labels:  kernel, x86-64, osdev, operating-system
Wingos
a little 64bit operating system written in c++ with smp support
Stars: ✭ 361 (+607.84%)
Mutual labels:  x86-64, kernel, operating-system, osdev
SynnixOS
Hobbyist Operating System targeting x86_64 systems. Includes userspace, Virtual File System, An InitFS (tarfs), Lua port, easy porting, a decent LibC and LibM, and a shell that supports: piping, file redirection, and more.
Stars: ✭ 40 (-21.57%)
Mutual labels:  kernel, x86-64, osdev, operating-system
Toaruos
A completely-from-scratch hobby operating system: bootloader, kernel, drivers, C library, and userspace including a composited graphical UI, dynamic linker, syntax-highlighting text editor, network stack, etc.
Stars: ✭ 4,687 (+9090.2%)
Mutual labels:  kernel, operating-system, osdev, x86-64
infinity
A secure, modern and intelligent operative system
Stars: ✭ 27 (-47.06%)
Mutual labels:  kernel, osdev, operating-system
utero
The Operating System (for x86_64) written in Crystal as much as possible
Stars: ✭ 55 (+7.84%)
Mutual labels:  x86-64, osdev, operating-system
Libhermit Rs
libhermit-rs: A Rust-based library operating system
Stars: ✭ 558 (+994.12%)
Mutual labels:  kernel, operating-system, osdev
RocketOS
RocketOS is a Unix based OS that uses legacy BIOS and GRUB and is written in C17. It is being developed for educational purposes primarily, but it still is a serious project. It is currently in its infancy.
Stars: ✭ 23 (-54.9%)
Mutual labels:  kernel, osdev, operating-system
poplar
Microkernel and userspace written in Rust exploring modern ideas
Stars: ✭ 217 (+325.49%)
Mutual labels:  kernel, osdev, operating-system
Powernex
An operating system written in D
Stars: ✭ 460 (+801.96%)
Mutual labels:  kernel, operating-system, osdev
cxos
Operating System development experiment in Ada
Stars: ✭ 32 (-37.25%)
Mutual labels:  kernel, osdev, operating-system
MandelbrotOS
A community driven OS by the youth
Stars: ✭ 172 (+237.25%)
Mutual labels:  kernel, osdev, operating-system
georgios
Hobby Operating System
Stars: ✭ 19 (-62.75%)
Mutual labels:  kernel, osdev, operating-system
nightingale
A small operating system where I experiment and learn osdev.
Stars: ✭ 86 (+68.63%)
Mutual labels:  kernel, osdev, operating-system
Gramado
Gramado OS - 32bit operating system
Stars: ✭ 420 (+723.53%)
Mutual labels:  kernel, operating-system, osdev
Os2
x86_64 OS kernel with completely async userspace and single address space [WIP; but basic kernel functionality implemented]
Stars: ✭ 25 (-50.98%)
Mutual labels:  x86-64, kernel, osdev
  • What?

Cute! is a 64-bit SMP-safe POSIX-compatible kernel for the PC architecture.

It's 'cute' in the sense of having the source code as simple and fun to work with as possible, hopefully without sacrificing performance.

Throughout this project, a huge number of questions were (and are) asked to the great people at #osdev. Special thanks to:

- Brendan Trotter (bcos), <[email protected]>, the BCOS project
- Travis Geiselbrecht (geist), http://tkgeisel.com
  • Navigation:

To begin your way throughout the kernel source, I'd recommend checking the freestanding isolated parts first. Begin with the `lib/' folder, which includes optimized C string methods, type-generic linked-lists, spinlocks, a printf() implementation, etc.

Most of the kernel heavily-used idioms are included in 'kernel.h'; it'll be handy to have it open while checking the rest of the source.

This kernel source is tracked by 'git' from day 0: if you'd like to know how to write a bootloader and a kernel from scratch, the git history (with its carefully written commit logs) should be very valuable.

By now, you can go anywhere. ALWAYS check a module's header file BEFORE checking its code. Due to compilers inefficiencies [1] and C parsing semantics, a lot of details are put in *.h. Comments in the *.c files also assume reading such headers FIRST, unless otherwise stated.

[1] To be fixed by GCC-4.5 `link-time optimization': constant folding, code inlining, and further analysis across separate object modules.

README - this file.

boot/ - early bootstrap code: a 512-Kbyte bootloader, assembly for jumping to C, code to jump to 'real-mode' and return back, the SMP trampoline, etc.

lib/ - library: as stated above, freestanding components like C string methods, linked-lists (for stacks and queues), spinlocks, a printf(), etc

mm/ - memory management: dynamic memory allocation and virtual memory.

dev/ - device drivers: interrupt controllers, timers, keyboard, inter-processor interrupts (local APICs), etc

kern/ - the rest: context switching, thread scheduling, BIOS table parsers, IRQ handling, system-wide panic(), etc.

tools/ - userspace tools: Python-2.6+/3.0+ programs that generate gnuplot scripts out of the kernel scheduling statistics.

  • Influences?

One of the MAJOR goals of this project is examining the current literature of Operating Systems in the process:

- The page allocator is influenced by SVR2 buffer-cache lists,
  with tweaks for zoning and PC's sparse physical memory.

- Dynamic memory allocation uses the McKusick-Karels algorithm
  originally found in 4.3-BSD.

- Overall kernel coding style and APIs are heavily influenced by
  Linux-2.6. I used that style in the past, and I love it.

- The scheduler MLFQ parameters are taken from Solaris, with
  influences from the FreeBSD ULE (2.0) scheduler.
  • Books?

Beside the datasheets, specifications, and research papers saved in our `references' git repository [**], below books proved to be tremendously helpful:

- M. Bach: `The Design of the UNIX Operating System', 1986
  That book is __perfect__ for understanding the basics.

- M.K. McKusick and G.V. Neville-Neil: `The Design and
  Implementation of the FreeBSD Operating System', 2004

- J. Mauro and R. McDougall: `Solaris Internals, Core Kernel
  Components', first edition, 2000

- U. Vahalia: `Unix Internals, The New Frontiers', 1996

[**] http://gitorious.org/cute-os/references

		--Ahmed S. Darwish <[email protected]>
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].