Git Product home page Git Product logo

pastaos's Introduction

What is PastaOS?
================

PastaOS is a simple open-source kernel written from scratch for didactic
purposes.

The main goal of this project is to help people that want to approach to kernel
development to understand the basic concepts of a kernel.

For this reason the code and functionalities are kept simple and minimal, so
that people can easily understand how the kernel works and use it to implement
their own project, as a kernel-dev sandbox.

How do I run it?
================

Build the kernel:
 $ make

Create a bootable ISO (requires grub-mkrescue, xorriso and mtools):
 $ make iso

Start the kernel in VM (requires the above packages + qemu-system-x86_64):
 $ make run

NOTE: press `Alt+2` to enter the qemu monitor and type `quit` to exit.

Design
======

These are the features implemented so far:
 - Intel x86 (32-bit) support

 - Multi-threading (the kernel implements a simple round-robin scheduler,
   preemption model is voluntary: threads need to voluntarily release the CPU
   to schedule the next thread; the kernel provide a simple stack-switch
   mechanism to perform a context switch between kernel threads)

 - Paging is enabled, but there's no memory allocator at the moment (first 4MB
   are identically mapped in the virtual address space and there's not memory
   protection: all the memory is shared among the kernel threads)

 - No user-space support yet, everything runs in kernel space as ring-0
   privileges

 - Simple 80x25 16-colors console driver

 - Interrupt management (PIC 8259), only the periodic clock interrupt is
   enabled for now

 - GRUB integration (kernel can be booted using GRUB)

Memory layout
=============

See linker.ld for information about kernel memory layout.

pastaos's People

Contributors

arighi avatar ymauray avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.