This is a partially reconstructed backup as the wiki of Prof. Kirsch’s website, on which our project page was hosted, went offline.
During our OS Course (“Spezielle Kapitel aus Betriebssysteme”) we have to implement the basic paradigms of an operating system (Processes, Memory Management, Filesystem,…). We are allowed to use a “startup framework” like GeekOS, PintOS or similar. The requirements for passing this class is that our operating system is able to run a non trivial concurrent application appropriately.
- Stefan Huber (shuber2
gmx . at, 0320662)
- Christian Rathgeb (c . rathgeb
sbg . at, 0320943)
- Stefan Walkner (swalkner
cosy .sbg .ac . at, 0320190)
To fit the whole development time in this term we created a schedule. The milestones in the schedule correspond to the projects in the GeekOS framework. Furthermore this course is an additional chance to learn more about project management.
2006-10-30: Getting Started [OK]
Chosen GeekOS as base framework
Setup development milestones with dates
2006-11-08: ELF Binary Loader [OK]
Getting the ELF format definition.
Implementing a stub function which parses an ELF file.
2006-11-22: Process Management [OK]
Manage segments of user processes (LDT, GDT, …)
Loading executable to user space memory
Setting up user space threads, stack and so on
Implementing basic system calls
Running a little shell as init process and launching further applications from it
2006-11-29: Scheduling [OK]
Implementing RR and MLF Scheduler
Implementing semaphores for synchronization (and the syscalls too)
2006-12-20: Virtual Memory [OK]
Implemented two level paging, creating page directory and tables
Adapting old process creation to paging
Implemented swapping, managing a swap file
Handling page faults, making page-ins and page-outs
2006-12-28: Filesystem [OK]
Create, Open, Read, Write, Stat, Seek, Delete files
Create, Open, Read_Entry, Stat, Seek, Delete directories
Sync file system
2007-01-03: IPC [OK]
Implementing abstract console FS – stdin, stdout are ‘files’ in the sense of POSIX. This enables redirecting output via ‘<’ and ‘>’ in shell.
Implementing IPC via pipes which are implemented as a FS too. This enables the pipe ‘|’ in shell.
2007-01-08: Run Concurrent Application [OK]
Implemented Dining Philosophers
It’s a server-client like architecture. The philosophers communicate with the server (called “phitable”) over pipes…
The technical report is written in LaTeX. All main components are described to get a good overview and enables one to write applications for hrwOS. hrwos-techrep.pdf
This 10 minute presentation is also written in LaTeX. We chose two special components (VM, scheduler) and give a little overview. hrwos-10min.pdf
The current source code (version 1.0) is available here: hrwOS.tar.gz. For a quick launch type: