Updated README.md, Moved planning to TODO.md

main
Nigel Barink 2021-05-03 02:22:12 +02:00
parent d48ee0d86c
commit 0f1b61deb9
2 changed files with 66 additions and 34 deletions

View File

@ -1,52 +1,44 @@
# Writing an Operating system
## As a learning experience... Inspired by people like.. Linus Torvalds and Andreas Kling
## As a learning experience!
Inspired by people like Linus Torvalds and Andreas Kling
________________________
### Screenshot(s)
Coming soon ...
<img></img>
________________________
### The goal
Writing a hobby operating system to better understand the basic building blocks of any operating system.
________________________
### Operating System Technical specs/details
Currently the operating system is in the planning fase.
I hope to soon have the basic output and booting sequence with multiboot done.
The operating system can print strings to the
screen. The terminal/screen has scrolling so the latest messages are visible on the screen.
________________________
### Planning
[See TODO](TODO.md)
[x] Muliboot to kernel \
[ ] Printing strings and integer numbers (both decimal and hex) on the screen is certainly a must. This is one of most basic ways of debugging, and virtually all of us have gone through a kprint() or kout in version 0.01. \
[ ] Outputting to a serial port will save you a lot of debugging time. You don't have to fear losing information due to scrolling. You will be able to test your OS from a console, filter interesting debug messages, and automatize some tests. \
[ ] Having a working and reliable interrupt/exception handling system that can dump the contents of the registers (and perhaps the address of the fault) will be very useful. \
[ ] Plan your memory map (virtual, and physical) : decide where you want the data to be. \
[ ] The heap: allocating memory at runtime (malloc and free) is almost impossible to go without. It should be implemented as soon as possible.
### Other features I am thinking of:
[ ] USTAR Filesystem ( For its simplicity this is very likely the first filesystem the OS is going to support) \
[ ] Memory Management \
[ ] Scheduling (Unknown what the scheduling algorithm will be, as with everything suspect simplicity) \
[ ] RPC - for interprocess communication \
[ ] Sync primitives - Semaphores, Mutexes, spinlocks et al. \
[ ] ACPI support ( Or some other basic way to support shutdown, reboot and possibly hibernation ) \
[ ] ATA support \
[ ] Keyboard support ( must have ) \
[ ] Basic hardware recognition ( CPU codename, memory, ATA harddisk, RAW diskSpace, CPU speed et al. ) \
[ ] Basic Terminal \
[ ] Simplistic draw ( maybe ?!?) \
### Far in the future: \
[ ] Basic Window server/client
#### Support for more filesystems if I like the challenge in writing these ...
[ ] FAT Filesystem
[ ] EXT2 Filesystem
________________________
### Docs
[Intro](docs/Intro.md) \
[Manuals](docs/Manuals.md) \
[Project structure](docs/ProjectStructure.md)
________________________
### Resources:
#### General kernel stuff
[wiki.osdev.org/Main_Page](wiki.osdev.org/Main_Page)
[Modern Operating Systems [book]](https://www.amazon.com/Modern-Operating-Systems-Tanenbaum-Andrew/dp/1292061421/ref=sr_1_1?__mk_nl_NL=%C3%85M%C3%85%C5%BD%C3%95%C3%91&dchild=1&keywords=Modern+Operating+systems&qid=1619967779&sr=8-1)
[whiteheadsoftware.dev](https://whiteheadsoftware.dev/operating-systems-development-for-dummies/)
#### More specific stuff
[VFS explained: science.unitn.it](https://www.science.unitn.it/~fiorella/guidelinux/tlk/node102.html)
[whiteheadsoftware.dev](https://whiteheadsoftware.dev/operating-systems-development-for-dummies/)

40
TODO.md Normal file
View File

@ -0,0 +1,40 @@
# TODO list
## Start planning
<input type="checkbox" checked/> Setup Cross-Compiler \
<input type="checkbox" checked/> Multiboot to kernel \
<input type="checkbox" checked/> Printing string to the screen \
<input type="checkbox" /> Printing values/numbers to the screen (a.k.k itoa) \
<input type="checkbox" /> Extend Multiboot implementation \
<input type="checkbox" /> Output to serial port \
<input type="checkbox" /> Move to protected mode \
<input type="checkbox" /> Enabel CMOS clock \
<input type="checkbox" /> Time measurement (PIC &| PIT) \
<input type="checkbox" /> Detect CPU speed \
<input type="checkbox" /> Interrupt / exception system (API) \
<input type="checkbox" /> Plan your memory map (virtual, and physical) : decide where you want the data to be. \
<input type="checkbox" /> The heap: allocating memory at runtime (malloc and free) is almost impossible to go without. \
<input type="checkbox" /> Enable SIMD Extensions (SSE)
## Other features I am thinking of:
<input type="checkbox" /> PCI support \
<input type="checkbox" /> ATA PIO Mode support \
<input type="checkbox" /> USTAR Filesystem ( For its simplicity this is very likely the first filesystem the OS is going to support) \
<input type="checkbox" /> ACPI support ( Or some other basic way to support shutdown, reboot and possibly hibernation ) \
<input type="checkbox" /> ATAPI support \
<input type="checkbox" /> Keyboard support ( P/S2 Keyboard) \
<input type="checkbox" /> Memory Management (MMU)\
<input type="checkbox" /> Preemptive multi tasking
<input type="checkbox" /> Processes
<input type="checkbox" /> Threads
<input type="checkbox" /> Scheduling (SRV2 Unix OR Priority Based Round Robin) \
<input type="checkbox" /> System V ABI compliance (partially)
<input type="checkbox" /> POSIX compliance (partially)
<input type="checkbox" /> RPC - for interprocess communication \
<input type="checkbox" /> Sync primitives - Semaphores, Mutexes, spinlocks et al. \
<input type="checkbox" /> Basic Terminal \
<input type="checkbox" /> Extend hardware recognition ( CPU codename, memory, ATA harddisk, RAW diskSpace, CPU speed through SMBIOS et al. ) \
<input type="checkbox" /> Basic Window server/client \
## Support for more filesystems if I like the challenge in writing these ...
<input type="checkbox" /> FAT Filesystem \
<input type="checkbox" /> EXT2 Filesystem \