https://github.com/jlecomte/simplix
My hobby operating system, written for fun back in 2007...
https://github.com/jlecomte/simplix
Last synced: 11 months ago
JSON representation
My hobby operating system, written for fun back in 2007...
- Host: GitHub
- URL: https://github.com/jlecomte/simplix
- Owner: jlecomte
- License: gpl-3.0
- Created: 2012-04-05T18:12:35.000Z (about 14 years ago)
- Default Branch: master
- Last Pushed: 2012-05-11T16:21:55.000Z (about 14 years ago)
- Last Synced: 2025-06-06T18:53:15.064Z (about 1 year ago)
- Language: C
- Homepage:
- Size: 174 KB
- Stars: 4
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Simplix
## Introduction
Back in university, I took a few classes dealing with operating system design.
These classes were extremely theoretical and, in some ways, helped me
throughout my curriculum and my career, serving as a solid base I could then
build upon to gain new knowledge. However, after spending a few years working
with high level languages in sandboxed environments, one tends to forget how
things work at lower levels, and that sometimes leads to less than optimal
higher level code.
In 2007, faced with that situation, I decided it was time for me to brush up on
my core CS skills. However, I needed a tangible goal. And then I thought: why
not write an operating system? OK, not a full blown operating system of course,
but the seed of a very basic one (calling Simplix an operating system is a bit
of a stretch since it cannot be used for anything actually useful) One that
other people could look at and actually understand (Even MINIX, which was
designed to be easy to understand by students, is not that easy to grasp
without spending a lot of time hunched over the code)
## High level characteristics
* Target architecture: PC with a single Intel 386 or better CPU
* Monolithic, interruptible, non preemptible kernel
* Hardware interrupt handling using the Intel 8259 PIC
* Software interrupt handling
* Advanced management of physical memory:
* High performance page allocator
* High performance memory allocator (kmalloc/kfree)
* Support for kernel threads and user space processes
* Simple scheduling algorithm
* Support for virtual memory using segmentation
* Support for system calls: exit, fork, waitpid, getpid, getppid, time, stime, sleep and brk.
* Peripherals: keyboard, video screen
* Basic IDE device driver and RAM disk driver
* Basic user space library