Git Product home page Git Product logo

palleyos's Introduction

PalleyOS

x86 operating system, 32-bits.

Built from scratch, except for the bootloader which is currently just GRUB.

Contribution Guide

We use GitHub issues to manage what features are coming up next, and to track any bugs we find. If you want to contribute, you can fork the repository, branch and fix an issue, then submit a pull request.

palleyos's People

Contributors

alexgwalley avatar pixlark avatar

Watchers

 avatar  avatar

palleyos's Issues

Device manager

Some way to keep track of devices (hard disk, USB, network, etc).

Enumerate PCI-E to find devices. The device manager will enumerate, figure out what we're using, initialize them, etc.

Open question: How does the device manager expose these devices? Does it hook up a driver that we interface with, or does it expose the interface itself?

Simple synchronous scheduler

Context switch into a new process, changing page tables, etc. (LDT? Do we need one of those?), and context switch back on exit. (We'll probably have to add an exit system call).

Setup system calls

How will we want to do this?
One big interrupt handler which calls the appropriate functions based on parameters to the system call?
We also need to switch to ring 0 from ring 3, so we must save information to be reloaded such as SS:ESP, common registers, etc.

Implement realloc for the kernel heap

The kernel heap currently only has a kheap_alloc function and a kheap_free function.

Implement a kheap_realloc function that's more efficient than calling kheap_alloc followed by kheap_free (if there's enough free space after the node that's already allocated, we can just extend into that).

Move kernel to 0xC0000000

Moving the kernel to a "Higher Half" allows for fewer hiccups when using lower memory, such as with the Virtual8086 mode which allows the usage of BIOS interrupts.
Should be a simple paging setup.

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.