diff options
author | Alex Auvolat <alex.auvolat@ens.fr> | 2015-02-15 22:23:19 +0100 |
---|---|---|
committer | Alex Auvolat <alex.auvolat@ens.fr> | 2015-02-15 22:23:19 +0100 |
commit | be7ec7c825dc02b8872d5f87cc78cb17fde02d8e (patch) | |
tree | a0ccfa4e4b7cb6e5e03975d4a571d6cef48f988a | |
parent | 2296aa7b1d3c8a6ad1187080622d8d71ec401645 (diff) | |
download | kogata-be7ec7c825dc02b8872d5f87cc78cb17fde02d8e.tar.gz kogata-be7ec7c825dc02b8872d5f87cc78cb17fde02d8e.zip |
Complete README
-rw-r--r-- | README.md | 91 |
1 files changed, 90 insertions, 1 deletions
@@ -1,3 +1,92 @@ +# kogata operating system project + kogata operating system : small and <del>beautiful</del>small. -No explanation (sorry, maybe later). +## Project characteristics + +### Written in C + +I have considered using higher-level languages but for lack of understanding of +the associated compiler, I never have had the same impression of understanding +exactly what was happening that I had with C. Also, the necessity of a runtime +is bothering. I do regret not being able to exploit the magic of strongly typed +functionnal languages, but what can I do... + +### Monolithic design + +I would have liked to do a microkernel, but the necessity for asynchronous +communication makes it much more difficult to code, and contradicts the goal of +having simple and straightforward code. + +### Emphasis on code quality and reliability + +The code for the project must make sense, be simple and straightforward, and be +easily understandable in complete detail so that we can track bugs and extend +the system more easily. + +### Goal : small and cool + +I would love to have kogata fit on a 1.44MB floppy and run with a full GUI and +some cool apps (remember the QNX demo floppy!). Also, I want to be able to use +it on older computers and prove that such machines can still be put to use. + +### Plans for the future + +* Module system for extending the kernel +* In userspace, simple Scheme-like scripting language +* The obvious stuff ;-) + +## How to build + +### Requirements + +* git for accessing the repository +* `i586-elf` cross-compiler built by [these scripts](http://adnab.me/cgit/cross-scripts.git/about/). +* nasm +* for testing, either qemu or bochs + +### Building and running + +To build, clone the repo somewhere and simply run: + + $ make + +Launching qemu is also included in the makefile: + + $ make run_qemu + +Warning: dependencies between portions of code are not necessarily well handled +by the makefile system. If you made changes and the OS fails miserably, try +doing a `make rebuild` before blaming your code. + +### Runing the tests + +The directory `src/tests/` contains a few tests for some of the core +components. The running of these tests is automated. To run the test suite, +simply invoke the corresponding make target (everything is rebuilt before +running the tests): + + $ make run_tests + +## Structure of the project + +### Modules + +* The kernel +* Libraries + * `libkogata` : basic system functionnality (memory allocator, mutexes, debugging) + * `libc` : implementation of a (very restricted) subset of the standard C library, basically just + the functions that were needed somewhere + * `libalgo` : usefull data structures (hashtables, AVL trees, maybee more in the future) +* Userspace : not much work done yet + +### Files in the repository + + doc/ documentation (none yet, sorry!) + src/ + src/kernel/ code for the kogata kernel + src/common/ code shared between kernel and userspace libs + src/lib/ code for userspace libraries + src/apps/ userspace binaries + src/tests/ test suite + |